返回介绍

18.1 未知文件分析

发布于 2024-10-11 21:05:46 字数 1471 浏览 0 评论 0 收藏 0

有无数的文件格式可用于存储可执行代码。IDA 自带了一些加载器模块,可识别许多常见的文件格式,但是,文件格式日益增多,IDA 无法为它们都提供加载器模块。二进制映像可能包含为特定的操作系统而格式化的可执行文件、提取自嵌入式系统的 ROM 映像、提取自闪存更新的固件映像或是提取自网络数据包的机器语言源代码块。这些映像的格式可能取决于操作系统(可执行文件)、目标处理器和系统体系结构(ROM 映像),也可能与任何事物都无关(嵌入在应用层数据中的破解程序 shellcode )。

假设处理器模块能够反汇编未知的二进制文件的代码,那么在告诉 IDA 这个二进制文件的哪些部分代表代码,哪些部分代表数据之前,你需要正确安排文件映像在 IDA 数据库中的位置。对多数处理器而言,使用二进制格式加载一个文件,你将只得到一个文件内容,这些内容构成一个以地址 0 开头的段,如代码清单 18-1 所示。

代码清单 18-1 以二进制模式加载的 PE 文件的前几行

seg000:00000000                 db  4Dh ; M  
seg000:00000001                 db  5Ah ; Z  
seg000:00000002                 db  90h ; É  
seg000:00000003                 db    0  
seg000:00000004                 db    3  
seg000:00000005                 db    0  
seg000:00000006                 db    0  
seg000:00000007                 db    0

有时候,根据所选处理器模块的复杂程度,IDA 可能会进行少量反汇编。例如,如果所选的处理器是一个嵌入式微处理器,能够对 ROM 映像的布局做出假设,这时就会出现上述情况。Andy Whittaker 为那些对这类应用程序感兴趣的读者创建了一个完美的视频教程1 ,说明如何逆向工程 Siemens C166 微处理器应用程序的二进制映像。

1. 参见 http://www.andywhittaker.com/ECU/DisassemblingaBoschME755/tabid/96/Default.aspx

分析二进制文件时,你肯定需要尽可能多地收集与该文件有关的资源。这些资源包括 CPU 参考文献、操作系统参考文献、系统设计文档,以及通过调试或硬件辅助(如逻辑分析器)分析获得的内存布局信息。

在下一节中,为了举例方便,我们假设 IDA 无法识别 Windows PE 文件格式。PE 是一种众所周知的文件格式,许多读者都熟悉它。更重要的是,有大量详细介绍 PE 文件结构的文档可供我们使用,这使得分析任何 PE 文件都会比较简单。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文