- 献词
- 致谢
- 前言
- 第一部分 IDA 简介
- 第 1 章 反汇编简介
- 第 2 章 逆向与反汇编工具
- 第 3 章 IDA Pro 背景知识
- 第二部分 IDA 基本用法
- 第 4 章 IDA 入门
- 第 5 章 IDA 数据显示窗口
- 第 6 章 反汇编导航
- 第 7 章 反汇编操作
- 第 8 章 数据类型与数据结构
- 第 9 章 交叉引用与绘图功能
- 第 10 章 IDA 的多种面孔
- 第三部分 IDA 高级应用
- 第 11 章 定制 IDA
- 第 12 章 使用 FLIRT 签名来识别库
- 第 13 章 扩展 IDA 的知识
- 第 14 章 修补二进制文件及其他 IDA 限制
- 第四部分 扩展 IDA 的功能
- 第 15 章 编写 IDA 脚本
- 第 16 章 IDA 软件开发工具包
- 第 17 章 IDA 插件体系结构
- 第 18 章 二进制文件与 IDA 加载器模块
- 第 19 章 IDA 处理器模块
- 第五部分 实际应用
- 第 20 章 编译器变体
- 第 21 章 模糊代码分析
- 第 22 章 漏洞分析
- 第 23 章 实用 IDA 插件
- 第六部分 IDA 调试器
- 第 24 章 IDA 调试器
- 第 25 章 反汇编器/ 调试器集成
- 第 26 章 其他调试功能
- 附录 A 使用 IDA 免费版本 5.0
- 附录 B IDC/SDK 交叉引用
第 22 章 漏洞分析
在开始本章讨论之前,需要澄清一个问题:IDA 不是一个漏洞发现工具。我们说过,这真是一种解脱!在一些人心中,IDA 似乎具有神奇的力量。许多人似乎认为,仅仅用 IDA 打开一个二进制文件,就能揭示宇宙中的所有秘密;IDA 会自动生成注释,清楚地解释恶意软件的行为;漏洞将会以红色突出显示;如果你在某段使用复活节彩蛋激活的晦涩代码上右击鼠标,IDA 将自动生成入侵代码……。
虽然 IDA 确实是一个功能非常强大的工具,但是,如果没有坐在计算机前的聪明用户(以及一组方便的脚本和插件),它只不过是一个反汇编器/ 调试器而已。作为一种静态分析工具,它只能帮助你确定软件漏洞的位置。最终,你需要运用自己的技能,确定 IDA 是否能够使你更容易地搜索到漏洞。根据我们的经验,IDA 并不是查找新漏洞的最佳工具1 ,但是如果与调试器结合使用,一旦我们发现一个漏洞,它将成为一个最佳工具,可以帮助我们开发破解程序。
1. 通常,与静态分析相比,使用模糊测试往往能够发现更多的漏洞。
在过去几年中,IDA 已经开始在发现现有漏洞时扮演一个新角色。起初,搜索现有漏洞的做法似乎并不寻常,但那是因为我们没有问这个问题:对于这些漏洞,我们到底了解哪些信息?了解这些信息的人又是谁?在闭源、二进制占绝对主导的软件领域,供应商经常发布软件补丁,但并不详细说明这些补丁的作用,以及为什么发布这些补丁。通过对一款软件打过补丁的新版本与未打补丁的旧版本进行差异性分析,我们可以隔离出二进制文件中发生变化的区域。假设这些变化不会无故发生,这种差异性分析技巧能够为我们提供启示,确定之前易受攻击的代码序列。由于搜索范围明显缩小,掌握必要的技能,人们就能够开发出一个示例破解程序,用于未打补丁的系统。实际上,由于微软在发布补丁方面众所周知的“补丁星期二”周期,每个月都有大量安全 研究人员准备静下心来,进行一次差异性分析。
有许多专门讨论漏洞分析的书2 ,在一本专门介绍 IDA 的书中,仅仅一章内容不可能全面描述漏洞分析这一主题。我们将要做的是假定读者熟悉软件漏洞的一些基本概念(如缓冲区溢出),讨论如何使用 IDA 搜索、分析这些漏洞,并最终为这些漏洞开发出破解程序。
2. 例如,参见 Jon Erickson 的 Hacking: The Art of Exploitation, 2nd Edition( http://nostarch.com/hacking2.htm )。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论