【问题标题】:Decompile raw binary code to assembly将原始二进制代码反编译为程序集
【发布时间】:2017-08-06 03:46:15
【问题描述】:

我有二进制代码,我想反汇编成汇编。此代码不是结构化 exe 或 dll 文件的一部分,因此 objdumpgdb 无法识别它。

如何将它拆开组装?

【问题讨论】:

  • 你知道这段代码的格式吗?它是哪个平台/架构等的二进制文件?
  • 是的,这是 Windows 代码。这段代码复制到VirtualAlloc分配的内存,然后用CreateThread Win32 API调用运行
  • 所以我的想法是添加适当的 win exe 头文件等以使其成为 PE format 然后即使不是 100% PE 尝试使用例如反汇编它PE Explorer,但我之前没有测试过。
  • 谢谢,但 PE Explorer 似乎无法做到这一点
  • 我不知道你的正常编码平台是什么,但如果我处于你的情况,我可能会只用一个 db 语句创建一个虚拟 asm 例程并将二进制代码放在那里。然后,我将使用调试器进入其中,并让 IDE 向我展示它所代表的内容。祝你好运。

标签: reverse-engineering decompiling


【解决方案1】:

GDB 和objdump 依赖 System V ELF 二进制文件中的部分信息来反汇编它们。换句话说,为了使gdbobjdump 工作,要分析的代码必须是ELF 二进制文件,并且该二进制文件必须有一个完整的节头表来准确描述二进制文件的布局。

如何反编译成汇编?

反编译是从二进制文件重构源代码。反汇编是将 CPU 指令翻译成汇编语言。

我有二进制代码,我想反汇编成汇编。

如果您有要反汇编的机器代码并且代码的指令集架构已知,那么Capstone disassembly framework 可能会有所帮助。这是一个使用 python 绑定的演示:Python tutorial for Capstone.

Radare2 是另一种选择。

如果这没有帮助,StackExchange 上有一个 reverse engineering 站点,您更有可能找到所需的确切信息。

【讨论】:

    【解决方案2】:

    你可以试试radare2。首先,阅读文件。如果您有问题,请联系社区。非常有共鸣。

    您可以使用 r2 获取二进制文件的信息:

    r2 -A ./Binary r2>>> iI ## for binary information

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 2017-05-03
      • 2015-02-14
      相关资源
      最近更新 更多