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