分享
 
 
 

利用安装程序防止软件非法拷贝

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

利用安装程序防止软件非法拷贝

每个用户都不希望自己开发的软件被别人轻易的拷贝使用,自然而然崐想起了要对软件进行加密。本文主要介绍一种通过安装程序来拷贝软件,崐防止软件非法拷贝的方法。经过实践证明这种方法非常适用于需要把软件崐安装到硬盘上才能使用的情况。

一、工作原理

通过在被加密的软件中设置一个特殊的单元,由一个安装程序将被加崐密的软件装入指定的硬盘(C、D、E等)分区上。在拷贝装入硬盘的过程崐中,把被加密的软件在硬盘中首簇号填写到其指定单元中。同时在被加密崐的软件中嵌入检验程序,当被加密的软件在硬盘上运行时,检验程序首先崐判断被加密的软件在硬盘的首簇号与其本身程序中指定单元的内容是否相崐同。若不同,则认为是该软件是非法拷贝得到的,终止软件的运行。如果崐相等,则认为该软件是通过安装程序正常安装得到的,允许软件继续运行。

本方法使用了一些DOS中断调用对文件进行操作的深层知识,如INT21H中断的11H,1AH,3CH,3DH,3EH,3FH,40H,42H号功能调用和文件控制崐块(FCB)数据格式等。在此作一简单介绍,更为详细的使用方法请参阅崐资料。

1、INT 21H中断功能调用

①INT 21中断11H号功能

作用:在指定盘的当前目录下查找匹配的文件名

调用:AH=11H

DS:DS=文件控制块段:位移

返回:AL=00,成功,找到匹配的文件名

AL=0FFH,失败,未找到匹配的文件名

②INT 21中断1AH号功能

作用:置盘传输区地址

调用:AH=1AH

DS:DX=盘传输区段:位移

返回:无

③INT 21中断3CH号功能

作用:创建文件

调用:AH=3CH

CX=文件属性,00H:标准,01H:只读,02H:隐含,04H:系统

DS:DX=文件说明段:位移

返回:成功

进位标志=清

AX=文件描述字

失败

进位标志=置

AX =错误代码,3:路径未找到,4:无描述字可用,5:拒绝访问

④INT 21中断3DH号功能

作用:打开文件

调用:AH=3DH

AL=存取模式,000:读,001:写,010:读/写

DS:DX=文件说明段:位移

返回:成功

进位标志=清

AX=文件描述字

失败

进位标志=置

AX =错误代码,1:功能号无效,2:文件未找到,3:路径未找到,

4:无描述字可用,5:拒绝访问

⑤INT 21中断3EH号功能

作用:关闭文件

调用:AH=3EH

BX=文件描述字

返回:成功

进位标志=清

失败

进位标志=置

AX =错误代码,6:描述字无效

⑥INT 21H中断3FH号功能

作用:读文件

调用:AH=3FH

BX=文件描述字

CX=所读字节数

DS:DX=段:缓冲区位移

返回:成功

进位标志=清

AX=实际读字节数,0:文件结束

失败

进位标志=置

AX =错误代码,5:拒绝访问,6:无描述字可用

⑦INT 21H中断40H号功能

作用:写文件

调用:AH=40H

BX=文件描述字

CX=写的字节数

DS:DX=缓冲区段:位移

返回:成功

进位标志=清

AX=实际写字节数,0:盘满

失败

进位标志=置

AX =错误代码,5:拒绝访问,6:无描述字可用

⑧INT 21H中断42H号功能

作用:移动文件指针

调用:AH=42H

AL=方式码,0:从文件开始绝对字节位移

1:从当前位置的字节位移

2:从文件尾的字节位移

BX=文件描述字

CX=最有效一半位移(高字)

DX=次有效一半位移(低字)

返回:成功

进位标志=清

DX=最有效一半位移(高字)

AX=次有效一半位移(低字)

失败

进位标志=置

AX =错误代码,1:功能号无效,6:描述字无效

2、文件控制块(FCB)数据格式

驱动器号,“文件名 扩展名”

对于驱动器号来说,1:A驱,2:B驱,3:C分区,4:D分区,等等依崐次类推。

对于文件名和扩展名来说,按8.3格式构造文件,总共11个字符,文崐件名不够8个字符用空格补齐。

例如,DB 4,'MY_RUN COM',21 DUP(?)

定义一个D盘上文件名为MY_RUN.COM的文件控制块

二、实现方法

下面给出两段程序,一个是安装程序,另一个是检验程序。工作过程崐简图如下:

硬盘 内存 软盘

┌──────┐ ┌──────┐

├──────┤ ① ├──────┤

│ 目录区 │←──────────────┤ │

│ 首簇号 ├─┐③ ┌──────┐ │ 安装程序 │

├──────┤ └─→│ 缓冲区 │ ② ├──────┤

│ 数据区 │ │ │←──┤被加密的文件│

│被加密的文件│←───┤被加密的文件│ │(含检验程序)│

│(含检验程序)│ ④ │(含检验程序)│ ├──────┤

├──────┤ ├──────┤ │ │

│ │ │ │ │ │

└──────┘ └──────┘ └──────┘

①通过安装程序将软盘上被加密的软件拷贝到硬盘上,这样可以在硬崐盘的目录区中产生一个目录项,并给该文件确定一个首簇号。

②将软盘上的被加密的文件送入到内存缓冲区中。

③把硬盘上的被加密的文件的首簇号送入到内存缓冲区被加密的文件崐中的指定单元。

④把内存缓冲区中的被加密文件的内容再保存到硬盘上被加密的文件崐中。

三、一个演示实例

;****MY_INST.ASM****

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE

