反汇编器是如何工作的?

逆向工程 拆卸 部件 反汇编者
2021-07-04 14:33:23

我对此有 2 个问题,但如果您愿意,请随时详细说明,我对这个主题非常感兴趣:

  1. 他们真的只是逐字节读取直到获得有效指令吗?他们如何知道这是否是有效的指令以及它是哪个?我不认为他们只是将每条指令都存储在一个表中,因为那会非常低效。

  2. 在网上找到了这个来源,我认为它大约有 700 行(https://github.com/btbd/disassembler/blob/master/disassembler.c)。如果这样的事情是可能的,为什么还有其他人拥有更多的代码和逻辑?

谢谢!

1个回答

两种主要的反汇编方法是

  1. 线性扫描- 将出现在通常为机器代码保留的可执行文件.text部分(例如ELF 二进制文件的部分)中的所有字节解码为机器代码
  2. 递归遍历- 考虑被反汇编程序的控制流行为,以确定要反汇编的内容

每个都有其优点和缺点。更多信息可以在重新访问可执行代码的反汇编中找到

以下研究报告对开发反汇编程序所涉及的内容进行了探索:

多架构反汇编程序的(漫长)之旅