我实际上只是修补了getenv(),ptrace()和sleep()的PLT条目,因为在调试过程中睡眠变得很烦人
我想知道的是将PLT或GOT条目直接修补到二进制文件中的最佳方法是什么?
#1 楼
您可以使用radare2来执行此操作。首先以“写入”模式打开二进制文件。radare2 -w ./binaryname
现在您需要查找要修改的地址:
s 0x8048739
假设您希望出于任何原因写出5条NOP,则可以执行以下操作: br />
wx 9090909090
#2 楼
您可以使用HxD或HIEW之类的十六进制编辑器直接修改二进制文件。找到要更改的十六进制字节,并查找要将其更改为的操作码。另外,如果您愿意,也可以直接从IDA进行修补,这可以通过idapatcher插件轻松实现。https://thesprawl.org/projects/ida-patcher/
#3 楼
您可以使用Pwntools轻松完成此操作:from pwn import *
elf = ELF('./your-binary')
elf.asm(elf.symbols.ptrace, 'xor eax, eax; ret')
elf.save('./your-patched-binary')
评论
这是最大错别字而不是eax吗?
–大卫
20 Sep 28 '21:37