ORG 100H

BEGIN:

MOV DX,OFFSET DIME_2;打开A盘上MY_RUN.COM文件

MOV AL,2

MOV AH,3DH

INT 21H

PUSH AX;保存文件句柄

MOV BX,AX

MOV CX,0FFF0H

MOV DX,OFFSET DIME_0;把A盘上MY_RUN.COM读到内存

MOV AH,3FH

INT 21H

POP BX

PUSH AX;保存文件句柄

MOV AH,3EH;关闭文件

INT 21H

MOV DX,OFFSET DIME_1;在D盘上建立MY_RUN.COM文件

MOV CX,20H

MOV AH,3CH

INT 21H

PUSH AX;保存文件句柄

MOV DX,OFFSET DIME_0

POP BX

POP CX

PUSH BX

MOV AH,40H;将内存中MY_RUN.COM内容写入到D盘MY_RUM.COM

INT 21H

POP BX

MOV AH,3EH

INT 21H;关闭文件

MOV DX,OFFSET DIME_3

MOV AH,1AH;设置磁盘传输地址

INT 21H

MOV DX,OFFSET DIME_4

MOV AH,11H;查找目录项

INT 21H

MOV DX,OFFSET DIME_1

MOV AH,3DH

MOV AL,02H

INT 21H;打开文件

PUSH AX;保存文件句柄

MOV BX,AX

MOV AX,4200H

MOV CX,0

MOV DX,WORD PTR DIME_5;移动文件指针到MY_RUN.COM的指定单元

INT 21H

POP BX

MOV AH,40H

MOV DX,OFFSET DIME_3+1BH;缓冲区第26、27字节为该文件在硬盘的首簇号

MOV CX,2

INT 21H;把MY_RUN.COM文件的首簇号写入到文件中

MOV AH,3EH

INT 21H;关闭文件

MOV AX,4C00H

INT 21H;返回DOS

DIME_0 DB 7000H DUP(?);开辟一个数据区,存放被加密文件

DIME_1 DB "D:MY_RUN.COM",0

DIME_2 DB "A:\MY_RUN.COM",0

DIME_3 DB 40H DUP(?);保留40H字节的内存缓冲区

DIME_4 DB 4,"MY_RUN COM",21 DUP(?);文件控制块数据形式

DIME_5 DW 0064H

CODE ENDS

END BEGIN

;****MY_RUN.ASM****

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE

ORG 100H

BEGIN:

JMP START

DIME_1 DB 40H DUP(0);保留40H字节的缓冲区

DIME_2 DB 4,"MY_RUN COM",21 DUP(0);文件控制块数据格式

DIME_3 DB 0,0

START:

MOV AH,1AH

MOV DX,OFFSET DIME_1;设置数据传输地址

INT 21H

MOV AH,11H

MOV DX,OFFSET DIME_2;查找目录项

INT 21H

MOV DI,OFFSET DIME_3

MOV SI,OFFSET DIME_1+1BH;目录项第26、27字节为该文件首簇号

MOV CX,2

CLD

REPZ CMPSB;比较该文件在D盘中实际首簇号与该文件DIME_3单元的值是否相等

JZ EXIT1 ;相等,转

MOV AH,09H;不相等

MOV DX,OFFSET MSG2;警铃提示

INT 21H

MOV AX,4C00H;终止程序运行,返回DOS

INT 21H

EXIT1:

MOV AH,09H

MOV DX,OFFSET MSG1;显示正确信息,继续运行程序

INT 21H

MOV AX,4C00H

INT 21H

MSG1 DB "Copyright Is Good",0DH,0AH,'$'

MSG2 DB 07,07," Copyright Is Invalid",0DH,0AH,0DH,0AH

DB "COPYRIGHT BY 607 SOFTWARE GROUP 1999",0DH,0AH,'$'

CODE ENDS

END BEGIN

本文的两段程序MY_INST.ASM和MY_RUN.ASM,在TURBO MASM V2.0下编崐译、连接生成COM文件,DOS6.22下调试通过。

四、使用方法

使用时将含有MY_INST.COM和MY_RUN.COM的文件的软盘插入到驱动器A崐中,运行MY_INST.COM文件把软盘上的MY_RUN.COM拷贝到硬盘(如D分区)崐的当前目录下。&127;当在硬盘上运行MY_RUN.&127;COM文件,&127;&127;如果检验程序提示崐“COPYRIGHT IS GOOD”表示该程序是通过软盘上的安装程序MY_INST.COM崐安装到硬盘上的。如果通过COPY命令或其他工具将软盘上的MY_RUN.COM拷崐贝到D盘上运行,&127;则检验程序警铃提示&127;“Copyright &127;Is &127;Invalid”&127;&127;,崐“COPYRIGHT BY 607 SOFTWARE GROUP 1999”,表示该程序是通过非法拷崐贝得到的。

五、结束语

最后,想要说的是,上述介绍的方法只是一个演示的例子,旨在起到崐抛砖引玉的作用。具体应用中用户可以把检验程序MY_RUN.COM嵌入到自己崐想要加密的软件中,安装程序使用MY_INST.&127;COM。为了更好对软件进行保崐护,通常还应考虑以下方面的问题。①为了加强安全性,可以在被加密的崐软件中多处设置“首簇号”来进行检验。②为了防止复制安装程序,可以崐在安装程序本身所具有的功能完成后,把自身销毁。可采用向其中填写杂崐乱无章数据的方法,来破坏安装程序的功能。③可以结合在安装软盘上制崐作密钥技术,当被加密软件或安装程序运行时检查软盘的密钥,这样也可以防止对安装程序的复制。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有