可以重新设置ELF文件吗?

逆向工程 linux 小精灵
2021-06-16 18:13:35

有没有办法重新设置ELF文件?(我想在 0x40000000 加载一个精灵二进制文件,而不是在 0x08040000 这是典型的基础)

我找到了这个工具(prelink,http://en.wikipedia.org/wiki/Prelink),但它只用于 .so 库。

我试图修改 .text 部分标题的 addr 字段,但没有奏效。

1个回答

简短的回答是否定的,你不能。

中等的答案是:这并不容易。一般情况是不可判定的。

如果您的程序没有被编译为与位置无关,则可能有一些对常量内存地址的引用。特别是一旦您调用外部库中定义的函数,PLT/GOT 机制就会使用已知地址。但是,如果您可以反汇编和分析程序,则可以修复它们。但是决定将 32 位字用作地址还是用作整数是无法确定的。它可能适用于简单的程序,但不要指望让它在没有大量工作的情况下适用于混淆的程序。

我不知道有什么工具可以做到这一点。