第4章软件安全技术.ppt_第1页
第4章软件安全技术.ppt_第2页
第4章软件安全技术.ppt_第3页
第4章软件安全技术.ppt_第4页
第4章软件安全技术.ppt_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4 l软件安全的基本要求 主要目的 一是禁止非法拷贝和使用 二是防止非法阅读和修改 其技术措施应实现三个基本任务 防拷贝 防静态分析和防动态跟踪 4 1 1防拷贝指的是通过采取某种加密措施 使得一般用户利用正常的拷贝命令 甚至于各种拷贝软件都无法将软件进行完整的复制 或者是复制到的软件不能正常运行 防拷贝技术是软件加密的核心技术 利用专用技术制造一种特殊标记 正常的拷贝途径无法复制这种特殊标记 或者是拷贝到的特殊标记不完整 特殊标记 软标记 硬标记 4 l软件安全的基本要求 拷贝盘 图4 2防拷贝软件的一般结构 4 l软件安全的基本要求 一个简单的手工作业方法制作硬标记 准备一根针 在酒精灯上将针尖部分烧红 然后在磁盘上选择某一位置 将烧红的针尖靠近磁介质表面停留片刻 注意不要接触磁介质表面 当拿开针尖以后 磁盘介质的这一部分就有一个小小的痕迹因受热而发生变化 不能记录信息 被损坏的扇区如果用INT13H读写数据时 会发生10H CRC 错 这样 我们即制作了一个磁盘标记 在被加密程序中编写一段程序来识别这一标记 因此必须知道被损坏的扇区所在的磁道和扇区号 补充 BIOSINT13H磁盘I O AH功能调用00H复位磁盘01H取磁盘状态02H读扇区03H写扇区04H检测扇区 功能调用02H入口参数 AH 02HAL 置要读的扇区数目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 奇偶校验错 4 l软件安全的基本要求 知道被烧坏的扇区为1面10磁道的第4扇区 因此就可以在程序中写上下面一段识别母盘的程序片段 RETRY MOVAX 0201 读一个扇区MOVBX OFFSETHCQ1MOVCX 0A04H 读10磁道的第4扇区MOVDX 0100 A驱动器的1面INT13HJBOK PASS 读扇区出错 转OK PASSJMPRETRY 是非法复制盘 重复读盘OK PASS CMPAH 10H CRC错 受热损坏的结果 吗 JNZRETRY 不是 重复读盘 假定被加密程序是显示字符串 Howareyou STACKSEGMENTPARASTACK STACK DB128DUP 0 STACKENDSDATASEGMENTMSG1DB0DH 0AH Howareyou DATAENDSCODESEGMENTASSUMECS CODE ES DATA DS DATASTARTPROCFARMOVAX DATAMOVDS AXMOVES AXMOVDX OFFSETMSG1MOVAH 9INT21HMOVAH4CHINT21HSTARTENDPCODEENDSENDSTART 上述程序采取防拷贝的措施 是将识别母盘的程序片段写入到程序中 修改后的程序如下 STARTSEGMENTPARASTACK STACK DB128DUP 0 STACKENDSDATASEGMENTMSG1DB0DH 0AH Howareyou HCQ1DB512DUP 0 设置磁盘缓冲区DATAENDSCODESEGMENTASSUMECS CODE ES DATA DS DATASTART PROCFARMOVAX DATAMOVDS AXMOVES AX 以下识别母盘RETRY MOVAX 0201HMOVBX OFFSETHCQ1MOVCX 0A04HMOVDX 0100HINT13HJBOK PASS 读扇区出错 转OK PASSJMPRETRY 是非法复制盘 重复读盘OK PASS CMPAH 10HJNZRETRY 不是原盘 转RETRYMOVDX OFFSETMSG1 是原盘 正常运行MOVAH 9INT21HMOVAH 4CHINT21HSTART ENDPCODEENDSENDSTART 4 l软件安全的基本要求 4 1 2防静态分析破译者可以阅读到防拷贝的这一段程序 然后进行修改 使得被加密的软件在运行时不进行特殊标记的识别而无条件地正常执行 使得防拷贝的功能失去作用 例如 对于上述的加密程序 解密者可用DEBUG的反汇编命令看到如下的程序指令代码 P74 为了解密 可在读盘操作以后 将1E53 0015处的指令改为无条件转移指令 JMP001E这样 该程序在运行时 不论读没读到磁盘标记 都会正常地运行 进一步地 还可以将1E53 0007处的指令改为 JMP001E这样 该程序在运行时甚至连读盘都不进行 就可以正常运行 U0271E53 0000B832lEMOVAX 1E321E53 00038ED8MOVDS AX1E53 00058EC0MOVES AX1E53 0007B80102MOVAX 02011E53 000ABB0F00MOVBX 000F1E53 000DB9040AMOVCX 0A041E53 0010BA0001MOVDX 01001E53 0013CD13INT131E53 00157202JB00191E53 0017EBEEJMP00071E53 001980FC10CMPAH 101E53 001C75E9JNZ00071E53 001EBA0000MOVDX 00001E53 0021B409MOVAH 091E53 0023CD21INT211E53 0025B44CMOVAH 4C1E53 0027CD21INT21 4 l软件安全的基本要求 防止静态阅读和分析主要方法 将识别磁盘特殊标记的程序放在比较隐蔽的地方 或者是对该段程序进行加密变换 以密文的形式放在软件中 但被加密以后的程序不能被执行 要求在被加密的程序片段之前利用另外一段解码程序 使其变换成明文 然后再运行该段程序进行磁盘特殊标记的识别 经过这样处理以后的软件 不运行解码程序 用DEBUG的 U 命令反汇编出来的密文对破译者来说是根本看不明白的 因此阻止了非法用户对软件的静态分析和修改 例如 将1E53 0007 0028之间的指令代码进行逐字节求反 那么在运行时 必须使用解码程序进行解密变换 为此在1E53 0007处增加一段解码程序 而把原CS 0007 0028H之间的指令代码经逐字节求反加密变换以后 存放在1E53 00lB开始的内存区域中 4 l软件安全的基本要求 1E53 0007BE1B00MOVSI 00lB SI指向密码首地址1E53 000AB93D00MOVCX 003D CX指向密码末地址1E53 000D2BCESUBCX SI 解密的字节数 CX1E53 000FFCCLD1E53 00102ECS 1E53 00118A04MOVAL SI 取一字节密文1E5 0013F6D0NOTAL 求反解密1E53 00152ECS 1E53 00168804MOV SI AL 存明文一字节1E53 001846INCSI 改变地址1E53 0019E2F5LOOP0010 循环解密1E53 001B47INCDI1E53 001CFEFD CH 4 l软件安全的基本要求 如 1E53 001B 001C 001D处内容为 47 FE FD逐字节取反后为 B8 01 02其汇编指令为 MOVAX 02014 1 3防动态跟踪采取了防静态分析的措施以后 虽然阻止了非法用户对软件的静态分析和阅读及修改 但是可以利用DEBUG对被加密的软件进行跟踪 运行解码程序 找到识别磁盘特殊标记的程序段 然后对其进行修改 所以 进行软件加密的第三个基本任务是 必须采取一定的措施阻止解密者的动态跟踪 使得在正常状态下无法用DEBUG程序或其它调试程序对软件本身进行跟踪执行 例如 对于上面的程序 我们可以在防拷贝和防静态分析的基础上再增加防动态跟踪的技术 所用的防动态跟踪技术是 封锁键盘输入 4 l软件安全的基本要求 2A61 0018E421INAL 21 读中断控制寄存器2A61 001A0C02ORAL 02 封锁键盘输入2A61 001CE621OUT21 AL 回送中断控制字2A61 001E46INCSI2A61 001FE2EFLOOP0010 4 l软件安全的基本要求 程序在运行过程中会封锁键盘的输入 即当用户想使用DEBUG的 T 命令和 G 命令进行跟踪执行时 会出现机器不接受键盘输入的现象 这是由于程序中CS 0018 001DH之间的程序对键盘进行了封锁 在没有跟踪的情况下 程序运行完CS 0010 0020之间的解码程序以后 将CS 0021 0048之间的程序变换成明文 然后进行磁盘标记的识别和运行程序主体的工作 最后在返回之前将键盘开放 即 2A61 004319DESBBSI BX2A61 00454BDECBX2A61 0046B332MOVBL 322A61 0048DE0AFIMULWORDPTR BP十SI 4 2软件防拷贝技术 磁盘上做特殊标记 有硬标记 软标记 4 2 1激光孔加密技术激光方向性好 亮度高等特点 用激光在数据区或扇区标识符上烧若干个痕迹 使磁盘的某几点失去磁性 在软盘表面产生永久不可恢复的标志 由于激光孔很小 不仔细看不容易看见 软盘在激光处理过的区域读写时 产生CRC校验错误 而加密软盘都有自己的识别程序 当判断有CRC检验错误时 就认为此盘是原盘 然后执行被保护的用户程序 若没有CRC校验错误 则认为此盘是复制品 从而拒绝运行被保护的用户程序 使拷贝工具无法使用 不能正常工作 4 2软件防拷贝技术 补充 MOVAH 19H 取磁盘驱动器编号放在AL中INT21H 0 A 1 B 2 CINT13HAH 0 复位磁盘 磁盘校准的磁盘操作AH 04 检查磁盘扇区 产生错误则CF 1 错误信息在AH中 激光孔定位程序和激光孔指纹识别程序如书本80页PROLOCK采取如下措施阻止解密者的分析和跟踪 1 密文处理 2 反跟踪 防止解密者的跟踪分析 PROLOCK采用了多种防跟踪措施 破坏断点中断和单步中断的向量 隐蔽转移 多循环 多出口 设置堆栈 4 2软件防拷贝技术 4 2 2电磁加密技术借助于专用的电磁机构 在所需加密的磁盘上随机生成一系列密钥信息 以供被加密程序识别使用的一种加密技术 它主要采用了一种奇异的编码格式将一些数据写入磁盘 供磁盘上专门的密钥识别程序鉴定 4 2 3掩膜技术采用半导体工艺中的镀膜方法来制造标志 给磁盘某一磁道或某一扇区进行镀膜 这种方法用膜来 遮掉 数据地址 使拷贝工具无法识别 即使原样拷贝出复制品 在识别程序中 首先对被掩膜的磁盘扇区进行格式化 然后再判别该扇区是否读写正常 如果读写扇区正常 则认为此盘是非法复制品而拒绝该软件运行 甚至使该软件自行销毁 否则 认为是原盘 继续运行该软件 4 3软标记加密法 4 3 1磁道软加密法有磁道接缝加密法 额外磁道加密法 宽磁道加密法 未格式化磁道加密法 磁道间距不规则变化加密法和螺线型磁道加密法等 1 磁道接缝加密法利用专门的技术制作特殊的磁道 这种特殊的磁道给复制工作造成了困难 甚至有些特殊磁道完全不能复制 此外 它还利用了磁道接缝信息及长度的随机性 这种随机性导致不同磁盘的磁道接缝信息不同 从而可达到防拷贝的目的 磁道后置区占据的长度是随机变化的 其范围在200 300字节之间 且内容也随机地变化 4 3软标记加密法 所谓的磁道接缝软指纹 就是指磁道的后置区 因而利用磁道接缝软指纹进行加密是完全可能的 将不定长度的后置区取出以作为鉴别的依据 是磁道接缝软指纹进行加密的关键 对于标准的磁道 读取困难 除非用端口读磁道命令来实现 而端口读磁道命令又是十分繁琐的 利用修改扇区ID标志和软盘基数表的办法可以较容易地实现磁道后置区的读取 修改扇区ID标志实际上是修改磁道上最后一个扇区的ID标志 因为磁道上最后一个扇区与后置区相连 考虑到后置区长度不到300字节 因而将磁道最后一个扇区ID标志中的N改为3即可 4 3软标记加密法 补充 INT13HAH 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 AXXXX 100MOVAX 0501MOVBX 1000MOVCX 2801MOVDX 0INT13JC100INT3 E10002800010228000202 E10082800030228000402 E10102800050228000602 E10182800070228000802 E102028000902 G 100 4 3软标记加密法 3 宽磁道加密法给磁盘驱动器配以宽磁头 使之能够同时在两个或多个磁道上读 写信息 例如 配以宽磁头的磁盘驱动器可以在两个相邻的磁道以及磁道之间的间隙同时写下完全相同的信息而制成一个宽磁道 如果读该磁盘的一段程序能够使磁盘驱动器的读 写磁头在写有相同信息的两个磁道之间 物理上实际是一个宽 磁道 来回步进 那么读出的数据流也不会是中断的 即可以将宽磁道上的数据完整读出 但在复制磁盘时 普通磁头则无法复制这样的宽磁道 由于读写磁头两侧的抹磁头的抹除作用 在复制盘中必然将这个宽磁道物理上分开 成为两个普通磁道 在这两个磁道间存在物理间隙 即在间隙中没有任何信息 而磁头步进地读取这两道的信息 必然导致读出信息的不连续 从而就可以达到防拷贝的目的 4 3软标记加密法 4 未格式化磁道加密法在格式化磁盘时 跳过某个或某些磁道 造成一个或多个未格式化的空白磁道 使被加密程序在系统下能正常工作 而传统的拷贝软件则无法正常拷贝 使用被加密程序时 先用在被加密程序中的一段特殊程序对磁盘进行检查 如果发现某一 或某些 特定的磁道为未格式化磁道 则此盘为原盘 否则为非法拷贝盘 5 磁道间距不规则变化加密法磁道间距不规则变化技术的原理就是利用软件来控制步进电机 使得磁头在磁盘上产生不规则的磁道间距 使传统拷贝软件无法复制 传统的拷贝工具是利用程序控制步进电机 使磁盘驱动器的读 写磁头在磁道间距相等的磁道上来回移动而完成其复制工作的 4 3软标记加密法 6 螺线型磁道加密法螺线型磁道技术的原理是在磁盘上制作一些螺线型磁道 致使磁头在进行读写操作时仍在步进 即磁头步进与读写数据同时进行 这样就完全打乱了传统的拷贝工具的复制过程 使经过这种方法加密的磁盘无法被拷贝 达到加密的目的 4 3 2其它软加密法1 利用错误CRC码加密2 磁道噪声法3 双机加密法4 卷标加密法5 弱位加密法6 IDROM加密法7 利用加密器进行加密 4 4扇段软标记加密法 扇段软标记加密方法很多 如扇区间隙加密法 扇区软指纹加密法 异常ID加密法 额外扇段加密法 超级扇段加密法 扇区错乱排序法 未格式化扇区法和扇段对齐技术法等 4 4 1扇区软指纹加密法扇区间隙软指纹加密方法为 磁盘格式化以后 在某一磁道上的第一个扇区后的某个扇区写上需要重写的信息 如被加密程序的数据或软件的一部分 然后再从该扇区的前一个扇区读该扇区的内容 并利用该扇区读出的信息去加密要保护的软件 由于从前一段扇区读出该扇区内容时 该扇区的GAP2一起被读人 所以从该扇区读出的内容将受GAP2长度的影响 再利用这些受GAP2影响的CRC码去加密用户程序 其方法和途径可以灵活多样 4 4扇段软标记加密法 按扇区间隙软件指纹加密的一个实例 设被处理的扇区为第40道0面1扇区 1 对第40道 可以选择任意一道 进行特殊格式化 只格式化0面 使第二扇区中从第一扇区开始 读该重写扇区数据时 所读的内容与重写前是不同的 2 读第40道0面3扇区 读之前修改软盘基数表中的N值 使N 4 这样就可以把第40道0面2扇区的全部内容读出 而不是仅读出数据域的内容 3 经这样处理后的软盘 第40道0面上的9个扇区就不能被许多拷贝软件所复制 4 4 2异常ID加密法通常采用异常ID参数的方法如下 使扇区长度不等于512字节 例如 早期版本的CCDOS字库盘上 其格式为每道4扇区 每扇区1024字节 4 4扇段软标记加密法 改变磁盘上扇区的排列顺序 例如 可将磁道中扇区格式化成按相反的顺序或交错排列的顺序 使扇区号取标准格式的取值范围 l 9 以外的值 使磁道的逻辑地址与其物理编号不相符 使磁头的逻辑编号与其物理编号不相符 由于格式化所需的ID参数是由指针ES BX指定的地址 以磁道号T 磁头号H 扇区号S和扇区长度N四个字节为一组依次排列的 因此只要改变这些参数的顺序 就能格式化出特殊的磁道 4 4扇段软标记加密法 4 4 3额外扇段加密法在逻辑结构上 一个磁道包含若干个扇区以及前置区和后置区 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 E0000 0522 修改磁盘基数表0000 0522DF02 25 02 09 0A 2A0000 0528FF50 0A A100 格式化软盘第16道0面程序0FA0 0100MOVAX 05010FA0 0103MOVBX 10000FA0 0106MOVCX 10010FA0 0109MOVDX 00000FA0 010CINT130FA0 010EINT30FA0 010F 4 4扇段软标记加密法 E1000 设置格式化时所需参数0FA0 100000 1000 0000 0100 0200 1000 0000 0200 020FA0 100800 1000 0000 0300 0200 1000 0000 0400 020FA0 101000 1000 0000 0500 0200 1000 0000 0600 020FA0 101800 1000 0000 0700 0200 1000 0000 0800 020FA0 102000 1000 0000 0900 0200 1000 0000 0A00 02 G 100 执行格式化程序AX 0000BX 1000CX 1001DX 0000SP FFEEBP 0000SI 0000DI 0000SS 0FA0ES 0FA0SS 0FA0CS 0FA0IP 010ENVUPEINGNZACPENC0FA0 0F0ECCINT3 E0000 0522 恢复磁盘基数表0000 0522DF 02 25 02 0A 09 2A0000 0528FF 0A 50 4 4扇段软标记加密法 下面给出读取磁道额外扇区的程序及其执行结果 C DEBUG 进入DEBUG E0000 0525 修改磁盘基数表0000 052802 09 0A 2A 0000 0528FF 50 0A A100 读16道0面第10扇区程序0FA0 0100MOVAX 02010FA0 0103MOVBX 10000FA0 0106MOVCX 100A0FA0 0109MOVDX 00000FA0 010CINT130FA0 010EINT30FA0 010F 4 4扇段软标记加密法 4 4扇段软标记加密法 4 4 4超级扇段加密法由于磁盘机本身电路的原因 磁盘机对读出的要求较低 往往对大扇区能正确读出 但要复制大扇区一般是做不到的 根据这个原理 Softguard系统公司研制了超级扇段技术来实现磁盘防拷贝 超级扇段技术也称连续写技术 它使用专用设备在软盘上写上一些超长的扇区 这些扇区的长度接近一个磁道的长度 如N 5时 每扇区字节数为4096字节 普通的磁盘控制器不能写这些扇区 但在程序控制下可以成功地读出这些扇区 磁盘机甚至可以正确读出N 6的扇区 超级扇段技术可以作为一种防拷贝加密技术单独使用 也可以同其他技术结合起来使用 如扇区接缝指纹技术和磁道接缝指纹技术中可以使用超级扇段技术 4 4扇段软标记加密法 下面的程序给出了读取超级扇段的操作过程 这里 超级扇段容量为4096字节 即N 5 其所在磁道为0面39道 C DEBUG 进入DEBUG E0000 0525 修改磁盘基数表0000 052502 0509 01一A100 读39道0面第1扇区程序0FA0 0100MOVAX 02010FA0 0103MOVBX 10000FA0 0106MOVCX 27010FA0 0109MOVDX 00000FA0 010CINT130FA0 010EINT30FA0 010F 一G 100 执行读程序AX 0000BX 1000CX 0901DX 0000SP FFEEBP 0000SI 0000DI 0000DS 0FA0ES 0FA0SS 0FA0CS 0FA0IP 010ENVUPEINGNZACPENC0FA0 010ECCINT3一E0000 0252 恢复磁盘基数表0000 052505 0201 09 Q 4 4扇段软标记加密法 4 4扇段软标记加密法 4 4 5磁道扇区乱序排列加密法目前所用的磁盘都是用软分段的方法规划 格式化 出来的 所谓软分段就是用扇区识别标志来存取磁盘上的信息 整个磁盘只有一索引孔 这种磁盘的每个磁道上分布着固定数目的扇区 每个扇区的开始部分是扇区识别标志 一条磁道上的扇区从小到大按序排列 读写磁盘扇区时 根据磁头号 磁道号和扇区号来决定读写磁盘上的哪一个扇区 每个扇区由标识域 数据域和两个间隙域四个部分构成 标识域指示该扇区所在的磁道号 磁头号和扇区号以及扇区中数据域的大小 4 4扇段软标记加密法 一般地 正常格式化出来的磁盘 标识域中所指示某扇区的磁道号 磁头号和扇区号与该扇区的实际位置相一致 读写磁盘时 根据请求参数 磁道号 磁头号和扇区号 来转动盘片和移动磁头 并且将读出的标识域与请求参数相比较 如果一致 则目标找到并进行读写操作 如果不一致 则还要转动盘片直到一致为止 磁道扇区乱序排列法就是打乱磁道扇区的正常排列 改变由小到大的次序 由大到小排列 或用大数排列 跳跃排列次序排列 等等 为加密而改变磁盘扇区的排列 只要选择一道或几道就行了 完全没有必要改变所有磁道的扇区排列 4 4扇段软标记加密法 4 4 6未格式化扇区加密法软盘格式化处理后才能存储信息 未格式化的磁盘是无法使用的 未格式化扇区的加密原理就是利用这个特点 在格式化软盘时 对某一磁道的部分扇区不做格式化处理 这样 被加密程序运行时 首先利用被加密程序中的一程序段对某一特定磁道进行检查 如果发现此磁道为一正常磁道 即没有未格式化扇区 那么此盘必定为复制盘 否则为原盘 若是原盘则正常执行 否则作异常处理 4 4扇段软标记加密法 GSH BUFDB27H 00 01 02 格式化时所需的标识字段DB27H 00 02 02 集合DB27H 00 03 02DB27H 00 04 02DB27H 00 05 02DB27H 00 06 02DB27H 00 07 02 PUSHESMOVAH 35H 取磁盘基数表指针MOVAL 1EHINT21HMOVAL 07H 修改磁盘基数表中每道的扇区数ADDBX 04HMOVES BX ALPOPES 4 4扇段软标记加密法 MOVDL 0 将39磁道特殊格式化为有未格式化的扇区MOVDH 0MOVCH 27HMOVBX OFFSETGSH BUF 该磁道仅有7个扇区MOVAH 05INT13HPUSHESMOVAH 35HMOVAL 1EHINT21HMOVAL 09H 恢复磁道基数表原值ADDBX 04HMOVES BX ALPOPES 4 4扇段软标记加密法 在被加密程序中可以安排一段专门程序 用来检查磁盘是否为原盘 具体做法是 检查磁盘的39道上扇区数是否大于7 若大于7 则此盘为拷贝盘 否则 为原盘 MOVAX SEGMY BUF ES BX为用户缓冲区地址MOVES AXMOVBX OFFSETMY BUFMOVAL 0lH 读一个扇区MOVDL 00H A驱动器MOVDH 00H 0磁头MOVCH 27H 39磁道MOVCL 08H 第8扇区MOVAH 02H 读盘INT13H 转BIOSCMPAX 0400 申请扇区找到否JNZILLEGL DISKERR 找到转非法盘处理子程序 4 4扇段软标记加密法 4 4 7扇段对齐加密法扇段对齐技术是一种十分有效的磁盘软加密方法 但是由于要精确依靠磁盘的转动速度来判断扇段对齐 而磁盘的转动速度实际上时时刻刻都不相同 因而这种加密技术实施难度大 也较难得到高可靠性 因此 在实际应用中 扇段对齐技术的使用并不多见 4 5口令加密与限制技术 4 5 1口令加密技术比如一个利用系统的功能调用07H来接收键盘输入的口令加密示范程序 以回车键 0DH 作为结束符 口令字输入后与程序中事先安排好的规定值进行比较 若一致 则显示 OKPASS 然后运行程序 否则 提示用户重新输入口令字 口令字最多三次 三次输入若均不正确 则屏幕上显示 非法用户 对不起 然后返回DOS 同时以声音报警 笛 笛 笛 该程序比较简单 容易被破译 实际应用时采用个加密算法事先将口令字作为密钥对主要程序段进行加密变换 在程序的开头接收键盘输入的口令字作为密钥对文件中的密码进行解密 这样 如果非法用户输入的口令不正确 程序根本无法运行 而对于解密来说 也是相当困难的 4 5口令加密与限制技术 4 5 2限制技术1 设置软件使用期限许多软件加密人员为了保护自己的软件产品 或者为了控制软件的使用周期 往往在对软件加密过程中规定了软件的使用期限 被加密的软件在每次运行过程中 首先通过一段程序检测软件使用期限是否已经到期 如果没有到期 则使软件正常运行 否则 提示用户软件使用已经到期 请用户到软件研制单位进行版本更新换代 并中止软件的运行 甚至从磁盘上删除当前软件 4 5口令加密与限制技术 设置软件使用期限的方法 一般是利用DOS的系统功能调用2AH子功能 该子功能是获取系统日期的系统功能调用 其调用方法如下 入口参数 AH 2AH 出口参数 CX 年 1980至2099 DH 月 1 一月 2 二月 12 十二月 DL 日 1至31 AL 星期几 0 星期日 1 星期一 6 星期六 注意 上述的出口参数都以二进制形式存放在相应的寄存器中 下面的一段程序所完成的功能是 检测当前日期是否超过1992年3月26日 如果未到该日期 则使软件正常工作 否则使软件转入死机 程序如下 MOVAH 2AHINT21HCMPCX 1992JBOK PASSJAERRCMPDH 3JBOK PASSJAERRCMPDH 26JBOK PASSERR PUSHCSPOPDSMOVDX OFFSERMSGMOVAH 9INT21H RETRY CLIHLTJMPRETRYMSGDBODH OAH 09OK PASS 上述程序段在检测到软件使用期限已经到期的情况下 首先显示提示信息警告用户 然后使程序转入死机状态 而有的软件在到期的情况下 则使用系统功能调用41H来将软件自身从磁盘上删除 41H子功能调用方法如下 4 5口令加密与限制技术 入口参数 AH 41HDS DX 带路径的文件名 出口参数 CF 0删除成功CF l删除不成功 AX返回出错码 2 一未找到路径 5 一拒绝存取 例如 下面的程序片段完成删除文件C M YPROG EXE和返回DOS的功能 PUSHCSPOPDSMOVAH 41HMOVDX OFFSETWJM 删除文件C M YPROG EXEINT21HMOVAX 4CFFH 带错误码FFH返回DOSINT21HWJMDBC M YPROG EXE 4 5口令加密与限制技术 2 限制软件的运行次数限制软件的运行次数是软件加密中的一种常用的方法 其基本思想是 利用安装程序将一个被加密的软件拷贝到硬盘中 并将一个规定的运行次数写入被加密的软件中 对于被加密的软件来说 在每次运行过程中 都要将运行次数单元内容减1 当某一次运行结果中运行次数减为0时 该加密软件从此便不能运行 或拒绝运行 或将自身从磁盘上删除掉 然后要求用户利用安装盘重新安装 单独使用这种方法的加密软件有一种缺陷 那就是如果被加密的软件不具有防拷贝功能 则非法拷贝者可以将该软件拷贝到自己的磁盘上 只要运行次数不为0 它就一直执行到运行次数为0为止 4 5口令加密与限制技术 为了阻止拷贝 可将运行次数单元设置在主引导扇区中 如果是合法用户 安装程序便将规定的运行次数写入主引导扇区相应的单元中 被加密软件每一次运行时读取这一单元的内容并进行减1操作 然后判断运行次数是否为0 从而决定程序是否执行 对于这种将运行次数写入硬盘主引导扇区的方法 如果非法复制者只将软件本身拷贝到自己的磁盘上 而没有将他自己硬盘中主引导扇区的运行次数单元的内容进行相应的设置 被拷贝的程序就不能正常运行 更进一步 为了防止非法用户识别出主引导扇区的运行次数 可以将运行次数单元的内容经过加密变换以后 以密码的形式存放 加密密钥可以使用被加密软件自身的首簇号 这样基本可以做到一次一密 使得解密者想通过走捷径 不分析加密程序 而想仿造运行次数 的方法来破译这一软件是非常困难的 4 6硬盘防拷贝技术 常由出售给用户的商品软件和硬盘加密安装系统软件组成 这两个软件都通过软盘方式售给用户 其中被出售的商品软件是经过加密处理的 硬盘加密技术实际上是给硬盘加锁 加锁的硬盘只有用密钥开锁后才能使用 密钥有两种形式 一种是口令形式 密钥由授权用户掌握 另一种是密钥盘形式 密钥盘掌握在授权用户手中 加密硬盘只对授权用户开放 而对非授权用户关闭 既阻止了非法用户对硬盘的使用 又不影响合法用户的使用 从而有效地保护了硬盘上信息的安全 硬盘加密技术主要采用以下几种方法 主引导扇区设置密码防拷贝 利用文件首簇号防拷贝 硬盘消隐与还原技术 4 6硬盘防拷贝技术 4 6 l主引导扇区设置密码防拷贝硬盘的主引导扇区中存放主引导程序和硬盘分区表的信息 通常引导程序占用的偏移地址0000 00DFH 而硬盘分区表则从偏移地址01BEH开始存放 在引导程序和硬盘分区表之间大约有206个字节空间是空白区 硬盘安装程序的主要功能有两个 一是在硬盘上设置密码标志 二是将被加密的软件由软盘安装到硬盘上 一般是在硬盘上建立一个子目录 将被加密软件的标志存放在此子目录中 被安装的软件 一般在出售给用户之前已进行了防动态跟踪和防静态分析的加密处理 并具有识别硬盘主引导扇区中存放的密码功能 下面给出其密码设置程序和密码识别程序 1 密码设置程序密码设置程序属于安装程序的一部分 可以使用如下的一段程序 BUF DB512DUP 0 读盘缓冲区PUSHCSPOPDSPUSHCSPOPES CS DS ESMOVBX OFFSETBUTMOVCX lMOVDX 0080HMOVAX 0201H 读硬盘主引导扇区到BUFINT13HMOVBX OFFSETBUFMOVAX 7E7EHMOV BX十00E0H AX 密码7E7EH到主引导扇区00E0H单元MOVBX OFFSETBUFMOVCX lMOVDX 0080HMOVAX 0301H 将设置密码的主引导扇区写回硬盘INT13H 2 密码识别程序密码识别程序属于被加密软件程序的部分 可用如下一段程序进行主引导区约定偏移地址处密码的识别操作 BUFDB512DUP 0 读盘缓冲区PUSHCSPOPDSPUSHCSPOPES CS DS ESMOVBX OFFSETBUFMOVCX lMOVDX 0080HMOVAX 0201H 读硬盘主引导扇区INT13HMOVBX OFFSETBUFMOVAX 7E7EHCMP BX 00E0H AXJZOK PASS 有密码 则转OK PASS正常进行RETRY CLIHLT 无密码 死机JMPRETRYOK PASS 4 6硬盘防拷贝技术 4 6 2利用文件首簇号防拷贝不同类型硬盘的柱面数 磁头数 每个柱面上的扇区数都是不尽相同的 对于同一个文件来说 拷到两个硬盘上 其首簇号一般是不相同的 即使同一类型的硬盘 磁盘空间的使用状况也不尽相同 1 文件首簇号的获取与安装文件首簇号的获取与安装操作由安装程序来完成 安装程序的主要工作是 将被加密的软件拷贝到硬盘根目录或某一子目录下 读取该软件的首簇号 以明文或密文的形式写入被加密软件规定的地方 对于DOS3 3 含3 3 以上的版本来说 文件首簇号保存在FCB第28 29字节中 而对于DOS3 3以下的版本来说 文件首簇号则在FCB的第26 27字节中 下面的一段程序就是安装软件中用于获取被加密软件首簇号的程序片段 MSGDB0DH 0AH FILEOPENERROR FCBIDB0FFH 0 0 0 0 0 20 0 PROTECTI EXE 25DUP 0 MOVDX OFFSETFCBIMOVAL 0FHINT21HCMPAL 0JNZERRMOVAH 30HINT21HCMPAL 3JBNEXTMOVSI OFFSETFCBIMOVAX SI 28 JMPGOONERR MOVDX OFFSETMSGMOVAH 9INT2IH MOVAX 4CFFHINT21HNEXT MOVAX SI 26 GOON 4 6硬盘防拷贝技术 2 文件首簇号的识别文件首簇号的识别操作常由被加密程序自己来完成 另外也有用系统功能调用来获取文件首簇号的方法 在传统的文件管理系统功能调用中 11H和12H号功能调用分别是搜索第一个匹配文件和下一个匹配文件的功能调用 直接使用它们其中之一 也可以方便地获取文件目录登记项的全部32个字节内容 当然也包含了文件首簇号 程序片段如下 MOVDX OFFSETFCBIMOVAH 11HINT21H 4 6硬盘防拷贝技术 4 6 3磁盘的消隐与还原1 硬盘消隐技术一种使硬盘从逻辑上消失 在逻辑上不存在的硬盘 在物理上始终是存在的 使硬盘消隐实际上是使系统不能识别物理上存在的硬盘 使得针对硬盘的文件存取操作不能进行 从而达到保护硬盘上信息的目的 通常把使硬盘消隐的操作称为硬盘加锁 密 操作 实现硬盘消隐有以下几种方法 1 改变系统设置法 2 修改分区表系统指示字节法 3 搬移分区表法 4 6硬盘防拷贝技术 2 硬盘还原技术授权用户运行解锁软件还原硬盘有两种形式 一种是还原后的硬盘在再次加锁前处于开锁状态 任何用户都可以正常使用硬盘 因而授权用户上完机后需再次加锁才能阻止非授权用户对硬盘的访问 另一种形式是还原后的硬盘只在再次启动前处于开锁状态 一旦关机或重新启动机器 硬盘使自动处于关锁状态 这是通过用密钥系统盘启动机器实现的 该密钥系统盘由授权用户掌握 不用该密钥系统盘启动机器 硬盘不能被使用 硬盘还原的手段不是恢复系统设置表中的硬盘设置就是恢复主引导记录中的分区表 4 6硬盘防拷贝技术 4 6 4硬盘加密 解密实例密钥系统盘的实例 密钥系统盘的关键在于引导记录 它是采用搬移硬盘分区表实现加锁 采用恢复硬盘分区表实现解锁的 当用例中所给出的密钥系统盘启动机器时 第一次不能写保护 以后则可以 用它启动机器 则硬盘可用 不用它启动则硬盘不可用 4 7防动态跟踪技术 4 7 l跟踪的工具及其实现1 跟踪软件调试软件是破译者的 天然 跟踪工具 能对程序实现指令级跟踪 DEBUG可以跟踪DOS认可的任意小的可执行文件 T 单步跟踪命令 使用该命令可严格按指令级进行跟踪 即该命令不把INTn CALLn等语句作为一条指令 而是进入这些语句相应的子程序中进行逐条指令跟踪 P 按汇编语句跟踪 与T命令不同的是 该命令把诸如INTn CALLn等语句作为一条指令对待 而不像T语句那样跟踪到这些语句相对应的子程序中 执行子程序中的每条命令 4 7防动态跟踪技术 G 运行命令 该命令使得用户可以从程序的任一地方开始执行 并最多可以设置d个中断点 显示每个中断点处指令的运行结果 加密中的防跟踪处理 就是要阻止解密者利用这些跟踪 调试 工具对被加密的文件进行有效跟踪 使跟踪者落入加密者设置的 陷阶 或进入 死胡同 2 跟踪的过程单步中断和断点中断 单步中断是由机器内部状态引起的一种中断 断点中断是一种软中断 软中断又称为自陷指令 当CPU执行到编制在程序中的这条自陷指令时 就进入断点中断服务程序 由于断点中断服务程序完成对断点处各寄存器内容的显示 单步中断和断点中断的配合使得调试软件可以实现对程序运行的跟踪 4 7防动态跟踪技术 4 7 2防动态跟踪的方法防动态跟踪的目的是阻止破译者进行有效跟踪 实现这个目的的方法有两个途径 第一个途径是破坏跟踪 使破译者跟踪不了几步就死机或机器自启动 第二个途径是利用反穷举法 使跟踪者在 耗尽精力 之前不能进行实质性跟踪 这两个途径的防跟踪都要与密文相配合 否则就不能阻止破译者识破 机关 实现解密 4 7防动态跟踪技术 1 修改中断向量法就是用新值来代替中断向量的旧值 这个新值可以是被加密程序中某一程序的入口 也可以是一个随机数 前者可以使跟踪者误入加密者设置的 陷阱 中 后者可使机器进入死循环或出现其它异常现象而死机 所有跟踪软件都利用了单步中断和断点中断 这两个中断的中断服务程序的入口 中断向量 分别被放在内存0 0004 0007H和0 000C 000FH中 修改这两个中断的中断向量 就可以破坏跟踪或使跟踪误入 歧途 4 7防动态跟踪技术 1 破坏中断向量 由于DEBUG程序在跟踪程序时 需要使用INT1和INT3中断向量 所以只需破坏这两个中断向量 即可阻止DEBUG程序的正常运行 从而丧失其跟踪其它程序的能力 2 破坏更多的中断向量 有时 为了加强防跟踪措施 可以破坏更多的中断向量 3 将数据放入中断向量地址 4 使中断向量指向一个子程序 4 7防动态跟踪技术 2 改变堆栈指针法 1 将堆栈设在ROM区 破译者用DEBUG进行跟踪时 DEBUG程序需要在当前堆栈段中存放其运行时的一些重要数据 如果在软件运行时 自身不需要进行堆栈操作就可以将堆栈段设置在内存ROM区 这时则不能保存断点 也就无法返回到断点 从而造成死机使跟踪无法进行下去 巧妙地使用这种方法 可以达到令人满意的效果 2 将堆栈设在程序区 将堆栈设在程序区中 由于堆栈操作会破坏程序代码 从而使程序不能运行 间接地阻止了破译者的动态跟踪 3 不断变更堆栈指针 在加密软件中 为了阻止解密者的单步跟踪 可以不断地变更堆栈指针 4 7防动态跟踪技术 3 封锁键盘输人法DEBUG的各种命令都是通过键盘输入的 键盘信息的输入采用了硬件中断方式 由BIOS的键盘中断服务程序接收 识别 转换 然后送入可存放16个字符的键盘缓冲区 当程序在执行过程中不需要键盘支持时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论