反汇编器、调试器和反编译器有什么区别?

逆向工程 拆卸 反编译 二元分析 调试器
2021-07-03 07:50:31

我听说过像 IDA 这样的反汇编器和像 OllyDbg 这样的调试器,但老实说,当你给它们一个二进制文件时,它给了我汇编代码。我知道如果您提供二进制文件,反编译器会提供源代码。但是,我不知道它们在操作模式方面有何不同,我问自己诸如“为什么可以反编译 android/python 代码而只能反汇编 C 代码?”这样的问题。

谁能给出这 3 种工具之间的精确区别?

2个回答

这些术语目前在本网站上定义如下:

反汇编器

反汇编器是一种软件工具,可将机器代码转换为人类可读的助记符表示,称为汇编语言。

调试器

调试器允许用户查看和更改程序的运行状态。

反编译器

用于恢复编译过程的软件。反编译器以二进制程序文件为输入,输出以结构化的高级语言表示的相同程序。

我想添加以下定义以避免任何疑问:

反编译器在一个非常重要的方面不同于反汇编器。虽然两者都生成人类可读的文本,但反编译器生成更高级的文本,更简洁,更易于阅读

摘自官方 hex-rays 文档

结论是,与反汇编器相比,反编译器缓解了这两个问题:它们的输出更短且重复性更低。