第十三章软件反跟踪技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 有许多软件在运行时,其最初执行的一段程序往往需 要对该软件的后面各个模块进行一些初始始化工作, 而没有依赖系统的重定位。
– 有许多加密程序为了阻止非法跟踪和阅读,对执行代 码的大部分内容进行了加密变换,而只有很短的一段 程序是明文。加密程序运行时,采用了逐块解密,逐 块执行和方法
软件分析技术概述
– 另外,碰到压缩程序,静态分析就无能为力了, 只能动态分析了
– 所谓动态分析是利用SOFTICE或TRW2000一 步一步地单步执行软件。
软件分析技术概述
为什么需要动态跟踪分析?
– 许多软件在整体上完成的功能,一般要分解成若干模 块来完成,而且后一模块在执行时,往往需要使用其 前一模块处理的结果,这一结果我们把它叫中间结果。 如果我们只对软件本身进行静态地分析,一般是很难 分析出这些中间结果的。
软件反跟踪技术
软件分析技术概述 加密反跟踪技术
– 跟踪技术 – 反跟踪技术
执行程序结构 静态跟踪、防静态分析、反防静态分析
加密反跟踪技术
跟踪技术
– DOS中的动态跟踪调试软件DEBUG – 单步中断和断点中断 – 通过对单步中断和断点中断的合理组合,可以
产生强大的动态调试跟踪功能,这就对磁盘加 密技术造成了巨大的威慑,所以破坏单步中断 和断点中断,在反跟踪技术中就显得十分必要, 成为反跟踪技术中的"必修课"。
MZ,为EXE文 0eh-0fh 件标记 文件长度除512 10h-11h 的余数 文件长度除512 12h-13h 的商 重定位项的个数 14h-15h
文件头除16的商 16h-17h
程序运行所需最 18h-19h 小段数 程序运行所需最 1ah-1bh 大段数
1ch
意义
堆栈段的段值 (SS) SP
反跟踪技术
作为反拷贝技术的保护者反跟踪技术是整 个磁盘加密技术中最能显示技术水平的部 分,如果它稍有漏洞就会影响到整个磁盘 加密技术的可靠性。
反跟踪技术
一个有效的反跟踪技术应该具有3大特性:
– 重要程序段是不可跳越和修改的
PROLOK的解密过程是通过修改判读指纹的程序段 来实现的,这其实是激光加密系统中反跟踪技术的 一个败笔,一个有效的反跟踪技术应该对加密系统 中的某些甚至全部程序段进行保护,如果这其中有 内容被修改,将导致出错 主要方法有累计、累或和异或和程序段等方法
– 在可用内存低端建立程序段前缀psp,长度100h – Psp上方读入com文件 – Pc=psp+100h
执行程序结构
Exe文件结构包括:
– 文件头
格式化区 重定位表
– 程序体
代码段 数据段 堆栈段
Exe文件的长度可以大于64k。
Exe文件头格式为:
偏移量
意义
偏移量
00h-01h 2h-03h 04h-05h 06h-07h 08h-09h 0ah-0bh 0ch-0dh
静态反汇编
– 所谓静态分析即从反汇编出来的程序清单上分析。 – 大多数软件在设计时,都采用了人机对话方式,所以
提示信息入手进行分析。 – crack时常用的静态分析工具是W32DASM和HIEW等。
软件分析技术概述
动态跟踪分析
– 虽然从静态上可以了解程序的思路,但是并不 可能真正了解地了解软件的细节,如静态分析 找不出线索,就要动态分析程序
第十三章 软件反跟踪技术
软件反跟踪技术
软件分析技术概述 加密反跟踪技术
– 跟踪技术 – 反跟踪技术
执行程序结构 静态跟踪、防静态分析、反防静态分析
软件反跟踪Baidu Nhomakorabea术
动态跟踪、防动态跟踪
– 破坏debug的基本方法 – 主动检测跟踪法 – 代码加密法 – 其他防跟踪方法 – 小结 – 软件防跟踪编程技巧
– 加密系统是不可动态跟踪执行的
动态跟踪是对加密系统的窥视,所以反跟踪技术应 该绝对禁止对加密系统的动态跟踪。
软件反跟踪技术
软件分析技术概述 加密反跟踪技术
– 跟踪技术 – 反跟踪技术
执行程序结构 静态跟踪、防静态分析、反防静态分析
执行程序结构
在微机上主要可执行程序是COM格式与EXE格式。 COM文件结构是程序在一个段中,无堆栈,长度 小于64k,在程序头预留100h字节,在偏移为 100h处是可执行代码。 COM文件加载过程为:
反跟踪程序例子 常用工具介绍
软件分析技术概述
在进行软件的破解、解密以及计算机病毒 分析工作中,一个首要的问题是对软件及 病毒进行分析。 这些软件都是机器代码程序,对于它们分 析必须使用静态或动态调试工具,分析跟 踪其汇编代码。
软件分析技术概述
从软件使用说明和操作中分析软件
– 欲破解软件,首先应该先使用该软件,了解一下功能 是否有限制,最好阅读一下软件的说明或手册,特别 是自己所关心的关键部分的使用说明,这样也许能够 找点线索。
同时还要保证重要程序段一定要被执行,方法主要 有加密程序分段加密,运行时逐层解密,逐层清除 的方法,即只有运行了重要的程序段,才能将下一 层程序代码从密码形式转换成明码形式
反跟踪技术
– 不通过加密系统的译码算法,密码不可破译:
为塑造一个封闭的加密系统,杜绝使用外调自编子 程序甚至手工转换密码,规定只能由加密系统的译 码程序来转换密码;
如何进行动态跟踪分析?
– 对软件进行粗跟踪
所谓粗跟踪,即在跟踪时要大块大块地跟踪,也就是说每次遇 到调用CALL指令、重复操作指令REP,循环操作LOOP指令 以及中断调用INT指令等,一般不要跟踪进去,而是根据执行 结果分析该段程序的功能。
– 对关键部分进行细跟踪
对软件进行了一定程度的粗跟踪之后,便可以获取软件中我们 所关心的模块或程序段,这样就可以针对性地对该模块进行具 体而详细地跟踪分析。 一般情况下,对关键代码的跟踪可能要反复进行若干次才能读 懂该程序,每次要把比较关键的中间结果或指令地址记录下来, 这样会对下一次分析有很大的帮助。
文件校验和
被装入模块入口 IP值 被装入模块入口 的CS 第一个重定位项 的位移 覆盖号
可变保留区
执行程序结构
Exe文件装载过程是
– 确定内存起始段 – 确定长度 – 读exe文件到内存 – 根据重定位表对内存的exe文件体进行重定位
取出重定位项中的段值 段值加起始段=实际段值 加偏移量得到程序体的一个字 取出该字,加上起始段值 写回内存原来位置
相关文档
最新文档