2022年最佳的9种逆向工程工具[持续更新]

逆向是复杂的。然而,软件开发人员经常在面临一项具有挑战性的任务时转向反向工程:增强软件安全性、使软件与第三方组件兼容、维护遗留代码,等等。

在本文中,我们将描述我们的软件逆向程序在工作中所依赖的主要工具,并展示如何使用这些工具的实际示例。本文对于熟悉汇编语言和网络交互原则的读者以及具有使用API函数进行Windows编程的经验的读者非常有用。

1. IDA Pro,Hex Rays

IDA Pro是最好和最受欢迎的逆向工程软件工具之一。它是一种交互式反汇编程序,具有内置命令语言 ( IDC ),并支持多种处理器和操作系统的多种可执行格式。IDA Pro 还有大量的插件可以进一步扩展反汇编器的功能。

IDA Pro 的主要优点是它允许您以交互方式更改显示数据的任何元素:

  • 给函数、变量、数据结构等命名。
  • 更改数据表示(如数字、各种编码的字符串、数据结构)
  • 搭建图表和代码流程图,简化对反汇编代码的理解
  • 使用 C++ 中有关函数参数和结构定义的类型信息,以便自动命名参数和变量
  • 自动识别和命名汇编代码中的标准库函数
  • 以及更多

2022年最佳的9种逆向工程工具[持续更新]_第1张图片

截图 1.IDA Pro 界面

除了反汇编器本身,让我们也仔细看看一些 IDA 插件。

  • Hex-Rays 反编译器
  • 这个插件可以将原生处理器代码变成更易读的、类似 C 的版本。Hex-Rays Decompiler 生成的 C 代码相当准确,可与人类逆向工程师生成的代码相媲美。无论架构如何,它都能正确反编译由各种 C++ 编译器生成的代码。但是,Hex-Rays Decompiler 在处理复杂的汇编代码时可能会出现问题,其中原始代码是通过添加内联汇编或进行一些手动优化来专门修改的。 
  • Lighthouse
  • 该插件使您能够标记反汇编程序中的执行路径。因此,您可以了解哪些代码段参与了执行,以及它们是否涉及某些算法或功能。
  • 基本上,这个插件将代码覆盖工具的报告加载到 IDA 数据库中,并根据代码的执行次数标记代码片段。这使得在浏览反汇编时可以清楚地看到代码的哪一部分值得您注意。
  • ClassInformer
  • 此插件旨在用于 Visual Studio 构建的二进制文件,并搜索存储在可执行文件数据部分中的 RTTI 信息。RTTI 信息允许插件查找 C++ 类的类名和虚拟方法,并为用户命名。此外,ClassInformer 可以为您提供找到的类的列表。
  • BinDiff 由 zynamix
  • 该工具使用 IDA 引擎将二进制文件作为汇编代码而不是字节流进行比较。BinDiff 可以将同一程序的两个版本的代码差异确定为添加、删除或替换的指令列表。更改也可以表示为代码流图。
  • IDA-功能标注器
  • 该插件分析导入的函数和调用它们的函数,然后按标签对它们进行分组:密码学相关、注册表相关、网络相关等。这样的分组可以更容易地找到负责特定操作的代码部分。
  • ida-x86emu
  • 该插件模拟反汇编代码的执行,而无需在调试器中运行正在分析的应用程序。使用此插件,您可以模拟执行任何代码的结果,而无需修改系统中的某些内容。您需要做的就是指定 CPU 寄存器的起始值。然后,您可以逐步执行。

2. CFF Explorer

CFF Explorer是一套用于可移植可执行 (PE) 编辑的工具,其中包括:

  • PE 和 HEX 编辑器
  • 资源编辑器
  • 导入编辑器
  • 签名扫描仪
  • 地址转换器
  • 反汇编器
  • 依赖分析器
  • 和更多

2022年最佳的9种逆向工程工具[持续更新]_第2张图片

截图 2. CFF Explorer 界面

