假设我有一个32或64位的elf二进制可执行文件。该二进制文件已使用pic / pie选项进行编译。
这意味着所有功能都映射到内存中的随机地址。
如果à需要对这种二进制文件进行检测或逆向工程该怎么办?
有没有一种方法可以挂钩linux二进制加载程序,以便始终提供相同的地址?
谢谢
答案 0 :(得分:0)
这意味着所有功能都映射到内存中的随机地址。
不,不是。
启用地址随机化后,PIE二进制文件将在每次运行时都加载到随机基址,但是所有函数和数据将一起移动 。
也就是说,如果一次执行中有&foo == 0x12345600
和&bar == 0x12345700
,那么在随后的执行中它们之间的增量将始终为0x100
(直到重新链接二进制文件)。
有没有一种方法可以挂钩linux二进制加载程序,以便始终提供相同的地址?
有几种方法:
echo 0 > /proc/sys/kernel/randomize_va_space
setarch ... -R a.out