第十三章 软件反跟踪技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
反跟踪程序例子 常用工具介绍
院
3
软件分析技术概述
• 在进行软件的破解、解密以及计算机病毒分析工 作中,一个首要的问题是对软件及病毒进行分析。 • 这些软件都是机器代码程序,对于它们分析必须 使用静态或动态调试工具,分析跟踪其汇编代码。
软 件 学
院
4
软件分析技术概述
• 从软件使用说明和操作中分析软件
院
22
软件反跟踪技术
• 动态跟踪、防动态跟踪
软 件 学
– – – – – –
破坏debug的基本方法 主动检测跟踪法 代码加密法 其他防跟踪方法 小结 软件防跟踪编程技巧
• 反跟踪程序例子 • 常用工具介绍
院
23
动态跟踪、防动态跟踪
• 动态跟踪是使用1号3号中断,跟踪执行程序运行 的方法。 • 防动态跟踪,是在使用debug,codeview,soft-ice, trw2000进行动态跟踪时,使得跟踪方法难以进行。
软 件 学
院
29
主动检测跟踪法
定时检测法
– 一个程序在正常运行和被跟踪运行时,所花的 时间是大不相同的,可以想象一个被跟踪运行 的程序往往要花费极长的时间,反跟踪技术抓 住这个特点,根据执行时间的长短来判断是否 被跟踪。
偶尔检测法
软 件 学
– 在加密系统中加入判断时间的功能,并且当时 间满足某一条件时再对加密系统中的关键部位 进行判断,如果关键部位不存在或发现了变化 则可判定加密系统已经被破坏,应立即做出相 应的反应
• 封锁屏幕显示:可以重新设置屏幕特性,将前景和背 景色彩置成同一种颜色,使解密者在跟踪期间无法 看见调试信息 • 通过获取屏幕信息的检查加密系统是否处于被监控 状态 • 修改显示器I/O中断服务程序的入口地址 • 定时清屏 • 直接对视屏缓冲区操作
27
软 件 学
院
破坏debug的基本方法
• DEBUG等跟踪调试软件在运行时大量地使用了 DOS提供的各类中断,不仅如此,比DEBUG功能 更强大,甚至针对反跟踪技术设计的高级反反跟 踪调试软件也调用了DOS中断,典型的例子就是 使用其它中断来代替断点中断的反反跟踪技术。 • 破坏中断向量表显然可以从根本上破坏一切跟踪 调试软件的运行环境,以达到"以不应万变"的最 终目的
软 件 学
院
28
主动检测跟踪法
• 当解密者利用各种跟踪调试软件对加密系统分析执行时, 势必会造成许多与正常执行加密系统不一致的地方,如运 行环境、中断入口和时间差异等等。如果在反跟踪技术中 对不一致的地方采取一定的措施,也同样可以起到保护加 密系统的目的。 • 实现这种方法的关键在于以下两个方面:一是检测加密系统 是否被跟踪,二是检测到被跟踪后如何进行处理,前一个 方面的实现主要依靠加密者对DOS内核和跟踪调试软件的 深入了解,后者则一般是一种死循环、启动机器或提示非 法跟踪并停止运行的程序, 乃至惩罚性程序。
7
软件分析技术概述
• 如何进行动态跟踪分析?
– 对软件进行粗跟踪
• 所谓粗跟踪,即在跟踪时要大块大块地跟踪,也就 是说每次遇到调用CALL指令、重复操作指令REP, 循环操作LOOP指令以及中断调用INT指令等,一般 不要跟踪进去,而是根据执行结果分析该段程序的 功能。
软 件 学
– 对关键部分进行细跟踪
• 对软件进行了一定程度的粗跟踪之后,便可以获取 软件中我们所关心的模块或程序段,这样就可以针 对性地对该模块进行具体而详细地跟踪分析。 • 一般情况下,对关键代码的跟踪可能要反复进行若 干次才能读懂该程序,每次要把比较关键的中间结 果或指令地址记录下来,这样会对下一次分析有很 大的帮助。 8
院
软件反跟踪技术
Exe文件头格式为:
偏移量 00h-01h 2h-03h 04h-05h 06h-07h 意义 MZ,为EXE文件 标记 文件长度除512的 余数 文件长度除512的 商 重定位项的个数 文件头除16的商 程序运行所需最小 段数 程序运行所需最大 段数 偏移量 0eh-0fh 10h-11h 12h-13h 14h-15h 16h-17h 18h-19h 1ah-1bh 1ch 意义 堆栈段的段值(SS) SP 文件校验和 被装入模块入口IP 值 被装入模块入口的 CS 第一个重定位项的 位移 覆盖号
10
院
反跟踪技术
• 作为反拷贝技术的保护者反跟踪技术是整个磁盘 加密技术中最能显示技术水平的部分,如果它稍 有漏洞就会影响到整个磁盘加密技术的可靠性。
软 件 学
院
11
反跟踪技术
• 一个有效的反跟踪技术应该具有3大特性:
– 重要程序段是不可跳越和修改的
• PROLOK的解密过程是通过修改判读指纹的 程序段来实现的,这其实是激光加密系统中 反跟踪技术的一个败笔,一个有效的反跟踪 技术应该对加密系统中的某些甚至全部程序 段进行保护,如果这其中有内容被修改,将 导致出错 • 主要方法有累计、累或和异或和程序段等方 法 • 同时还要保证重要程序段一定要被执行,方 法主要有加密程序分段加密,运行时逐层解 密,逐层清除的方法,即只有运行了重要的 程序段,才能将下一层程序代码从密码形式 12 转换成明码形式
30
院
主动检测跟踪法
利用时钟中断法
软 件 学
– 在反跟踪技术中利用时钟中断可以定时检查前 台任务执行的情况,如果发现前台的程序被非 法跟踪调试,可以立即采取相应的措施,也可 以对中断向量表作定时检查、计算程序执行时 间、密文的译码操作和前面说到的定时清屏等 等
21
静态跟踪、防静态分析、反防静态分析
软 件 学
• 反防静态分析是针对防静态分析而应用的技术,主要使用 动态跟踪方法,通过跟踪程序的运行,寻找真实判定正版 处的跳转,修改代码,使得先解密,忽略判定条件,直接 执行程序体。 一种较为高级防静态分析方法,是后续模块需要前面的模块运 行结果,仅仅看代码是无法了解程序控制流,这样可以防 止破解者阅读程序。另外的方法还有程序自行初始化,不 使用系统重定位的方法,也破坏汇编代码的解释。
– 欲破解软件,首先应该先使用该软件,了解一 下功能是否有限制,最好阅读一下软件的说明 或手册,特别是自己所关心的关键部分的使用 说明,这样也许能够找点线索。
• 静态反汇编
软 件 学
院
– 所谓静态分析即从反汇编出来的程序清单上分 析。 – 大多数软件在设计时,都采用了人机对话方式, 所以提示信息入手进行分析。 – crack时常用的静态分析工具是W32DASM和 5 HIEW等。
软 件 学
院
反跟踪技术
– 不通过加密系统的译码算法,密码不可 破译:
• 为塑造一个封闭的加密系统,杜绝使用外调 自编子程序甚至手工转换密码,规定只能由 加密系统的译码程序来转换密码; 软 件 学
– 加密系统是不可动态跟踪执行的
• 动态跟踪是对加密系统的窥视,所以反跟踪 技术应该绝对禁止对加密系统的动态跟踪。
17
软 件 学
08h-09h 0ah-0bh 0ch-0dh
院
可变保留区
执行程序结构
• Exe文件装载过程是
– – – –
确定内存起始段 确定长度 读exe文件到内存 根据重定位表对内存的exe文件体进行重定位
• • • • • 取出重定位项中的段值 段值加起始段=实际段值 加偏移量得到程序体的一个字 取出该字,加上起始段值 写回内存原来位置
6
院
软件分析技术概述
• 为什么需要动态跟踪分析?
软 件 学
院
– 许多软件在整体上完成的功能,一般要分解成 若干模块来完成,而且后一模块在执行时,往 往需要使用其前一模块处理的结果,这一结果 我们把它叫中间结果。如果我们只对软件本身 进行静态地分析,一般是很难分析出这些中间 结果的。 – 有许多软件在运行时,其最初执行的一段程序 往往需要对该软件的后面各个模块进行一些初 始始化工作,而没有依赖系统的重定位。 – 有许多加密程序为了阻止非法跟踪和阅读,对 执行代码的大部分内容进行了加密变换,而只 有很短的一段程序是明文。加密程序运行时, 采用了逐块解密,逐块执行和方法
院
13
软件反跟踪技术
软件分析技术概述 加密反跟踪技术
– 跟踪技术 – 反跟踪技术
软 件 学 执行程序结构 静态跟踪、防静态分析、反防静态分析
院
14
执行程序结构
• 在微机上主要可执行程序是COM格式与EXE格式。 • COM文件结构是程序在一个段中,无堆栈,长度小于64k, 在程序头预留100h字节,在偏移为100h处是可执行代码。 • COM文件加载过程为:
软 件 学
院
20
静态跟踪、防静态分析、反防静态分析
• 防静态分析技术主要有:
软 件 学
院
Βιβλιοθήκη Baidu
– 将程序放在隐蔽的位置:将程序某段或 者某字节放置到其他位置,使得反汇编 结果无法正确运行。而在正常运行中, 有合适的机制将真实的代码拼凑完整。 例如EXE头文件转移,再如文件头放在 特殊的地方。 – 对程序代码进行变换:以密文形式存在 执行文件中。被加密的程序不能执行, 必须先解密,关键在于密码对代码段的 加密。
软件分析技术概述
• 动态跟踪分析
软 件 学
– 虽然从静态上可以了解程序的思路,但 是并不可能真正了解地了解软件的细节, 如静态分析找不出线索,就要动态分析 程序 – 另外,碰到压缩程序,静态分析就无能 为力了,只能动态分析了 – 所谓动态分析是利用SOFTICE或 TRW2000一步一步地单步执行软件。
软 件 学
– 在可用内存低端建立程序段前缀psp,长度100h – Psp上方读入com文件 – Pc=psp+100h
院
15
执行程序结构
• Exe文件结构包括:
– 文件头
• 格式化区 • 重定位表
– 程序体
软 件 学 • 代码段 • 数据段 • 堆栈段 • Exe文件的长度可以大于64k。
16
院
25
院
破坏debug的基本方法
– 具体实现方法:
• 将这些单元作为堆栈使用 • 在这些单元中送入软件运行的必要数据; • 将软件中某个子程序的地址存放在这些单元中,当 需要调用时使用INT1和INT3指令来代替CALL指令; • 放入惩罚性程序的入口地址。 • 封锁键盘输入
– 在加密系统无须从键盘或屏幕输入、输出信息 时,关闭这些外围设备,以破坏跟踪调试软件 的运行环境: 软 件 学
• 改变键盘中断服务程序、BIOS的键盘I/O中断服务程 序的入口地址 • 禁止键盘中断 • 禁止接收键盘数据 • 不接受指定键法(比如T,P,G等DEBUG键)
26
院
破坏debug的基本方法
• 设置显示器的显示性能
– 当加密系统无需在屏幕上显示信息时,可以通 过各种方法关闭屏幕,这样可使解密者无法得 到跟踪调试软件返回的任何信息,以阻止解密 者对加密系统的破译:
• 软件分析技术概述 • 加密反跟踪技术
– 跟踪技术 – 反跟踪技术
软 件 学 • 执行程序结构 • 静态跟踪、防静态分析、反防静态分析
院
9
加密反跟踪技术
• 跟踪技术
软 件 学
– DOS中的动态跟踪调试软件DEBUG – 单步中断和断点中断 – 通过对单步中断和断点中断的合理组合, 可以产生强大的动态调试跟踪功能,这 就对磁盘加密技术造成了巨大的威慑, 所以破坏单步中断和断点中断,在反跟 踪技术中就显得十分必要,成为反跟踪 技术中的"必修课"。
软 件 学
– 初始化寄存器 – 控制权转移,开始执行
18
院
软件反跟踪技术
• 软件分析技术概述 • 加密反跟踪技术
– 跟踪技术 – 反跟踪技术
软 件 学 • 执行程序结构 • 静态跟踪、防静态分析、反防静态分析
院
19
静态跟踪、防静态分析、反防静态分析
• 静态跟踪,使用反汇编程序将可执行程序转换为 汇编程序,阅读汇编程序以获得原始信息的方法。 • 防静态跟踪是将关键代码变形,使得反编译结果 不知所云的技术。防静态分析,必须防止从反汇 编的程序清单入手分析的方法,必须防止用户对 代码的静态分析与阅读。
软 件 学
院
24
破坏debug的基本方法
• 抑制跟踪中断
软 件 学
– DEBUG的T和G命令分别要运行系统的 单步中断和断点中断服务程序,在系统 向量表中这两个中断的中断向量分别为1 和3,中断服务程序的入口地址分别存放 在0000:0004和0000:000C起始的4个字节 中。 – 因此,当这些单元中的内容被修改后, T和G命令将无法正常执行
第十三章 软件反跟踪技术
程维
软 件 学
院
1
软件反跟踪技术
软件分析技术概述 加密反跟踪技术
– 跟踪技术 – 反跟踪技术
软 件 学 执行程序结构 静态跟踪、防静态分析、反防静态分析
院
2
软件反跟踪技术
动态跟踪、防动态跟踪
软 件 学
– – – – – –
破坏debug的基本方法 主动检测跟踪法 代码加密法 其他防跟踪方法 小结 软件防跟踪编程技巧