修补 PLT 条目

逆向工程 小精灵 拿到 血小板
2021-06-10 09:00:37

我正在阅读这篇 CTF 文章,想知道的比作者愿意解释的要多。

我实际上只是修补了 getenv()、ptrace() 和 sleep() 的 PLT 条目,因为在调试期间睡眠变得非常烦人

我想知道将 PLT 或 GOT 条目直接修补到二进制文件中的最佳方法是什么?

3个回答

你可以使用radare2来做到这一点。首先以“写入”模式打开二进制文件。

radare2 -w ./binaryname

现在你需要寻找你想要修改的地址:

s 0x8048739

假设您希望写出,无论出于何种原因说 5 个 NOP,您可以这样做:

wx 9090909090

最后保存并退出:

q

您可以使用 HxD 或 HIEW 等十六进制编辑器直接修改二进制文件。找到要更改的十六进制字节并查找要更改为的操作码。此外,如果您愿意,您也可以直接从 IDA 进行修补,使用 idapatcher 插件可以更轻松地进行修补。

https://thesprawl.org/projects/ida-patcher/

您可以使用 Pwntools 轻松完成此操作:

from pwn import *

elf = ELF('./your-binary')
elf.asm(elf.symbols.ptrace, 'xor eax, eax; ret')
elf.save('./your-patched-binary')