【问题标题】:Re-assemble assembly code from objdump从 objdump 重新组装汇编代码
【发布时间】:2017-03-24 02:37:52
【问题描述】:

我有一个二进制文件,我首先用 objdump 反汇编如下:

objdump -Mintel -d mybinary

结果看起来是这样的(我只放了一部分,想法是你看样子):

patchme:     format de fichier elf64-x86-64

Déassemblage de la section .init :

00000000004003e0 <_init>:
  4003e0:   48 83 ec 08             sub    rsp,0x8
  4003e4:   48 8b 05 0d 0c 20 00    mov    rax,QWORD PTR [rip+0x200c0d]        # 600ff8 <_DYNAMIC+0x1d0>
  4003eb:   48 85 c0                test   rax,rax
  4003ee:   74 05                   je     4003f5 <_init+0x15>
  4003f0:   e8 3b 00 00 00          call   400430 <__gmon_start__@plt>
  4003f5:   48 83 c4 08             add    rsp,0x8
  4003f9:   c3                      ret   

我修改了汇编代码(以及相关的十六进制值)。我想知道是否有一种简单的方法可以将此代码重新组装成二进制文件?就像一个执行它的命令。

谢谢!

PS:我知道我可以将每个十六进制转换为二进制并将它们连接起来......但这需要做很多工作:-p

【问题讨论】:

    标签: assembly binary x86 intel


    【解决方案1】:

    您可以使用十六进制编辑器或补丁工具将您的更改应用到原始二进制文件(您可以将 --file-offset 参数传递给 objdump,让它告诉您正在修改的偏移量的实际文件位置)。

    当然,您总是可以只去掉地址和十六进制,然后使用您选择的汇编程序重新汇编代码,但是您仍然有如何将其修补到原始二进制文件中的问题(大概是不仅包含您在上面显示的部分)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-07
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多