第十二章 软件防拷贝技术
软件防拷贝技术
防拷贝技术分类
– 硬件防拷贝技术
– 软硬件结合防拷贝
– 软件防复制方法
磁盘防拷贝技术
反防拷贝技术 ——脱壳
软件限制技术
EXE文件加密器程序示例
软件防拷贝技术
通过某种技术,使得操作系统的拷贝方法,
甚至拷贝软件不能将软件完整复制,或者
复制后不能使用。是防止软件扩散的主要
手段。
主要方法,
– 硬件防拷贝
– 软件防拷贝
– 软硬件结合。
比较常用的是软盘技术。
防拷贝技术分类
硬件防拷贝技术
– 硬件防拷贝通常是增加硬件接口或更换某些存储器集
成块,将保密系统必须运行的某些程序、数据、密钥
等信息固化在接口的只读存储器中,同时在硬件上设
旨一些持殊的标记,如某个特殊集成电路片的输比特
征等,
– 加密软件运行时,要使用这些固化在接口中的程序、
数据和密钥,要判断是否存在特殊集成电路片的输出
特征,加密系统要对这些存储器的内容和硬件特殊标
记采取一定的保密措施,使得敌手无法观察这些信息
和标记
– 硬件防复制和加密也可以使用加密处理器,如 z8068密
码处理器等,
防拷贝技术分类
软硬件结合防拷贝
– 首先使用计算机硬件加密的方法,如,
激光加密法,用激光在特定位置烧烫。
掩膜加密法,在磁盘特点位置加膜。
针孔加密法,在磁盘穿孔。
– 然后使用软件来验证是否特定的硬件。
– 也可以利用磁盘,CPU、网卡的序列号进行软
件加密。
防拷贝技术分类
软件防复制方法
– 对加密盘用持殊的方法建立非正常格式,并将
某些重要的信息如密钥、脱密程序、脱密算法
等存放在这些非正常格式的介质中间内。
– 由于这些非正常格式是一般拷贝软件是不能完
全正确地拷贝的,而加密程序运行时要判断这
些非正常格式是否存在,并且要使用非正常格
式存储文问中的信息将加密程序进行脱密,因
而非法拷贝下来的其它区间的内容也是不可使
用的,
防拷贝技术分类
– 优点:除了不需要增加或改动机器硬件以外,
生成加密盘也不需要苛刻的条件,而完全依赖
于软件,对存储介质无需要作物理加工,这对
于保持磁盘的完好性和再生成都是有好处的,
– 缺点:一旦敌手知道它的防复制原理,就可采
取 —些相应的措施进行仿制,
软件防拷贝技术
防拷贝技术分类
– 硬件防拷贝技术
– 软硬件结合防拷贝
– 软件防复制方法
磁盘防拷贝技术
反防拷贝技术 ——脱壳
软件限制技术
EXE文件加密器程序示例
磁盘防拷贝技术
早在 20世纪 80年代初期,人们就已经采用防拷贝
技术来保护软件了。
我们最早所见到的磁盘加密技术是一个搬运程序,
这段程序本身不能实现软件的任何功能,它的功
能是到磁盘的特定位置去读取真正的主程序,并
把控制权交给主程序,以此来阻止用 COPY命令
复制软件。
但随着时间的推移,人们发现根本不用编写这类
搬运程序,因为 DOS提供了一种更可靠、更简单
的方法 ——隐含文件名。
致命弱点:阻止不了 DISKCOPY命令的冲击。
磁盘防拷贝技术
新的反拷贝技术,
1,使用异常的 ID参数
ID字段是磁盘在格式化时被写入的,在写入时不作正确性检
查,所以我们可以在格式化磁盘时任意修改 ID字段中的内容。
当要读写磁盘时,就要求将被读取扇区的 ID字段与相应的读
写参数 (是标准 DOS格式时,由系统默认的 INT1E提供该标准
格式参数 )进行比较,只有当两者相同时,读写操作才能成功。
如果我们使用了异常的 ID参数格式化出了一个磁道或扇区,
那么在读写该磁道或扇区时,我们必须给出格式化时所用的
ID参数才能读写成功,这个磁道或扇区就被我们称作为指纹,
这种异常的 ID参数加密法能成功的防止各类 DOS标准格式复
制程序。
没有逃脱 COPYⅡ PC和 COPYWRIT的威慑。
磁盘防拷贝技术
举例,
– 超级扇区技术,磁盘机可以成功的读取长达 4096个字节的扇区,
而最多只能对 1024个字节的扇区进行格式化,所以我们可以运
用特殊的设备来格式化长度 N为 5的扇区,借此来实现反拷贝技
术 ;
– 额外扇区技术,一个磁道的容量大约在 6224个字节左右,所以完
全可以在减小扇区间隙的前提下,把一个磁道扩充成 10个扇区,
这样就使 DOS的拷贝程序无法复制到第 10个扇区中的内容,不
过这种技术在现今已经不再用于反拷贝技术,一是由于这类方法
已经有相应的对抗措施 ;二是它和下面介绍的额外磁道技术已经
被广泛的运用于磁盘扩容技术中
– 扇区乱序排列法,一个磁道上的扇区是从小到大排列的,扇区乱
序排列法就是刻意打乱扇区的正常排列,把扇区从大到小或任意
跳跃地排列起来,以阻止 DOS程序的复制。通过计算可知异常 ID
有 41种可能的形式,而且最新的某些软加密技术在实现上也是巧
妙地运用了 ID参数,所以说进一步深入了解 ID的运用是十分必要
的,不过在方法上要充分考虑到指纹的唯一性,因为只有这样才
能达到防止 "解一通百 "的目的。
磁盘防拷贝技术
2,额外磁道技术
– 一张未格式化的双面双密软盘一共有 48个磁
道,而在 DOS中只用到了前 40个
– 只用 40个磁道是由于考虑到了磁盘和磁盘机
的可靠性,但是通过实验人们发现 40-42磁道
照样有较高的可靠性。
– 我们就可以利用这 3个磁道来存放一些重要数
据,因为 DOS的拷贝程序只复制前 40个磁道。
磁盘防拷贝技术
3,未格式化扇区和磁道法
– 一张新的磁盘在使用时首先要格式化,这是
因为 DOS有自己管理磁盘的标准,也只有符
合这种标准的磁盘,DOS才能复制和管理
– 我们只要在格式化磁盘时,故意的在某一个
或多个磁道上不格式化或少格式化几个扇区,
就足以对付 DOS的拷贝程序
– 但这种方法难以抵挡 COPYWRIT和
COPYⅡ PC的攻击。
磁盘防拷贝技术
4,弱位技术,
– 磁盘是一种通过不同的磁化单元来记录信息的磁记录设备,它记
录的信息有两种可能性,即,1”或,0”,但如果在写盘时采用了
特殊技术,使得所记录的信息比 1信号弱些,比 0信号强些,这样
就形成了反拷贝技术中的弱位技术。
– 当磁盘机从原盘上读取数据时,读出的数据非 1即 0,对弱位也不
例外,可是弱位中存放的是一种非 1非 0的数据,所以它存在多次
读取的结果不一致的特点,如果拷贝程序只按某一次读取的数据
进行复制的话,必然使复制盘中不含弱位。
– 弱位技术是一种构思比较巧妙的反拷贝技术,但是关于它的制作
方法却很少公开,不过我们可以利用工具软件 EXPLORER来制
作,有兴趣的读者可以研究一下。
磁盘防拷贝技术
5,宽磁道技术,
– 磁盘机的磁头由读写磁头和消磁磁头组合而成,其中
的读写磁头用来读写磁道,而在读写磁头外侧的消磁
磁头主要用以抹除读写磁头所产生的多余磁场,以减
少磁道间的数据干扰
– 宽磁道技术则是针对磁盘机磁头的这种组合来设计的,
它的具体实现是利用一种能同时在两个或更多的磁道
上写数据的宽磁头,在两个相邻的磁道上写上相同的
数据,甚至可在这两个磁道之间的间隙中写上相同的
数据 (这是相对比较窄而且具有消磁磁头的普通磁头无
论如何也做不到的 ),以此建立一个较普通磁道至少宽
一倍的宽磁道
– 用普通磁头复制这类宽磁道时,由于消磁磁头的存在
始终会造成一个间隙,所以根本无法构造宽磁道
磁盘防拷贝技术
6,CRC错误法,
– 循环冗余校验码 CRC是软磁盘控制器 FDC在向磁盘写
入数据时自动生成的
– 在正常时,软磁盘控制器所产生的 CRC校验码都是正
确的,只有在软磁盘有物理性损伤或缺陷时才会产生
错误的 CRC校验码
– 人为生成错误的 CRC校验码,在写入数据时,人为地
在某一个扇区或几个扇区产生 ID字段或数据字段的错
误校验码
– 在复制有 CRC错误的扇区时,由于软磁盘控制器 FDC
在正常的情况下,本身绝对不会产生错误的 CRC校验
码 (除非软磁盘有缺陷 ),所以肯定也不可能复制人为
生成的错误的 CRC校验码
磁盘防拷贝技术
7,几种不常用的反拷贝技术
– 扇区对齐技术,通常的拷贝程序在复制软磁盘时,只将
它读到的某磁道数据全部写入到目标盘的相应位置,
根本不管各磁道内扇区的起始位置是否对齐,因此如
果有了对齐的扇区,便可以达到反拷贝的目的
– 螺线型磁道技术,螺线型磁道技术就是在软磁盘上制作
一些螺线型的磁道,当磁头在读写这类磁道时,势必
会造成磁头的步进 (由于普通的磁道是一个同心圆 ),
以达到读写数据与磁头步进同时进行,这就打乱了步
进结束后方开始读写数据的传统复制方法
磁盘防拷贝技术
– FM格式法,调频制 FM是早期的磁盘机常用的编
码方式,如今的 PC机使用的是改进调频制
MFM编码方式,它们之间存在着显著的差异,
如果对软磁盘的某个磁道用调频制 FM编码方式
进行格式化的话,DOS将无法正常读出该磁道
磁盘防拷贝技术
– DDAM法,利用软磁盘控制器的写删除数据标志命令写
某个扇区,使得其数据区地址标志变为 DDAM,值是
F8H(正常时扇区数据的地址标志是 DAM,值是 FBH)。
当复制工具碰到删除数据标志时,会跳过该扇区而转
去复制下一个扇区,这样就达到加密的目的 ;
– 伪扇区法,伪扇区是指只有 ID字段没有数据字段的假扇
区,由于数据字段比 ID字段要大得多,而伪扇区又没
有数据字段,所以可在一个磁道上写入很多个伪扇区,
当复制程序工作时要为这些伪扇区分配很大的内存,
以存放这些伪扇区的数据值 (伪扇区中不存在数据字段 ),
因而它会很快地使缓冲区溢出,以达到无法复制的目
的 ;
磁盘防拷贝技术
– 双机加密技术,联合使用两个或更多个不同的软磁盘控
制器的加密技术,又称为两种不同软磁盘控制器之间
的移花接木。
各种型号的软磁盘控制器的功能是有差异的,如某软磁盘控制
器可以检测出软盘上的某种特殊数据格式,但它本身却不能生
成这种特殊的数据格式,而这种特殊的数据格式需要其它某种
型号的软磁盘控制器才能产生,这就是双机加密技术的特点和
优点。
另外还有一些反拷贝技术如,磁道间距不规则变化
技术、改变主轴电机转速法、磁道噪声法和电磁
软盘加密法等
磁盘防拷贝技术
针孔反拷贝技术,
– 早在 20世纪 80年代末期,就有人开始尝试用针
孔来代替造价昂贵的激光孔了,至 20世纪 90年
代初期,甚至有人提出用针孔来复制激光加密
孔,以达到复制软磁盘控制器根本无法生成的
激光孔的目的。
– 生成的损伤区域小,造价十分低廉。
– 损坏磁头、制作效率不高。
磁盘防拷贝技术
掩膜反拷贝技术,
– 激光与针孔反拷贝技术都是损坏了磁盘的磁性介质,
破坏了磁盘的光洁度,对软磁盘驱动器的磁头都有一
定程度的磨损,为了弥补这个不足,掩膜反拷贝技术
应运而生。
– 掩膜反拷贝技术是在磁介质的某一块区域上镀上一层
膜,从而使该区域不能正常记录信息,也使拷贝工具
无法识别,导致拷贝失败。
– 掩膜反拷贝技术与激光加密技术一样,有极高的可靠
性,而且是一种很有前途的指纹制作技术。
磁盘防拷贝技术
加密卡,
– 把软件产品固化在硬件电路上,并附上一些特殊的电
路以形成指纹,这样就形成了加密卡 (有的加密卡只具
有指纹功能 ),当被加密程序执行时,可以通过端口指
令来检测加密卡的存在,甚至要直接从加密卡上读取
数据或程序,如果这期间出现错误将引起系统的死循
环或退出。
– 用加密卡技术实现加密具有极高的可靠性,比其它任
何加密方法的可靠性都高,而且其加密的磁盘不能用
任何的磁盘拷贝工具进行复制,因为复制的磁盘在没
有加密卡的情况下无法正常运行。
磁盘防拷贝技术
– 对于加密卡的解密方法只有两种,一是复制加密
卡 ;二是彻底分析加密软件,这两种方法实现起
来都比较困难。
磁盘防拷贝技术
指纹唯一性和不可复制性。
从前面的众多反拷贝技术来看,显然不具
备指纹唯一性的有,
– 异常 ID参数
– 额外磁道技术
– 未格式化扇区和磁道法等反拷贝技术
因为这类反拷贝技术不具备指纹唯一性,
所以它们能被高级拷贝工具复制。
磁盘防拷贝技术
指纹的不可复制性和唯一性是否都要同时存在才
能形成一个好的反拷贝技术呢?
在双机加密技术中,可以由某种软磁盘控制器制
作出另一种软磁盘控制器根本无法制作的指纹,
而这种指纹完全可以重复甚至不变,也就是说完
全抛弃指纹的唯一性,但依旧保持了指纹的不可
复制性。
可以肯定的是如果指纹的不可复制性和唯一性同
时存在的话,那么反拷贝技术的可靠性将更高。
磁盘防拷贝技术
指纹的随机性,
– 现今成功的一些反拷贝技术 (如扇区间隙技术和磁道接
缝技术等 )都采用了随机性这个概念,非写入部分的数
据随机性、磁头操作时定位点的随机性等等,总而言
之那些不是人们刻意去写入的或者由于机械方面产生
的一些碎数据,我们都可以把它们收集起来,形成一
种当前最流行的反拷贝技术。
– 指纹的随机性从一个方面来讲是指纹唯一性的一个分
支。
– 完全具备了唯一性和不可复制性两种特性,所以它超
越了唯一性的定义。
– 一个反拷贝技术制作出的指纹如果具备了随机性,那
么它是比较可靠的。
软件防拷贝技术
防拷贝技术分类
– 硬件防拷贝技术
– 软硬件结合防拷贝
– 软件防复制方法
磁盘防拷贝技术
反防拷贝技术 ——脱壳
软件限制技术
EXE文件加密器程序示例
反防拷贝技术 ——脱壳
壳,shell,软件中专门一段负责保护软件
不被非法修改或反汇编的程序,将先于程
序而运行,拿到控制权来保护软件。
通常 shell与压缩一体化。
脱壳技术就是利用反汇编,找到判定正版
的跳转语句,直接修改。
反防拷贝技术 ——脱壳
解密(脱壳)技术的进步促进、推动了当
时的加密(加壳)技术的发展。 LOCK95和
BITLOK等所谓的“壳中带籽”加密程序纷
纷出笼。
国外的“壳”类软件有 LZEXE之类的压缩
壳,它是一个标准的加壳软件,它把 EXE
文件压缩了以后,再在文件上加上一层在
软件被执行的时候自动把文件解压缩的
“壳”来达到压缩 EXE文件的目的。
反防拷贝技术 ——脱壳
在脱壳技术中,保护 EXE文件不被动态跟
踪和静态反编译是非常重要的。有一些专
门这样的加壳程序,如 MESS、
CRACKSTOP,HACKSTOP,TRAP、
UPS等。
脱壳技术大量使用了静态跟踪技术、动态
跟踪技术,后续章节有详述。
软件防拷贝技术
防拷贝技术分类
– 硬件防拷贝技术
– 软硬件结合防拷贝
– 软件防复制方法
磁盘防拷贝技术
反防拷贝技术 ——脱壳
软件限制技术
EXE文件加密器程序示例
软件限制技术
目前,许多应用程序都有在一定限制条件
内免费使用的功能,利用该功能可以有效
限制非法用户的使用,同时,还可以使合
法用户在充分了解软件优缺点的基础上,
再决定是否购买。
软件限制技术的利用在保护正版软件的基
础上,既有效地扩大了软件的使用范围,
又给用户提供了进行充分选择的机会。
软件限制技术
软件限制技术有很多种,比如,
– 利用注册表限制程序使用的天数,比如限制使用 30天;
– 利用注册表限制程序使用的次数,比如限制使用 45次;
– 设定程序使用的截止日期,比如设截止日期为 2003年 6
月 30日;
– 限制每次使用程序的时间,比如一次允许使用 50分钟。
这些软件限制技术既可以单独使用,也可以几个
同时使用实现综合保护。
软件防拷贝技术
防拷贝技术分类
– 硬件防拷贝技术
– 软硬件结合防拷贝
– 软件防复制方法
磁盘防拷贝技术
反防拷贝技术 ——脱壳
软件限制技术
EXE文件加密器程序示例
EXE文件加密器程序示例
目的:设计加密软件,软件运行必须有特定
的密码才可以运行。
编程环境, Delphi 6.0,Windows XP,
用于 EXE文件加密,这样别人在运行加密
后的 EXE文件时必须输入加密的密码
运行环境,Pentium II 366MHZ,
WIN9X/2000/NT/XP,16M内存以上。图 1
EXE文件加密器界面
源代码参见 addoil.net。