我有一个二进制文件,我首先用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
发布于 2017-03-24 02:37:53
您可以使用十六进制编辑器或补丁工具将更改应用于原始二进制文件(您可以将--file-offset参数传递给objdump,让它告诉您正在修改的偏移量的实际文件位置)。
当然,您总是可以去掉地址和十六进制,然后使用您选择的汇编程序重新汇编代码,但您仍然有一个问题,即如何将其修补到原始二进制文件中(据推测,原始二进制文件中包含的内容不仅仅是上面显示的部分)。
https://stackoverflow.com/questions/42982379
复制相似问题