3. API Monitor

API Monitor是一个用于拦截应用程序和服务进行的 API 函数调用的应用程序。该工具还可以显示输入和输出数据。 

默认情况下,API Monitor 包含超过 13,000 个 API 函数和 1,300 多个 COM 接口方法的定义。

2022年最佳的9种逆向工程工具[持续更新]_第3张图片

截图 3. API Monitor 的 API Capture Filter 接口

4.WinHex

WinHex是一个十六进制编辑器,它为 Windows 提供了一组丰富的功能和开发工具。 

WinHex 可以显示软件文件的校验和或代码,这是普通文本编辑器无法做到的。

2022年最佳的9种逆向工程工具[持续更新]_第4张图片

截图 4. WinHex 界面

5. Hiew

Hiew是一个专注于处理代码的二进制文件编辑器。它具有用于 x86、x86-64 和 ARM 的内置反汇编器以及用于 x86 和 x86-64 的汇编器。

Hiew 的主要特点包括:

  • 查看和编辑逻辑和物理驱动器
  • 按模板搜索汇编命令
  • 键盘宏
  • 内置64位计算器
  • 创建自定义插件的工具

2022年最佳的9种逆向工程工具[持续更新]_第5张图片

截图 5. Hiew 界面

6.Fiddler

Fiddler 是一个代理,您可以使用它来拦截在应用程序和服务器之间传输的 HTTP/HTTPS 流量,对其进行监控和分析。Fiddler 可以在系统范围内拦截 HTTP/HTTPS 流量。您还可以添加插件(例如 wbxml 视图,它可以解码 wbxml)并在不同的视图中显示请求/响应。

2022年最佳的9种逆向工程工具[持续更新]_第6张图片

截图 6. Fiddler 界面

Fiddler 有一个内置的十六进制编辑器,可以根据选定的请求生成请求或创建自定义请求。此外,Request to Code 插件允许您准备好在 C#、Visual Basic 或 Python 中执行请求的代码。

7.锡拉

是一个用于转储正在运行的应用程序进程并恢复 PE 导入表的应用程序。在它的帮助下,您可以获得完全恢复的可以由操作系统运行的 PE 文件。

2022年最佳的9种逆向工程工具[持续更新]_第7张图片

截图 7. Scylla 界面。图片来源:堆栈交换

8.重定位部分编辑器

Relocation Section Editor是用于编辑 PE 文件中的重定位表的应用程序。此工具的主要目的是在修补可重定位代码的情况下修改重定位表。但它通常用于在恢复受保护文件时完全删除重定位表。

受保护的文件实际上只包含解包器代码的重定位表。实际代码的重定位表通常隐藏在解包器数据中。因此,如果正在恢复转储,有两种方法可以为真实代码恢复丢失的重定位表: 

  1. 强制将应用程序加载到两个不同的基地址,然后比较转储以查看正在修补的代码部分并制作新的重定位表。
  2. 完全删除重定位表,并在 PE 文件头中指定该文件不可重定位。

2022年最佳的9种逆向工程工具[持续更新]_第8张图片

截图 8. Relocation Section Editor 界面

9. PEID

PEiD 是检测封隔器的最佳逆向工程工具之一。通过分析熵,PEiD 可以检测应用程序是否被打包。

还有各种有用的插件可以帮助分析 PE 文件。例如,KANAL(PEiD 的 Krypto Analyzer)插件分析 PE 文件中是否存在已知的加密算法。

2022年最佳的9种逆向工程工具[持续更新]_第9张图片

截图 9. PEiD 接口

这些是 Apriorit 的逆向工程师在处理 Windows 逆向项目时经常使用的九种工具。如您所见,这些逆向工程软件中的每一个都解决了一组非常独特的特定任务。在下一节中,我们将提供实际示例,展示这些工具中的每一个在 Windows 逆向中的作用和重要性。

你可能感兴趣的:(C++,汇编,逆向,windows)