




免费预览已结束,剩余48页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十三章软件反跟踪技术 软件反跟踪技术 软件分析技术概述加密反跟踪技术跟踪技术反跟踪技术执行程序结构静态跟踪 防静态分析 反防静态分析 软件反跟踪技术 动态跟踪 防动态跟踪破坏debug的基本方法主动检测跟踪法代码加密法其他防跟踪方法小结软件防跟踪编程技巧反跟踪程序例子常用工具介绍 软件分析技术概述 在进行软件的破解 解密以及计算机病毒分析工作中 一个首要的问题是对软件及病毒进行分析 这些软件都是机器代码程序 对于它们分析必须使用静态或动态调试工具 分析跟踪其汇编代码 软件分析技术概述 从软件使用说明和操作中分析软件欲破解软件 首先应该先使用该软件 了解一下功能是否有限制 最好阅读一下软件的说明或手册 特别是自己所关心的关键部分的使用说明 这样也许能够找点线索 静态反汇编所谓静态分析即从反汇编出来的程序清单上分析 大多数软件在设计时 都采用了人机对话方式 所以提示信息入手进行分析 crack时常用的静态分析工具是W32DASM和HIEW等 软件分析技术概述 动态跟踪分析虽然从静态上可以了解程序的思路 但是并不可能真正了解地了解软件的细节 如静态分析找不出线索 就要动态分析程序另外 碰到压缩程序 静态分析就无能为力了 只能动态分析了所谓动态分析是利用SOFTICE或TRW2000一步一步地单步执行软件 软件分析技术概述 为什么需要动态跟踪分析 许多软件在整体上完成的功能 一般要分解成若干模块来完成 而且后一模块在执行时 往往需要使用其前一模块处理的结果 这一结果我们把它叫中间结果 如果我们只对软件本身进行静态地分析 一般是很难分析出这些中间结果的 有许多软件在运行时 其最初执行的一段程序往往需要对该软件的后面各个模块进行一些初始始化工作 而没有依赖系统的重定位 有许多加密程序为了阻止非法跟踪和阅读 对执行代码的大部分内容进行了加密变换 而只有很短的一段程序是明文 加密程序运行时 采用了逐块解密 逐块执行和方法 软件分析技术概述 如何进行动态跟踪分析 对软件进行粗跟踪所谓粗跟踪 即在跟踪时要大块大块地跟踪 也就是说每次遇到调用CALL指令 重复操作指令REP 循环操作LOOP指令以及中断调用INT指令等 一般不要跟踪进去 而是根据执行结果分析该段程序的功能 对关键部分进行细跟踪对软件进行了一定程度的粗跟踪之后 便可以获取软件中我们所关心的模块或程序段 这样就可以针对性地对该模块进行具体而详细地跟踪分析 一般情况下 对关键代码的跟踪可能要反复进行若干次才能读懂该程序 每次要把比较关键的中间结果或指令地址记录下来 这样会对下一次分析有很大的帮助 软件反跟踪技术 软件分析技术概述加密反跟踪技术跟踪技术反跟踪技术执行程序结构静态跟踪 防静态分析 反防静态分析 加密反跟踪技术 跟踪技术DOS中的动态跟踪调试软件DEBUG单步中断和断点中断通过对单步中断和断点中断的合理组合 可以产生强大的动态调试跟踪功能 这就对磁盘加密技术造成了巨大的威慑 所以破坏单步中断和断点中断 在反跟踪技术中就显得十分必要 成为反跟踪技术中的 必修课 反跟踪技术 作为反拷贝技术的保护者反跟踪技术是整个磁盘加密技术中最能显示技术水平的部分 如果它稍有漏洞就会影响到整个磁盘加密技术的可靠性 反跟踪技术 一个有效的反跟踪技术应该具有3大特性 重要程序段是不可跳越和修改的PROLOK的解密过程是通过修改判读指纹的程序段来实现的 这其实是激光加密系统中反跟踪技术的一个败笔 一个有效的反跟踪技术应该对加密系统中的某些甚至全部程序段进行保护 如果这其中有内容被修改 将导致出错主要方法有累计 累或和异或和程序段等方法同时还要保证重要程序段一定要被执行 方法主要有加密程序分段加密 运行时逐层解密 逐层清除的方法 即只有运行了重要的程序段 才能将下一层程序代码从密码形式转换成明码形式 反跟踪技术 不通过加密系统的译码算法 密码不可破译 为塑造一个封闭的加密系统 杜绝使用外调自编子程序甚至手工转换密码 规定只能由加密系统的译码程序来转换密码 加密系统是不可动态跟踪执行的动态跟踪是对加密系统的窥视 所以反跟踪技术应该绝对禁止对加密系统的动态跟踪 软件反跟踪技术 软件分析技术概述加密反跟踪技术跟踪技术反跟踪技术执行程序结构静态跟踪 防静态分析 反防静态分析 执行程序结构 在微机上主要可执行程序是COM格式与EXE格式 COM文件结构是程序在一个段中 无堆栈 长度小于64k 在程序头预留100h字节 在偏移为100h处是可执行代码 COM文件加载过程为 在可用内存低端建立程序段前缀psp 长度100hPsp上方读入com文件Pc psp 100h 执行程序结构 Exe文件结构包括 文件头格式化区重定位表程序体代码段数据段堆栈段Exe文件的长度可以大于64k Exe文件头格式为 执行程序结构 Exe文件装载过程是确定内存起始段确定长度读exe文件到内存根据重定位表对内存的exe文件体进行重定位取出重定位项中的段值段值加起始段 实际段值加偏移量得到程序体的一个字取出该字 加上起始段值写回内存原来位置初始化寄存器控制权转移 开始执行 软件反跟踪技术 软件分析技术概述加密反跟踪技术跟踪技术反跟踪技术执行程序结构静态跟踪 防静态分析 反防静态分析 静态跟踪 防静态分析 反防静态分析 静态跟踪 使用反汇编程序将可执行程序转换为汇编程序 阅读汇编程序以获得原始信息的方法 防静态跟踪是将关键代码变形 使得反编译结果不知所云的技术 防静态分析 必须防止从反汇编的程序清单入手分析的方法 必须防止用户对代码的静态分析与阅读 静态跟踪 防静态分析 反防静态分析 防静态分析技术主要有 将程序放在隐蔽的位置 将程序某段或者某字节放置到其他位置 使得反汇编结果无法正确运行 而在正常运行中 有合适的机制将真实的代码拼凑完整 例如EXE头文件转移 再如文件头放在特殊的地方 对程序代码进行变换 以密文形式存在执行文件中 被加密的程序不能执行 必须先解密 关键在于密码对代码段的加密 静态跟踪 防静态分析 反防静态分析 反防静态分析是针对防静态分析而应用的技术 主要使用动态跟踪方法 通过跟踪程序的运行 寻找真实判定正版处的跳转 修改代码 使得先解密 忽略判定条件 直接执行程序体 一种较为高级防静态分析方法 是后续模块需要前面的模块运行结果 仅仅看代码是无法了解程序控制流 这样可以防止破解者阅读程序 另外的方法还有程序自行初始化 不使用系统重定位的方法 也破坏汇编代码的解释 软件反跟踪技术 动态跟踪 防动态跟踪破坏debug的基本方法主动检测跟踪法代码加密法其他防跟踪方法小结软件防跟踪编程技巧反跟踪程序例子常用工具介绍 动态跟踪 防动态跟踪 动态跟踪是使用1号3号中断 跟踪执行程序运行的方法 防动态跟踪 是在使用debug codeview soft ice trw2000进行动态跟踪时 使得跟踪方法难以进行 破坏debug的基本方法 抑制跟踪中断DEBUG的T和G命令分别要运行系统的单步中断和断点中断服务程序 在系统向量表中这两个中断的中断向量分别为1和3 中断服务程序的入口地址分别存放在0000 0004和0000 000C起始的4个字节中 因此 当这些单元中的内容被修改后 T和G命令将无法正常执行 破坏debug的基本方法 具体实现方法 将这些单元作为堆栈使用在这些单元中送入软件运行的必要数据 将软件中某个子程序的地址存放在这些单元中 当需要调用时使用INT1和INT3指令来代替CALL指令 放入惩罚性程序的入口地址 封锁键盘输入在加密系统无须从键盘或屏幕输入 输出信息时 关闭这些外围设备 以破坏跟踪调试软件的运行环境 改变键盘中断服务程序 BIOS的键盘I O中断服务程序的入口地址禁止键盘中断禁止接收键盘数据不接受指定键法 比如T P G等DEBUG键 破坏debug的基本方法 设置显示器的显示性能当加密系统无需在屏幕上显示信息时 可以通过各种方法关闭屏幕 这样可使解密者无法得到跟踪调试软件返回的任何信息 以阻止解密者对加密系统的破译 封锁屏幕显示 可以重新设置屏幕特性 将前景和背景色彩置成同一种颜色 使解密者在跟踪期间无法看见调试信息通过获取屏幕信息的检查加密系统是否处于被监控状态修改显示器I O中断服务程序的入口地址定时清屏直接对视屏缓冲区操作 破坏debug的基本方法 DEBUG等跟踪调试软件在运行时大量地使用了DOS提供的各类中断 不仅如此 比DEBUG功能更强大 甚至针对反跟踪技术设计的高级反反跟踪调试软件也调用了DOS中断 典型的例子就是使用其它中断来代替断点中断的反反跟踪技术 破坏中断向量表显然可以从根本上破坏一切跟踪调试软件的运行环境 以达到 以不应万变 的最终目的 主动检测跟踪法 当解密者利用各种跟踪调试软件对加密系统分析执行时 势必会造成许多与正常执行加密系统不一致的地方 如运行环境 中断入口和时间差异等等 如果在反跟踪技术中对不一致的地方采取一定的措施 也同样可以起到保护加密系统的目的 实现这种方法的关键在于以下两个方面 一是检测加密系统是否被跟踪 二是检测到被跟踪后如何进行处理 前一个方面的实现主要依靠加密者对DOS内核和跟踪调试软件的深入了解 后者则一般是一种死循环 启动机器或提示非法跟踪并停止运行的程序 乃至惩罚性程序 主动检测跟踪法 定时检测法一个程序在正常运行和被跟踪运行时 所花的时间是大不相同的 可以想象一个被跟踪运行的程序往往要花费极长的时间 反跟踪技术抓住这个特点 根据执行时间的长短来判断是否被跟踪 偶尔检测法在加密系统中加入判断时间的功能 并且当时间满足某一条件时再对加密系统中的关键部位进行判断 如果关键部位不存在或发现了变化则可判定加密系统已经被破坏 应立即做出相应的反应 主动检测跟踪法 利用时钟中断法在反跟踪技术中利用时钟中断可以定时检查前台任务执行的情况 如果发现前台的程序被非法跟踪调试 可以立即采取相应的措施 也可以对中断向量表作定时检查 计算程序执行时间 密文的译码操作和前面说到的定时清屏等等PSP法每个程序在执行时都必须建立对应的程序段前缀PSP 当程序未被跟踪执行时 PSP中14H与16H开始的两个字节是相同的 当被跟踪运行时 这些内容就不会相同 主动检测跟踪法 中断检测法一个执行的程序如未被跟踪 则INT1和INT3的入口地址相同 且都为哑中断 如被跟踪则相反 所以通过检测INT1和INT3的入口地址即可判断是否被跟踪 设置堆栈指针法 跟踪调试软件在运行时 会产生对堆栈的操作动作 比如 保存断点 因而在反跟踪技术中对于堆栈指针的运用就显得相当重要了 比如对堆栈指针的值进行设计 并力求使设计的结果具备一定的抗修改性 以免解密者通过再次修改堆栈指针的值来达到继续跟踪的目的 设置堆栈指针法 将堆栈指针设到ROM区 只读存储区ROM是无法保存数据的 堆栈指针如果指向ROM区域 势必不能保存数据 这将会使跟踪调试无法继续进行下去 设在程序段中 堆栈指针如果设在将要执行的程序段中 那么任何的堆栈操作都会破坏程序代码 使程序不能正常运行 设在中断向量表内 INT1和INT3是反跟踪技术一定要破坏的中断 所以将堆栈指针设在内存的低地址段内 既可以进行少量的堆栈操作 跟踪调试软件一般需要大量的堆栈来存放数据 还可以破坏单步和断点中断的入口地址 设置堆栈指针法 将堆栈指针移作它用 如果确认没有堆栈操作的话 可以将堆栈指针拿来做其它用途 如保存经常要更换的数据 这样就可以使堆栈指针的值经常更换 从而使它根本无法保存数据 前提条件 要保证将要执行的程序段不能进行有效的堆栈操作 在要进行堆栈操作时 必须首先恢复正确的堆栈指针 代码加密法 对程序分块加密执行为了防止加密程序被反汇编 加密程序最好以分块的密文形式装入内存 在执行时由上一块加密程序对其进行译码 而且在某一块执行结束后必须立即对它进行清除 这样在任何时刻内不可能从内存中得到完整的解密程序代码 这种方法除了能防止反汇编外还可以使解密者无法设置断点 从而从一个侧面来防止动态跟踪 代码加密法 对程序段进行校验对一个加密程序的解密工作往往只是对几个关键指令的修改 因此对程序段特别是关键指令的保护性校验是十分必要的 这样可以防止解密者对指令进行非法篡改 具体方法有累计 累减 累或和异或和程序段等方法 代码加密法 迷惑 拖垮解密者在加密系统中多多设置专门针对解密者的 陷阱 设置大循环废指令法 在加密程序中设置适当的无用程序段程序自生成技术 程序的自生成是指在程序的运行过程中 利用上面的程序来生成将要执行的指令代码 并在程序中设置各种反跟踪措施的技术 代码加密法 指令流队列法CPU为了提高运行速度 专门开辟了一个指令流队列 以存放将要执行的指令 流水 在程序正常执行时 其后续指令是存放在指令流队列中的 而跟踪调试程序时因为它牵涉到动态修改程序指令代码 包括后续指令 的原因 所以无论后续指令是否被存放在指令流队列中 被修改的指令都将被执行 包括后续指令 这一点和程序正常执行时是相反的 因为正常执行时 CPU只从指令流队列中读取指令 即使后续指令刚刚被正在执行的指令修改过 举例 JMPS2S1 JMPS1 死循环S2 LEASI S1LEADI S3PUSHCSPUSHCSPOPDSPOPESCLDLODSWSTOSW设计在S3处存放S1处的指令 如果在正常执行时 由于S3处的其它指令已经被存入指令流队列中 所以它会正常运行 反之则执行S1处的死循环指令 逆指令流法指令代码在内存中是从低地址向高地址存放的 CPU执行指令的顺序也是如此 这个过程是由硬件来实现的 而且这个规则已经被人和跟踪调试软件牢牢接受 针对这个方面逆指令流法特意改变顺序执行指令的方式 使CPU按逆向的方式执行指令 这样就使得解密者根本无法阅读已经逆向排列的指令代码 从而阻止解密者对程序的跟踪 其他防跟踪方法 混合编程法因为高级编译语言的程序可读性本身就较差 如编译过的BASIC COBOL程序等 如果再将几种高级语言联合起来编写使用 一定会极大的降低程序的可读性 自编软中断13技术由于反拷贝技术制作的指纹一般都存在于软盘上 所以现在的磁盘加密系统都存在着一个明显的外部特征 即都要通过调用INT13来判断软盘上指纹的真伪 于是必须恢复中断表的内容 这就过早地暴露了自己的弱点内存翻卷技术对内存进行数据存取 采用内存翻卷 进行寻址操作时 如果数据地址的值超过地址空间 则从0000 0000开始计算 软件反跟踪技术 动态跟踪 防动态跟踪破坏debug的基本方法主动检测跟踪法代码加密法其他防跟踪方法小结软件防跟踪编程技巧反跟踪程序例子常用工具介绍 反跟踪程序例子 示例程序是破坏单步中断和带断点的中断的反跟踪程序 可以将此程序安排在加密程序的适当位置上 当程序没有被执行时 计算机的跟踪功能不变 而当程序被执行后 系统的跟踪功能被修改 如果此时再使用跟踪命令 不论是单步跟踪是带断点跟踪 都会对正常程序的运行造成混乱 甚至造成系统的死锁 这样 只要加密程序被执行 跟踪行为就被阻止 反跟踪程序例子 编写原理 因为跟踪调试程序软件不外乎使用计算机单部及断点的中断功能 具体是调用INT01H和INT03H实现的 而INT01H是单部中断 INT03H是断点中断 本程序通过修改INT03H的中断处理功能 但是仍保留单部中断功能 常用工具介绍 SoftICE是目前公认最好的跟踪调试工具 使用它可以很容易的跟踪一个软件 或是监视软件产生的错误进行除错 你甚至可以用他来替代C语言的调试器 如果你不喜欢使用C语言自己的调试器的话 其有几种平台的版本 DOS WINDOW3 1 WIN95 98 2000 NT Trw2000是中国人自己编写的调试软件 完全兼容SOFTICE各种指令 但现在许多软件能检测SoftICE存在 而TRW2000在这方面就好多了 TRW2000有它自己的独特方面 是针对破解软件优化的 Windows下的跟踪调试程序 跟踪功能更强 可以设置各种断点 只是断点种类更多 它可以象一些脱壳工具一样完成对加密外壳的去除 自动生成EXE文件 只是留给用户更多的选择 在DOS下的版本为TR 常用工具介绍 Wdasm8 93反汇编的工具 它可方便反汇编程序 能静态分析程序流程 也可动态分析程序 操作简单 是破解必备工具之一 Hiew一个十六进制工具 它除了普通十六进制的功能外 它还有个特色 能反汇编文件 并可以用汇编指令修改程序 常用工具介绍 SmartcheckVB程序执行时从本质上讲是解释执行VB的exe是伪代码 程序都在vbXXX dll里面执行SmartCheck的出现 大大方便了我们 它可将VB程序执
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年职业技能鉴定-铁路职业技能鉴定-货运员(初级工)历年参考题库含答案解析(5套)
- 2025年综合评标专家-黑龙江-黑龙江综合评标专家(工程监理类)历年参考题库含答案解析(5套)
- 热电厂生产工艺培训课件
- 热浸镀锌基础知识培训
- 职专园艺考试题及答案
- 烧烤摊防火安全知识培训课件
- 烤红薯美育课件
- 存款保险知识培训总结课件
- 烟厂基础知识培训课件小结
- 陕西省华阴市2025年上半年事业单位公开招聘教师岗试题含答案分析
- 实验中学初一新生分班考试数学试卷附答案
- 区治安巡防队员面试题
- 施工组织设计施工总体部署完整版
- TUPSW微机控制电力专用不间断电源(UPS)系统使用说明书
- 骨质疏松诊治与中医药
- LY/T 2383-2014结构用木材强度等级
- GB/T 528-2009硫化橡胶或热塑性橡胶拉伸应力应变性能的测定
- 中日关系历史
- GB/T 15171-1994软包装件密封性能试验方法
- 2023年江苏省中学生生物学竞赛(奥赛)初赛试题和答案
- 信息系统运维服务方案
评论
0/150
提交评论