PEiD 中报告的 Borland Delphi 6.0-7.0 二进制文件应该使用哪个 IDA Pro 签名?

逆向工程 拆卸 艾达 恶意软件
2021-06-29 02:42:38

我目前正在对 PEiD 报告的用 Borland Delphi 6.0-7.0 编写的二进制文件进行逆向工程。在 IDA Pro 中查看此二进制文件时是否有推荐的签名?我目前正在使用 bds 签名。谢谢 !

3个回答

了解 PEiD 可能识别错误版本的 Delphi 很重要。虽然 Delphi 6/7 非常相似(坦率地说,一直到 Delphi 2007 都非常相似),但您可能正在查看使用 Delphi 2009 或更新版本创建的二进制文件。

这是相关的,因为Delphi 2009 引入了原生 unicode 字符串支持并将泛型类型映射stringUnicodeString默认情况下,这会影响字符串分析。Delphi 2007 及更早版本没有对 unicode 字符串的本机支持。

更复杂的是,Delphi XE2 添加了 64 位编译支持。因此,在处理较新的 Delphi 编译二进制文件时,这可能是相关的。(Delphi 发行版已称为 Delphi 1-7、2005、2006、2007、2009、2010、XE、XE2、XE3、XE4,最新的是 XE5)。BDS 代表“Borland Developer Studio”,尽管 Delphi 后来被称为 CodeGear Delphi,现在正式称为 Embarcadero Delphi。

StackOverflow还有一个很好的答案,它涵盖了不同 Delphi 版本之间的差异。

事实上,在Delphi 和 C++ Builder 路线图上,计划将 Delphi 编译器移至 Clang/LLVM(他们的 iOS 和 Android 编译器目前正在使用 LLVM,但还没有使用 Windows 编译器......)。因此,将这些琐事存储起来以备将来反编译...

我查看了"Detect it Easy" v0.78RDG Packer Detector v0.7.1PEidExeinfo PE 0.0.3.4 Beta,我发现只有Exeinfo PE 可以正确检测到我的 Delphi 2010 编译的可执行文件在此处输入图片说明

进入分析一旦您确定了正确的 Delphi 编译器,事情通常会更容易。Delphi GUI 程序使用称为“VCL”(可视化组件库)的 GUI 框架。只需在 VCL 上进行过滤,即可轻松查找合适的 FLIRT 签名: 在此处输入图片说明

此外,我还喜欢过滤 BDS 上的 FLIRT 签名。在查看 Delphi 二进制文件时,我通常会添加“额外的 atl/ie 库”和“win32 运行时”。

在此处输入图片说明

最后,因为 Delphi 创建本机 Windows 二进制文件,所以我总是确保也添加了 mssdk32 FLIRT 签名。

在此处输入图片说明

祝你好运!

更新

Detect It Easy v0.79 和更新版本可以正确检测到 XE6 的 Delphi 版本

您所指的签名是快速图书馆识别和识别技术,即FLIRTIDA 提供了最常见的 Windows 编译器,以及几个非 Windows 签名。

当二进制文件被打开时,IDA 将尝试应用启动签名文件。显然,代码的入口点足以指示用于给定二进制文件的编译器。如果 IDA 成功确定用于指定二进制文件的编译器,则它将加载相应编译器库的签名文件并将其应用于代码的其余部分。

IDA 附带的签名大部分与专有编译器相关,例如 Microsoft 的 Visual C++ 和 Borland Delphi。但是,对于精确的模式匹配,您需要为库的每个不同版本生成签名文件。

为了克服这个障碍,Hex-Rays 提供了一些工具,允许您从静态库生成自己的签名。Fast Library Acquisition for Identification and Recognition (FLAIR)工具集分发给授权(许可)客户。FLAIR的版本需要对应IDA的版本。签名创建过程很简单:

  1. 获取静态库的副本。
  2. 利用 FLAIR 解析器创建模式文件。
  3. 运行sigmake.exe将模式文件转换为签名文件
  4. 通过复制到IDADIR/sig目录来安装新的签名文件

为了手动应用签名文件,您应该进入文件->加载文件->FLIRT签名文件,这将弹出对话框,其中将所有签名文件安装到IDADIR/sig目录中。选择您要使用的签名,然后单击“确定”。

处理 Delphi 时还有一个强大的工具是 IDR:IDR(交互式 Delphi 重构器)。

您可以导出此工具的结果以与 IDA pro 一起使用。

只是不要忘记为您的二进制文件下载相应的签名http://kpnc.org/idr32/en/download.htm

另见这篇文章