计算机安全技术软件安全技术
软件安全的基本要求
主要目的:一是禁止非法拷贝和使用;二是防止非法
阅读和修改。其技术措施应实现三个基本任务:防拷贝、
防静态分析和防动态跟踪 。
防拷贝
指的是通过采取某种加密措施,使得一般用户利用正
常的拷贝命令,甚至于各种拷贝软件都无法将软件进行完
整的复制,或者是复制到的软件不能正常运行。
防拷贝技术是软件加密的核心技术 ,利用专用技术制
造一种特殊标记,正常的拷贝途径无法复制这种特殊标记,
或者是拷贝到的特殊标记不完整。
特殊标记:软标记,硬标记
计算机安全技术软件安全技术
软件安全的基本要求
拷贝盘母盘
制造的特殊标记
特殊标记的不完全拷贝
图4—1 加密母盘的不完全拷贝示意图
图4—2 防拷贝软件的一般结构
开 始
读磁盘特殊标记
有标记吗?
正常运行
结 束
拒绝运行
N
Y
计算机安全技术软件安全技术
软件安全的基本要求
一个简单的手工作业方法制作硬标记:准备一
根针,在酒精灯上将针尖部分烧红,然后在磁盘上
选择某一位置,将烧红的针尖靠近磁介质表面停留
片刻(注意不要接触磁介质表面);当拿开针尖以
后,磁盘介质的这一部分就有一个小小的痕迹因受
热而发生变化,不能记录信息,被损坏的扇区如果
用INT13H读写数据时,会发生10H(CRC)错。
这样,我们即制作了一个磁盘标记。
在被加密程序中编写一段程序来识别这一标记,
因此必须知道被损坏的扇区所在的磁道和扇区号。
计算机安全技术软件安全技术
补充:BIOS INT 13H 磁盘I/O
AH 功能调用
00H 复位磁盘
01H 取磁盘状态
02H 读扇区
03H 写扇区
04H 检测扇区
……
功能调用02H
入口参数:
AH= 02H
AL:置要读的扇区
数目
DL :进行读操作的
驱动器代码。数码0和1用
于识别软盘,数码80H和
81H识别硬盘。
DH:所读磁盘磁头号。
CH:识别10位磁道柱面号的低8
位数。
CL:低6位放入所读的起始扇区
号。高2位存放磁道柱面号的高2位。
ES:BX:缓冲区地址。
出口参数:
错误则CF=1,错误信息放在AH
中,否则CF=0,AL=0。
AH中错误状态:00H未出错;
01H非法功能调用;03H对写保护的
磁盘执行写操作;10H读磁盘时循环
校验码(CRC)奇偶校验错。
计算机安全技术软件安全技术
软件安全的基本要求
知道被烧坏的扇区为1面 10磁道的第4扇区,因此就可
以在程序中写上下面一段识别母盘的程序片段:
RETRY:MOV AX,0201 ;读一个扇区
MOV BX,OFFSET HCQ1
MOV CX,0A04H ;读10磁道的第4扇区
MOV DX,0100 ;A驱动器的1面
INT 13H
JB OK_PASS ;读扇区出错,转OK_PASS
JMP RETRY ;是非法复制盘,重复读盘
OK-PASS:CMP AH,10H ;CRC错(受热损坏的结果)吗
?
JNZ RETRY ;不是,重复读盘
计算机安全技术软件安全技术
假定被加密程序是显示字符串“How are you!”.
STACK SEGMENT PARA STACK ‘STACK’
DB 128 DUP(0)
STACK ENDS
DATA SEGMENT
MSG1 DB 0DH,0AH,“How are you!$”
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,ES:DATA,DS:DATA
START PROC FAR
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV DX,OFFSET MSG1
MOV AH,9
INT 21H
MOV AH 4CH
INT 21H
START ENDP
CODE ENDS END START
计算机安全技术软件安全技术
上述程序采取防拷贝的措施,是将识别母盘的
程序片段写入到程序中,修改后的程序如下:
START SEGMENT PARA STACK‘STACK’
DB 128DUP(0)
STACK ENDS
DATA SEGMENT
MSG1 DB 0DH,0AH,“How are you!$”
HCQ1 DB 512 DUP(0) ;设置磁盘缓冲区
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,ES:DATA,DS:DATA
START: PROC FAR
MOV AX,DATA
MOV DS,AX
MOV ES,AX
计算机安全技术软件安全技术
; 以下识别母盘
RETRY: MOV AX,0201H
MOV BX,OFFSET HCQ1
MOV CX,0A04H
MOV DX,0100H
INT 13H
JB OK _PASS ;读扇区出错,转OK_PASS
JMP RETRY ;是非法复制盘,重复读盘
OK_PASS: CMP AH,10H
JNZ RETRY ;不是原盘,转RETRY
MOV DX,OFFSET MSG1 ;是原盘,正常运行
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
START: ENDP
CODE ENDS
END START
计算机安全技术软件安全技术
软件安全的基本要求
防静态分析
破译者可以阅读到防拷贝的这一段程序。然后进行修
改,使得被加密的软件在运行时不进行特殊标记的识别而
无条件地正常执行,使得防拷贝的功能失去作用。
例如,对于上述的加密程序,解密者可用DEBUG的
反汇编命令看到如下的程序指令代码(P74):
……
为了解密,可在读盘操作以后,将 1E53:0015处的指
令改为无条件转移指令: JMP 001E
这样,该程序在运行时,不论读没读到磁盘标记,都
会正常地运行。进一步地,还可以将1E53:0007处的指令
改为: JMP 001E
这样,该程序在运行时甚至连读盘都不进行,就可以
正常运行。
计算机安全技术软件安全技术
—U 0 27
1E53:0000 B832lE MOV AX,1E32
1E53:0003 8ED8 MOV DS,AX
1E53:0005 8EC0 MOV ES,AX
1E53:0007 B80102 MOV AX,0201
1E53:000A BB0F00 MOV BX,000F
1E53:000D B9040A MOV CX,0A04
1E53:0010 BA0001 MOV DX,0100
1E53:0013 CD13 INT 13
1E53:0015 7202 JB 0019
1E53:0017 EBEE JMP 0007
1E53:0019 80FC10 CMP AH,10
1E53:001C 75E9 JNZ 0007
1E53:001E BA0000 MOV DX,0000
1E53:0021 B409 MOV AH,09
1E53:0023 CD21 INT 21
1E53:0025 B44C MOV AH,4C
1E53:0027 CD21 INT 21
计算机安全技术软件安全技术
软件安全的基本要求
防止静态阅读和分析主要方法:将识别磁盘特殊标记
的程序放在比较隐蔽的地方,或者是对该段程序进行加密
变换,以密文的形式放在软件中。
但被加密以后的程序不能被执行,要求在被加密的程
序片段之前利用另外一段解码程序,使其变换成明文,然
后再运行该段程序进行磁盘特殊标记的识别。经过这样处
理以后的软件,不运行解码程序,用 DEBUG的“U”命
令反汇编出来的密文对破译者来说是根本看不明白的,因
此阻止了非法用户对软件的静态分析和修改。
例如,将1E53:0007~0028之间的指令代码进行逐字
节求反,那么在运行时,必须使用解码程序进行解密变换。
为此在1E53:0007处增加一段解码程序,而把原CS:0007~
0028H之间的指令代码经逐字节求反加密变换以后,存放
在1E53:00lB开始的内存区域中。
计算机安全技术软件安全技术
软件安全的基本要求
……
1E53:0007 BE1B00 MOV SI,00lB ;SI指向密码首地址
1E53:000A B93D00 MOV CX,003D ;CX指向密码末地址
1E53:000D 2BCE SUB CX,SI ;解密的字节数→CX
1E53:000F FC CLD
1E53:0010 2E CS:
1E53:0011 8A04 MOV AL,[SI] ;取一字节密文
1E5:0013 F6D0 NOT AL ;求反解密
1E53:0015 2E CS:
1E53:0016 8804 MOV[SI],AL ;存明文一字节
1E53:0018 46 INC SI ;改变地址
1E53:0019 E2F5 LOOP 0010 ;循环解密
1E53:001B 47 INC DI
1E53:001C FEFD ???CH
……
计算机安全技术软件安全技术
软件安全的基本要求
如:1E53:001B,001C,001D处内容为:47,FE,FD
逐字节取反后为:B8,01,02
其汇编指令为:MOV AX,0201
防动态跟踪
采取了防静态分析的措施以后,虽然阻止了非法用户
对软件的静态分析和阅读及修改,但是可以利用DEBUG
对被加密的软件进行跟踪,运行解码程序,找到识别磁盘
特殊标记的程序段,然后对其进行修改。所以,进行软件
加密的第三个基本任务是:必须采取一定的措施阻止解密
者的动态跟踪,使得在正常状态下无法用DEBUG程序或
其它调试程序对软件本身进行跟踪执行。
例如,对于上面的程序,我们可以在防拷贝和防静态
分析的基础上再增加防动态跟踪的技术。所用的防动态跟
踪技术是“封锁键盘输入” 。
计算机安全技术软件安全技术
软件安全的基本要求
2A61:0018 E421 IN AL,21 ;读中断控制寄存器
2A61:001A 0C02 OR AL,02 ;封锁键盘输入
2A61:001C E621 OUT 21,AL ;回送中断控制字
2A61:001E 46 INC SI
2A61:001F E2EF LOOP 0010
计算机安全技术软件安全技术
软件安全的基本要求
程序在运行过程中会封锁键盘的输入,即当用户想使
用DEBUG的“T”命令和“G”命令进行跟踪执行时,会
出现机器不接受键盘输入的现象,这是由于程序中
CS:0018~001DH之间的程序对键盘进行了封锁。在没有
跟踪的情况下,程序运行完CS:0010~0020之间的解码程
序以后,将CS:0021~0048之间的程序变换成明文,然
后进行磁盘标记的识别和运行程序主体的工作,最后在返
回之前将键盘开放。 即:
2A61:0043 19DE SBB SI,BX
2A61:0045 4B DEC BX
2A61:0046 B332 MOV BL,32
2A61:0048 DE0A FIMUL WORD PTR[BP十SI]
计算机安全技术软件安全技术
软件防拷贝技术
磁盘上做特殊标记,有硬标记、软标记。
激光孔加密技术
激光方向性好、亮度高等特点,用激光在数据区或扇
区标识符上烧若干个痕迹,使磁盘的某几点失去磁性,在
软盘表面产生永久不可恢复的标志。
由于激光孔很小,不仔细看不容易看见。软盘在激光
处理过的区域读写时,产生CRC校验错误。而加密软盘都
有自己的识别程序,当判断有CRC检验错误时,就认为此
盘是原盘,然后执行被保护的用户程序;若没有CRC校验
错误,则认为此盘是复制品,从而拒绝运行被保护的用户
程序,使拷贝工具无法使用,不能正常工作。
计算机安全技术软件安全技术
软件防拷贝技术
补充:
MOV AH,19H;取磁盘驱动器编号放在AL中
INT 21H ;0:A;1:B;2:C
INT 13H
AH=0;复位磁盘,磁盘校准的磁盘操作
AH=04;检查磁盘扇区;产生错误则CF=1,错误信息
在AH中。
激光孔定位程序和激光孔指纹识别程序如书本80页
PROLOCK采取如下措施阻止解密者的分析和跟踪:
(1)密文处理
(2)反跟踪:防止解密者的跟踪分析,PROLOCK采
用了多种防跟踪措施。
①破坏断点中断和单步中断的向量 ②隐蔽转移
③多循环,多出口 ④设置堆栈
计算机安全技术软件安全技术
软件防拷贝技术
电磁加密技术
借助于专用的电磁机构,在所需加密的磁盘上随机生
成一系列密钥信息,以供被加密程序识别使用的一种加密
技术。它主要采用了一种奇异的编码格式将一些数据写入
磁盘,供磁盘上专门的密钥识别程序鉴定。
掩膜技术
采用半导体工艺中的镀膜方法来制造标志,给磁盘某
一磁道或某一扇区进行镀膜。这种方法用膜来“遮掉”数
据地址,使拷贝工具无法识别。即使原样拷贝出复制品,
在识别程序中,首先对被掩膜的磁盘扇区进行格式化,然
后再判别该扇区是否读写正常。如果读写扇区正常,则认
为此盘是非法复制品而拒绝该软件运行,甚至使该软件自
行销毁;否则,认为是原盘,继续运行该软件。
计算机安全技术软件安全技术
软标记加密法
磁道软加密法
有磁道接缝加密法、额外磁道加密法、宽磁道加密法、
未格式化磁道加密法、磁道间距不规则变化加密法和螺线
型磁道加密法等。
1.磁道接缝加密法
利用专门的技术制作特殊的磁道。这种特殊的磁道给
复制工作造成了困难,甚至有些特殊磁道完全不能复制。
此外,它还利用了磁道接缝信息及长度的随机性。这种随
机性导致不同磁盘的磁道接缝信息不同,从而可达到防拷
贝的目的。
磁道后置区占据的长度是随机变化的,其范围在200
~300字节之间,且内容也随机地变化。
计算机安全技术软件安全技术
软标记加密法
所谓的磁道接缝软指纹,就是指磁道的后置区,因而
利用磁道接缝软指纹进行加密是完全可能的。
将不定长度的后置区取出以作为鉴别的依据,是磁道
接缝软指纹进行加密的关键。对于标准的磁道,读取困难,
除非用端口读磁道命令来实现,而端口读磁道命令又是十
分繁琐的。利用修改扇区 ID标志和软盘基数表的办法可
以较容易地实现磁道后置区的读取。
修改扇区ID标志实际上是修改磁道上最后一个扇区的
ID标志,因为磁道上最后一个扇区与后置区相连。考虑到
后置区长度不到300字节,因而将磁道最后一个扇区ID标
志中的 N改为 3即可。
计算机安全技术软件安全技术
软标记加密法
补充:INT 13H AH=5 格式化磁盘的单条磁道。
AH,AL,CH,DH,DL与磁盘读写功能类似,CL低
6位不用。BX:被格式化的地址字段集合地址,四个字节组
成。字节1:磁柱号;字节2:磁头号;字节3:扇区号;字节4:
每个扇区的字节数目,它有四种可能的数值:0:128字节;
1:256字节;2:512字节;3:1024字节。(P86)
2.额外磁道加密法
一般磁盘机可以正常读写44个磁道。有些磁盘机甚至
还可以多读写一些。可以设想,如果将一些关键数据放在
内圈的磁道上,比如放在41道,由于标准的拷贝软件只能
拷贝 0~39道,因此可以起到软盘防拷贝的目的。
计算机安全技术软件安全技术
由于标准的格式化程序只能格式化出40个磁道,所以
额外磁道的制作要由自己编制的汇编程序来实现。假设将
A驱动器中磁盘的0面40道格式化成一个标准格式的磁道,
具体操作如下:
A>DEBUG
—A
XXXX:100 MOV AX,0501
MOV BX,1000
MOV CX,2801
MOV DX,0
INT 13
JC 100
INT 3
-E 1000 28 00 01 02 28 00 02 02
-E 1008 28 00 03 02 28 00 04 02
-E 1010 28 00 05 02 28 00 06 02
-E 1018 28 00 07 02 28 00 08 02
-E 1020 28 00 09 02
-G=100
计算机安全技术软件安全技术
软标记加密法
3.宽磁道加密法
给磁盘驱动器配以宽磁头,使之能够同时在两个或多
个磁道上读/写信息。例如,配以宽磁头的磁盘驱动器可
以在两个相邻的磁道以及磁道之间的间隙同时写下完全相
同的信息而制成一个宽磁道。如果读该磁盘的一段程序能
够使磁盘驱动器的读/写磁头在写有相同信息的两个磁道
之间(物理上实际是一个宽“磁道”)来回步进,那么读
出的数据流也不会是中断的,即可以将宽磁道上的数据完
整读出。但在复制磁盘时,普通磁头则无法复制这样的宽
磁道。由于读写磁头两侧的抹磁头的抹除作用,在复制盘
中必然将这个宽磁道物理上分开,成为两个普通磁道,在
这两个磁道间存在物理间隙(即在间隙中没有任何信息),
而磁头步进地读取这两道的信息,必然导致读出信息的不
连续,从而就可以达到防拷贝的目的。
计算机安全技术软件安全技术
软标记加密法
4.未格式化磁道加密法
在格式化磁盘时,跳过某个或某些磁道,造成一个或
多个未格式化的空白磁道,使被加密程序在系统下能正常
工作,而传统的拷贝软件则无法正常拷贝。
使用被加密程序时,先用在被加密程序中的一段特殊
程序对磁盘进行检查,如果发现某一(或某些)特定的磁
道为未格式化磁道,则此盘为原盘,否则为非法拷贝盘。
5.磁道间距不规则变化加密法
磁道间距不规则变化技术的原理就是利用软件来控制
步进电机,使得磁头在磁盘上产生不规则的磁道间距,使
传统拷贝软件无法复制(传统的拷贝工具是利用程序控制
步进电机,使磁盘驱动器的读/写磁头在磁道间距相等的
磁道上来回移动而完成其复制工作的)。
计算机安全技术软件安全技术
软标记加密法
6.螺线型磁道加密法
螺线型磁道技术的原理是在磁盘上制作一些螺线型磁
道,致使磁头在进行读写操作时仍在步进,即磁头步进与
读写数据同时进行。这样就完全打乱了传统 的拷贝工具
的复制过程,使经过这种方法加密的磁盘无法被拷贝,达
到加密的目的。
其它软加密法
1.利用错误CRC码加密
2.磁道噪声法
3.双机加密法
4.卷标加密法
5.弱位加密法
6.ID ROM加密法
7.利用加密器进行加密
计算机安全技术软件安全技术
扇段软标记加密法
扇段软标记加密方法很多,如扇区间隙加密法、扇区
软指纹加密法、异常 ID加密法、额外扇段加密法、超级
扇段加密法、扇区错乱排序法、未格式化扇区法和扇段对
齐技术法等。
扇区软指纹加密法
扇区间隙软指纹加密方法为:磁盘格式化以后,在某
一磁道上的第一个扇区后的某个扇区写上需要重写的信息,
如被加密程序的数据或软件的一部分,然后再从该扇区的
前一个扇区读该扇区的内容,并利用该扇区读出的信息去
加密要保护的软件。由于从前一段扇区读出该扇区内容时,
该扇区的GAP2一起被读人,所以从该扇区读出的内容将
受GAP2长度的影响。再利用这些受GAP2影响的CRC码去
加密用户程序,其方法和途径可以灵活多样。
计算机安全技术软件安全技术
扇段软标记加密法
按扇区间隙软件指纹加密的一个实例(设被处
理的扇区为第40道0面1扇区)。
(1)对第 40道(可以选择任意一道)进行特
殊格式化(只格式化 0面),使第二扇区中从第一
扇区开始,读该重写扇区数据时,所读的内容与重
写前是不同的。
GAP2 SYNC AM2 … Old Data(512字节) CRC
GAP2 SYNC AM2 … New data(512字节) CRC
同一磁道的
同一扇区新
数据写入后
Data Field of a Sector
扇 区 软
指 纹 信
息图4-12 软指纹的形成
计算机安全技术软件安全技术
(2)读第 40道 0面3扇区,读之前修改软盘基
数表中的N值,使N=4,这样就可以把第40道0面2
扇区的全部内容读出,而不是仅读出数据域的内容。
(3)经这样处理后的软盘,第40道0面上的9
个扇区就不能被许多拷贝软件所复制。
异常ID加密法
通常采用异常ID参数的方法如下:
(1)使扇区长度不等于 512字节。例如,早
期版本的 CCDOS字库盘上,其格式为每道4扇区,
每扇区1024字节。
计算机安全技术软件安全技术
扇段软标记加密法
(2)改变磁盘上扇区的排列顺序。例如,可将磁道
中扇区格式化成按相反的顺序或交错排列的顺序。
(3)使扇区号取标准格式的取值范围(l~9)以外
的值。
(4)使磁道的逻辑地址与其物理编号不相符。
(5)使磁头的逻辑编号与其物理编号不相符。
由于格式化所需的ID参数是由指针ES:BX指定的地
址,以磁道号T、磁头号H、扇区号S和扇区长度N四个字
节为一组依次排列的,因此只要改变这些参数的顺序,就
能格式化出特殊的磁道。
计算机安全技术软件安全技术
扇段软标记加密法
额外扇段加密法
在逻辑结构上,一个磁道包含若干个扇区以及前置区
和后置区(GAP4)。前置区和后置区都是为了稳定电机
或允许电机转速稍有偏差而设的。前置区的长度是固定的,
为32字节;后置区的长度则是可变的,依电机转速的不同
而不同,一般有数百字节左右。
在FM制下,每个扇区中不仅包含数据区(512字节),
还包含同步电机用的两个6字节的SYNC字符序列、4个字
节的ID地址标志、1个字节的 AM1、1个字节的数据标志
或删除数据标志、两个2字节的 CRC(ID域的CRC和数据
区的CRC)、一个11字节的间隙(GAP2)和一个42字节的
间隙(GAP3)。因此,一个标准的扇区包括数据和一些
必需的标志、间隙,共有512+12+4+2+4+11+42=587字节。
计算机安全技术软件安全技术
下面的汇编程序给出了额外扇区磁道的产生过程
C>DEBUG
-E 0000:0522;修改磁盘基数表
0000:0522 DF 02,25,02,09,0A,2A
0000:0528 FF 50,0A
-A 100;格式化软盘第16道0面程序
0FA0:0100 MOV AX,0501
0FA0:0103 MOV BX,1000
0FA0:0106 MOV CX,1001
0FA0:0109 MOV DX,0000
0FA0:010C INT 13
0FA0:010E INT 3
0FA0:010F
扇段软标记加密法
计算机安全技术软件安全技术
-E 1000 ;设置格式化时所需参数
0FA0:1000
0FA0:1008
0FA0:1010
0FA0:1018
0FA0:1020
-G=100 ;执行格式化程序
AX=0000 BX=1000 CX=1001 DX=0000 SP=FFEE BP=0000
SI = 0000 DI=0000
SS=0FA0 ES=0FA0 SS=0FA0 CS=0FA0 IP=010E NV UP EI
NG NZ AC PE NC
0FA0:0F0E CC INT 3
-E 0000:0522 ;恢复磁盘基数表
0000:0522 DF.02,25,02,0A,09,2A
0000:0528 FF.0A,50
扇段软标记加密法
计算机安全技术软件安全技术
下面给出读取磁道额外扇区的程序及其执行结果:
C>DEBUG ;进入DEBUG
-E 0000:0525 ;修改磁盘基数表
0000:0528 02,09,0A,2A.
0000:0528 FF,50,0A
-A 100 ;读16道0面第10扇区程序
0FA0:0100 MOV AX,0201
0FA0:0103 MOV BX,1000
0FA0:0106 MOV CX,100A
0FA0:0109 MOV DX,0000
0FA0:010C INT 13
0FA0:010E INT 3
0FA0:010F
扇段软标记加密法
计算机安全技术软件安全技术
扇段软标记加密法
超级扇段加密法
由于磁盘机本身电路的原因,磁盘机对读出的要求较
低,往往对大扇区能正确读出,但要复制大扇区一般是做
不到的。根据这个原理,Softguard系统公司研制了超级扇
段技术来实现磁盘防拷贝。超级扇段技术也称连续写技术,
它使用专用设备在软盘上写上一些超长的扇区,这些扇区
的长度接近一个磁道的长度(如N=5时,每扇区字节数为
4096字节)。普通的磁盘控制器不能写这些扇区,但在程
序控制下可以成功地读出这些扇区(磁盘机甚至可以正确
读出N=6的扇区)。
超级扇段技术可以作为一种防拷贝加密技术单独使用,
也可以同其他技术结合起来使用,如扇区接缝指纹技术和
磁道接缝指纹技术中可以使用超级扇段技术。
计算机安全技术软件安全技术
扇段软标记加密法
下面的程序给出了读取超级扇段的操作过程(这里,
超级扇段容量为4096字节,即N=5,其所在磁道为0面39
道):
C>DEBUG;进入DEBUG
—E 0000:0525 ;修改磁盘基数表
0000:0525
一A 100 ;读39道0面第1扇区程序
0FA0:0100 MOV AX,0201
0FA0:0103 MOV BX,1000
0FA0:0106 MOV CX,2701
0FA0:0109 MOV DX,0000
0FA0:010C INT 13
0FA0:010E INT 3
0FA0:010F
计算机安全技术软件安全技术
一G=100 ;执行读程序
AX=0000 BX=1000 CX=0901 DX=0000
SP=FFEE BP=0000 SI=0000 DI=0000
DS=0FA0 ES=0FA0 SS=0FA0 CS=0FA0
IP=010E NV UP EI NG NZ AC PE NC
0FA0:010E CC INT 3
一E 0000:0252 ;恢复磁盘基数表
0000:0525
—Q
扇段软标记加密法
计算机安全技术软件安全技术
扇段软标记加密法
磁道扇区乱序排列加密法
目前所用的磁盘都是用软分段的方法规划(格
式化)出来的。所谓软分段就是用扇区识别标志来
存取磁盘上的信息,整个磁盘只有一索引孔。这种
磁盘的每个磁道上分布着固定数目的扇区,每个扇
区的开始部分是扇区识别标志。一条磁道上的扇区
从小到大按序排列,读写磁盘扇区时,根据磁头号、
磁道号和扇区号来决定读写磁盘上的哪一个扇区。
每个扇区由标识域、数据域和两个间隙域四个部分
构成。标识域指示该扇区所在的磁道号、磁头号和
扇区号以及扇区中数据域的大小。
计算机安全技术软件安全技术
扇段软标记加密法
一般地,正常格式化出来的磁盘,标识域中所指示某
扇区的磁道号、磁头号和扇区号与该扇区的实际位置相一
致。读写磁盘时,根据请求参数(磁道号、磁头号和扇区
号)来转动盘片和移动磁头,并且将读出的标识域与请求
参数相比较。如果一致,则目标找到并进行读写操作;如
果不一致,则还要转动盘片直到一致为止。
磁道扇区乱序排列法就是打乱磁道扇区的正常排列,
改变由小到大的次序,由大到小排列,或用大数排列、跳
跃排列次序排列,等等。
为加密而改变磁盘扇区的排列,只要选择一道或几道
就行了,完全没有必要改变所有磁道的扇区排列。
计算机安全技术软件安全技术
扇段软标记加密法
未格式化扇区加密法
软盘格式化处理后才能存储信息,未格式化的
磁盘是无法使用的。未格式化扇区的加密原理就是
利用这个特点,在格式化软盘时,对某一磁道的部
分扇区不做格式化处理。这样,被加密程序运行时,
首先利用被加密程序中的一程序段对某一特定磁道
进行检查。如果发现此磁道为一正常磁道(即没有
未格式化扇区),那么此盘必定为复制盘,否则为
原盘。若是原盘则正常执行,否则作异常处理。
计算机安全技术软件安全技术
扇段软标记加密法
GSH_BUF DB 27H,00,01,02 ;格式化时所需的标识字段
DB 27H,00,02,02 ; 集合
DB 27H,00,03,02
DB 27H,00,04,02
DB 27H,00,05,02
DB 27H,00,06,02
DB 27H,00,07,02
·······
PUSH ES
MOV AH,35H ;取磁盘基数表指针
MOV AL,1EH
INT 21H
MOV AL,07H ;修改磁盘基数表中每道的扇区数
ADD BX,04H
MOV ES:[BX],AL
POP ES
计算机安全技术软件安全技术
扇段软标记加密法
MOV DL,0 ;将39磁道特殊格式化为有未格式化的扇区
MOV DH,0
MOV CH,27H
MOV BX,OFFSET GSH_BUF ;该磁道仅有7个扇区
MOV AH,05
INT 13H
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,09H ;恢复磁道基数表原值
ADD BX,04H
MOV ES:〔BX],AL
POP ES
·······
计算机安全技术软件安全技术
扇段软标记加密法
在被加密程序中可以安排一段专门程序,用来检查磁
盘是否为原盘。具体做法是:检查磁盘的39道上扇区数是
否大于7。若大于7,则此盘为拷贝盘;否则,为原盘。
MOV AX,SEG MY_BUF ;ES:BX为用户缓冲区地址
MOV ES,AX
MOV BX,OFFSET MY_BUF
MOV AL,0lH ;读一个扇区
MOV DL,00H ; A驱动器
MOV DH,00H ;0磁头
MOV CH,27H ;39磁道
MOV CL,08H ;第8扇区
MOV AH,02H ;读盘
INT 13H ;转 BIOS
CMP AX,0400 ;申请扇区找到否
JNZ ILLEGL_DISKERR ;找到转非法盘处理子程序
计算机安全技术软件安全技术
扇段软标记加密法
扇段对齐加密法
扇段对齐技术是一种十分有效的磁盘软加密方
法。但是由于要精确依靠磁盘的转动速度来判断扇
段对齐,而磁盘的转动速度实际上时时刻刻都不相
同,因而这种加密技术实施难度大,也较难得到高
可靠性。因此,在实际应用中,扇段对齐技术的使
用并不多见。
计算机安全技术软件安全技术
口令加密与限制技术
口令加密技术
比如一个利用系统的功能调用07H来接收键盘输入的
口令加密示范程序。以回车键(0DH)作为结束符。口令
字输入后与程序中事先安排好的规定值进行比较。若一致,
则显示:“OK PASS…”,然后运行程序;否则,提示用
户重新输入口令字。口令字最多三次,三次输入若均不正
确,则屏幕上显示:“非法用户,对不起!”,然后返回
DOS,同时以声音报警:笛!笛!笛!
该程序比较简单,容易被破译。实际应用时采用个加
密算法事先将口令字作为密钥对主要程序段进行加密变换,
在程序的开头接收键盘输入的口令字作为密钥对文件中的
密码进行解密。这样,如果非法用户输入的口令不正确,
程序根本无法运行,而对于解密来说,也是相当困难的。
计算机安全技术软件安全技术
口令加密与限制技术
限制技术
1.设置软件使用期限
许多软件加密人员为了保护自己的软件产品,
或者为了控制软件的使用周期,往往在对软件加密
过程中规定了软件的使用期限。被加密的软件在每
次运行过程中,首先通过一段程序检测软件使用期
限是否已经到期。如果没有到期,则使软件正常运
行;否则,提示用户软件使用已经到期,请用户到
软件研制单位进行版本更新换代,并中止软件的运
行,甚至从磁盘上删除当前软件。
计算机安全技术软件安全技术
口令加密与限制技术
设置软件使用期限的方法,一般是利用DOS的系统功
能调用2AH子功能。该子功能是获取系统日期的系统功能
调用,其调用方法如下:
①入口参数:
AH=2AH
②出口参数:
CX=年(1980至2099)
DH=月(1= 一月,2=二月,…,12=十二月)
DL=日(1至 31)
AL=星期几(0=星期日,1=星期一,…,6=星期六)
注意:上述的出口参数都以二进制形式存放在相应的
寄存器中。
计算机安全技术软件安全技术
下面的一段程序所完成的功能是:检测当前日期是否
超过1992年3月26日。如果未到该日期,则使软件正常工
作;否则使软件转入死机。程序如下:
MOV AH,2AH
INT 21H
CMP CX,1992
JB OK-PASS
JA ERR
CMP DH,3
JB OK-PASS
JA ERR
CMP DH,26
JB OK-PASS
ERR: PUSH CS
POP DS
MOV DX,OFFSER MSG
MOV AH,9
INT 21H
RETRY :CLI
HLT
JMP RETRY
MSG DB ODH,OAH,09
OK—PASS: ………
上述程序段在检测到软
件使用期限已经到期的情况
下,首先显示提示信息警告
用户,然后使程序转入死机
状态。而有的软件在到期的
情况下,则使用系统功能调
用41H来将软件自身从磁盘
上删除。41H子功能调用方
法如下:
计算机安全技术软件安全技术
口令加密与限制技术
①入口参数:
AH=41H
DS:DX=带路径的文件名
②出口参数:
CF=0 删除成功
CF=l 删除不成功,AX返回出错码(2—一未找到路径;5—一
拒绝存取)
例如,下面的程序片段完成删除文件C:\M\YPROG.EXE
和返回 DOS的功能:
PUSH CS
POP DS
MOV AH, 41H
MOV DX,OFFSET WJM;删除文件C:\M\YPROG.EXE
INT 21H
MOV AX,4CFFH;带错误码FFH返回DOS
INT 21H
WJM DB C:\M\YPROG.EXE
计算机安全技术软件安全技术
口令加密与限制技术
2.限制软件的运行次数
限制软件的运行次数是软件加密中的一种常用的方法。
其基本思想是:利用安装程序将一个被加密的软件拷贝到
硬盘中,并将一个规定的运行次数写入被加密的软件中。
对于被加密的软件来说,在每次运行过程中,都要将运行
次数单元内容减1,当某一次运行结果中运行次数减为0时,
该加密软件从此便不能运行,或拒绝运行,或将自身从磁
盘上删除掉,然后要求用户利用安装盘重新安装。单独使
用这种方法的加密软件有一种缺陷,那就是如果被加密的
软件不具有防拷贝功能,则非法拷贝者可以将该软件拷贝
到自己的磁盘上。只要运行次数不为0,它就一直执行到
运行次数为0为止。
计算机安全技术软件安全技术
口令加密与限制技术
为了阻止拷贝,可将运行次数单元设置在主引导扇区
中。如果是合法用户,安装程序便将规定的运行次数写入
主引导扇区相应的单元中,被加密软件每一次运行时读取
这一单元的内容并进行减1操作,然后判断运行次数是否
为0,从而决定程序是否执行。对于这种将运行次数写入
硬盘主引导扇区的方法,如果非法复制者只将软件本身拷
贝到自己的磁盘上,而没有将他自己硬盘中主引导扇区的
运行次数单元的内容进行相应的设置,被拷贝的程序就不
能正常运行。更进一步,为了防止非法用户识别出主引导
扇区的运行次数,可以将运行次数单元的内容经过加密变
换以后,以密码的形式存放。加密密钥可以使用被加密软
件自身的首簇号,这样基本可以做到一次一密,使得解密
者想通过走捷径(不分析加密程序,而想仿造运行次数)的方
法来破译这一软件是非常困难的.
计算机安全技术软件安全技术
硬盘防拷贝技术
常由出售给用户的商品软件和硬盘加密安装系统软件
组成。这两个软件都通过软盘方式售给用户,其中被出售
的商品软件是经过加密处理的。
硬盘加密技术实际上是给硬盘加锁,加锁的硬盘只有
用密钥开锁后才能使用。密钥有两种形式:一种是口令形
式,密钥由授权用户掌握;另一种是密钥盘形式,密钥盘
掌握在授权用户手中。
加密硬盘只对授权用户开放,而对非授权用户关闭,
既阻止了非法用户对硬盘的使用,又不影响合法用户的使
用,从而有效地保护了硬盘上信息的安全。硬盘加密技术
主要采用以下几种方法:
①主引导扇区设置密码防拷贝;
②利用文件首簇号防拷贝;
③硬盘消隐与还原技术。
计算机安全技术软件安全技术
硬盘防拷贝技术
主引导扇区设置密码防拷贝
硬盘的主引导扇区中存放主引导程序和硬盘分区表的
信息。通常引导程序占用的偏移地址0000~00DFH,而硬
盘分区表则从偏移地址01BEH开始存放,在引导程序和硬
盘分区表之间大约有206个字节空间是空白区。
硬盘安装程序的主要功能有两个:一是在硬盘上设置
密码标志;二是将被加密的软件由软盘安装到硬盘上(一
般是在硬盘上建立一个子目录,将被加密软件的标志存放
在此子目录中)。被安装的软件,一般在出售给用户之前
已进行了防动态跟踪和防静态分析的加密处理,并具有识
别硬盘主引导扇区中存放的密码功能。下面给出其密码设
置程序和密码识别程序。
计算机安全技术软件安全技术
1.密码设置程序
密码设置程序属于安装程序的一部分,可以使用如下
的一段程序:
BUF:DB 512 DUP(0);读盘缓冲区
PUSH CS
POP DS
PUSH CS
POP ES ;CS=DS=ES
MOV BX,OFFSET BUT
MOV CX,l
MOV DX,0080H
MOV AX,0201H ;读硬盘主引导扇区到BUF
INT 13H
MOV BX,OFFSET BUF
MOV AX,7E7EH
MOV [BX十00E0H],AX ;密码7E7EH到主引导扇区00E0H单元
MOV BX,OFFSET BUF
MOV CX,l
MOV DX, 0080H
MOV AX,0301H;将设置密码的主引导扇区写回硬盘
INT 13H
计算机安全技术软件安全技术
2.密码识别程序
密码识别程序属于被加密软件程序的部分,可用如下一段程序
进行主引导区约定偏移地址处密码的识别操作:
BUF DB 512 DUP(0);读盘缓冲区
PUSH CS
POP DS
PUSH CS
POP ES ;CS=DS=ES
MOV BX, OFFSET BUF
MOV CX,l
MOV DX,0080H
MOV AX,0201H ;读硬盘主引导扇区
INT 13H
MOV BX,OFFSET BUF
MOV AX,7E7EH
CMP [BX+00E0H],AX
JZ OK_PASS ;有密码,则转OK_PASS正常进行
RETRY:CLI
HLT ;无密码,死机
JMP RETRY
OK_PASS:………
………
计算机安全技术软件安全技术
硬盘防拷贝技术
利用文件首簇号防拷贝
不同类型硬盘的柱面数、磁头数、每个柱面上的扇区
数都是不尽相同的,对于同一个文件来说,拷到两个硬盘
上,其首簇号一般是不相同的。即使同一类型的硬盘,磁
盘空间的使用状况也不尽相同。
1.文件首簇号的获取与安装
文件首簇号的获取与安装操作由安装程序来完成。安
装程序的主要工作是:将被加密的软件拷贝到硬盘根目录
或某一子目录下,读取该软件的首簇号,以明文或密文的
形式写入被加密软件规定的地方。对于(含)以上
的版本来说,文件首簇号保存在FCB第28、29字节中,而
对于以下的版本来说,文件首簇号则在FCB的第26、
27字节中。
计算机安全技术软件安全技术
下面的一段程序就是安装软件中用于获取被加密软件
首簇号的程序片段:
MSG DB 0DH,0AH,’FILE OPEN ERROR!$’
FCBI DB 0FFH,0,0,0,0,0,20,0,’’,25 DUP(0)
······
MOV DX,OFFSET FCBI
MOV AL,0FH
INT 21H
CMP AL,0
JNZ ERR
MOV AH,30H
INT 21H
CMP AL,3
JB NEXT
MOV SI,OFFSET FCBI
MOV AX,[SI+28]
JMP GOON
ERR: MOV DX,OFFSET MSG
MOV AH,9
INT 2 IH
MOV AX,4CFFH
INT 21H
NEXT: MOV AX,[SI+26]
GOON:……
计算机安全技术软件安全技术
硬盘防拷贝技术
2.文件首簇号的识别
文件首簇号的识别操作常由被加密程序自己来
完成。另外也有用系统功能调用来获取文件首簇号
的方法,在传统的文件管理系统功能调用中,11H
和12H号功能调用分别是搜索第一个匹配文件和下
一个匹配文件的功能调用。直接使用它们其中之一,
也可以方便地获取文件目录登记项的全部32个字节
内容,当然也包含了文件首簇号。程序片段如下:
MOV DX,OFFSET FCBI
MOV AH,11H
INT 21H
计算机安全技术软件安全技术
硬盘防拷贝技术
磁盘的消隐与还原
1.硬盘消隐技术
一种使硬盘从逻辑上消失,在逻辑上不存在的硬盘,
在物理上始终是存在的。使硬盘消隐实际上是使系统不能
识别物理上存在的硬盘,使得针对硬盘的文件存取操作不
能进行,从而达到保护硬盘上信息的目的。通常把使硬盘
消隐的操作称为硬盘加锁(密)操作。实现硬盘消隐有以
下几种方法:
( 1)改变系统设置法
( 2)修改分区表系统指示字节法
(3)搬移分区表法
计算机安全技术软件安全技术
硬盘防拷贝技术
2.硬盘还原技术
授权用户运行解锁软件还原硬盘有两种形式:
一种是还原后的硬盘在再次加锁前处于开锁状态,任
何用户都可以正常使用硬盘,因而授权用户上完机后需再
次加锁才能阻止非授权用户对硬盘的访问;
另一种形式是还原后的硬盘只在再次启动前处于开锁
状态,一旦关机或重新启动机器,硬盘使自动处于关锁状
态。这是通过用密钥系统盘启动机器实现的,该密钥系统
盘由授权用户掌握。不用该密钥系统盘启动机器,硬盘不
能被使用。硬盘还原的手段不是恢复系统设置表中的硬盘
设置就是恢复主引导记录中的分区表。
计算机安全技术软件安全技术
硬盘防拷贝技术
硬盘加密、解密实例
密钥系统盘的实例。密钥系统盘的关键在于引
导记录,它是采用搬移硬盘分区表实现加锁,采用
恢复硬盘分区表实现解锁的。当用例中所给出的密
钥系统盘启动机器时,第一次不能写保护,以后则
可以。用它启动机器,则硬盘可用,不用它启动则
硬盘不可用。
……
计算机安全技术软件安全技术
防动态跟踪技术
跟踪的工具及其实现
1.跟踪软件
调试软件是破译者的“天然”跟踪工具,能对程序实
现指令级跟踪,DEBUG可以跟踪DOS认可的任意小的可
执行文件。
T:单步跟踪命令。使用该命令可严格按指令级进行
跟踪,即该命令不把INT n、CALL n等语句作为一条指令,
而是进入这些语句相应的子程序中进行逐条指令跟踪。
P:按汇编语句跟踪。与 T命令不同的是,该命令把
诸如 INT n、CALL n等语句作为一条指令对待,而不像T
语句那样跟踪到这些语句相对应的子程序中,执行子程序
中的每条命令。
计算机安全技术软件安全技术
防动态跟踪技术
G:运行命令。该命令使得用户可以从程序的任一地
方开始执行,并最多可以设置d个中断点,显示每个中断
点处指令的运行结果。
加密中的防跟踪处理,就是要阻止解密者利用这些跟
踪(调试)工具对被加密的文件进行有效跟踪,使跟踪者
落入加密者设置的“陷阶”或进入“死胡同”。
2.跟踪的过程
单步中断和断点中断。单步中断是由机器内部状态引
起的一种中断。断点中断是一种软中断,软中断又称为自
陷指令。当CPU执行到编制在程序中的这条自陷指令时,
就进入断点中断服务程序。由于断点中断服务程序完成对
断点处各寄存器内容的显示,单步中断和断点中断的配合
使得调试软件可以实现对程序运行的跟踪。
计算机安全技术软件安全技术
防动态跟踪技术
防动态跟踪的方法
防动态跟踪的目的是阻止破译者进行有效跟踪。
实现这个目的的方法有两个途径:第一个途径是破
坏跟踪,使破译者跟踪不了几步就死机或机器自启
动;第二个途径是利用反穷举法,使跟踪者在“耗
尽精力”之前不能进行实质性跟踪。这两个途径的
防跟踪都要与密文相配合,否则就不能阻止破译者
识破“机关”,实现解密。
计算机安全技术软件安全技术
防动态跟踪技术
1.修改中断向量法
就是用新值来代替中断向量的旧值。这个新值
可以是被加密程序中某一程序的入口,也可以是一
个随机数。前者可以使跟踪者误入加密者设置的“
陷阱”中,后者可使机器进入死循环或出现其它异
常现象而死机。所有跟踪软件都利用了单步中断和
断点中断。这两个中断的中断服务程序的入口(中
断向量)分别被放在内存0:0004~0007H和0:
000C~000FH中。修改这两个中断的中断向量,就
可以破坏跟踪或使跟踪误入“歧途”。
计算机安全技术软件安全技术
防动态跟踪技术
(1)破坏中断向量:由于DEBUG程序在跟踪程
序时,需要使用INT1和INT3中断向量,所以只需
破坏这两个中断向量,即可阻止DEBUG程序的正
常运行,从而丧失其跟踪其它程序的能力。
(2)破坏更多的中断向量:有时,为了加强
防跟踪措施,可以破坏更多的中断向量。
(3)将数据放入中断向量地址
(4)使中断向量指向一个子程序
计算机安全技术软件安全技术
防动态跟踪技术
2.改变堆栈指针法
(1)将堆栈设在ROM区:破译者用DEBUG进行跟踪
时,DEBUG程序需要在当前堆栈段中存放其运行时的一
些重要数据。如果在软件运行时,自身不需要进行堆栈操
作就可以将堆栈段设置在内存ROM区,这时则不能保存
断点,也就无法返回到断点,从而造成死机使跟踪无法进
行下去。巧妙地使用这种方法,可以达到令人满意的效果。
(2)将堆栈设在程序区:将堆栈设在程序区中,由于
堆栈操作会破坏程序代码,从而使程序不能运行,间接地
阻止了破译者的动态跟踪。
(3)不断变更堆栈指针:在加密软件中,为了阻止解密
者的单步跟踪,可以不断地变更堆栈指针。
计算机安全技术软件安全技术
防动态跟踪技术
3.封锁键盘输人法
DEBUG的各种命令都是通过键盘输入的。键盘信息
的输入采用了硬件中断方式,由BIOS的键盘中断服务程
序接收、识别、转换,然后送入可存放16个字符的键盘缓
冲区。当程序在执行过程中不需要键盘支持时,可以封锁
键盘的输入,而当需要键盘输入时,再解除对键盘的封锁。
封锁键盘输入的方法有下面几种:
(1)改变中断服务程序入口地址。
( 2)修改管理程序入口地址
(3)禁止键盘中断
(4)禁止键盘接收数据
计算机安全技术软件安全技术
防动态跟踪技术
4.显示控制法
( 1)改变字符显示属性,封锁屏幕显示:正常情况
下,显示字符的颜色为一种颜色,而屏幕的背景颜色为另
一种颜色。如果在软件运行期间,自身不需要进行显示的
时候,将显示字符的颜色设置为与背景相同的颜色,则显
示在屏幕上的信息就看不见。这样,如果破译者采用
DEBUG进行跟踪时,就看不到命令执行的结果。
(2)检测屏幕信息的变化:DEBUG在显示信息时,
必然会使屏幕上卷、换页。因此,在程序运行时,如果发
现自己没有操作的屏幕位置,显示信息发生了变化,则可
以断定一定有人在跟踪程序的运行,从而采取相应的防跟
踪措施,检测屏幕信息的变化,以判别加密软件是否处于
动态调试程序的监控之下。
计算机安全技术软件安全技术
防动态跟踪技术
(3)修改中断管理程序人口地址:DEBUG各
种命令在执行之后,其结果都要通过屏幕显示出来。
在软件运行期间如果不需要屏幕显示,可以修改屏
幕显示中断管理入口地址。该中断号为10H,其人
口地址在0000:0040H~0000:0043H处。通过
INT 10H修改屏幕中断,使其成为哑中断,或利用
INT 10H使时钟中断定期清屏,达到关闭屏幕以阻
止跟踪,而在软件识别有母盘标志后,恢复屏幕显
示中断管理入口地址。
计算机安全技术软件安全技术
防动态跟踪技术
5.检测跟踪法
在程序中增加检测跟踪程序段,当发现跟踪时
就进行异常处理,或进入死循环,或使机器冷/热
启动,或给出非法跟踪提示使程序停止执行,但程
序被正常加载或执行时一切正常。这种防跟踪方法
设计得好,往往可使跟踪者莫明其妙,毫无办法。
检测跟踪的关键,一是跟踪的检测,二是跟踪
后的异常处理。其防跟踪的效果可由两个隐蔽来保
证:一是检测的隐蔽;二是异常处理的隐蔽。
计算机安全技术软件安全技术
防动态跟踪技术
检测跟踪有许多方法,主要介绍3种。
(1)向量检测法:一个程序如未被跟踪,则
单步中断和断点中断向量相同,都为哑中断。但若
一个程序被跟踪执行,则这两个中断的中断向量就
不相同。通过检测单步中断和断点中断的中断向量
是否相同,便可以发现程序是否被跟踪,从而决定
是继续执行还是进行异常处理。
(2)限时检测法:一段程序的连续运行和被
跟踪运行,其所花时间不大相同,因而在程序中可
设置定时器,根据时间的长短来判断是否被跟踪。
这种检测跟踪的方法,称为限时检测法。
计算机安全技术软件安全技术
防动态跟踪技术
(3)特殊检测方法:每个程序的运行都必须
首先建立程序段前缀PSP,因而一个运行的程序必
须有一个与之唯、对应的 psp。当程序被正常执行
和被跟踪时,PSP+14H与PSP+16H处两个字的内
容不同(未跟踪时相等;被跟踪时内容不等),从
而可以判断该程序是否被跟踪。
计算机安全技术软件安全技术
防动态跟踪技术
6.废指令法
防跟踪的目的是阻止解密者通过跟踪识破程序的“机
关”,因而可在被加密程序中设置“陷附”和“歧途”,
使跟踪者耗尽时间和精力而放弃跟踪。在被加密的程序中,
设置足够多的无用程序段,它们不完成任何有用功能,只
是在进行多次循环,要跟踪这段程序需花费大量时间,这
种方法称为废指令法。看出是废指令,要让跟踪者感到这
些指令是程序中必不可少的,这样才会诱使跟踪者去研究
这些指令,消耗其时间和精力。作为废指令的指令,应是
大多数用户生疏的指令。废指令虽然不完成任何有用的功
能,但要保证由废指令构成的程序段不能逾越。若跟踪者
逾越了,程序就不能继续运行,这是用废指令法进行防跟
踪时要注意的一个问题。若将废指令法与其它防跟踪方法
结合使用,则可达到令人十分满意的防跟踪效果。
计算机安全技术软件安全技术
防动态跟踪技术
7.覆盖技术法
大型程序所采用的一种技术,目的是解决内存空间不
足的矛盾。一般,一个可执行文件被执行时,总是将其全
部代码一次装入内存,完成运行后便释放空间退出内存。
而采用覆盖技术的可执行程序,运行时不是将程序代码一
次全部装入内存,而是分阶段多次装入内存,后装入的程
序代码将全部或部分地覆盖在它之前装入内存的程序代码。
采用覆盖技术的加密,使跟踪者难以前后联想和查找,因
为跟踪过的程序代码很可能已被覆盖掉,跟踪者如果想查
看被覆盖的内容就必须从头开始,这使跟踪增加了难度和
时间。此外,采用覆盖技术还可以增加静态分析难度。
计算机安全技术软件安全技术
防动态跟踪技术
8.其它方法
除了上述方法外,还有自动启动软盘法、循环
往复法、指令队列预取法,以及利用程序设计技巧、
逆指令流法和程序自检与自生成技术等实现加密程
序的防动态跟踪方法。