Pie / Pic Elf二进制仪器

时间:2018-07-31 06:53:12

标签: reverse-engineering elf aslr

假设我有一个32或64位的elf二进制可执行文件。该二进制文件已使用pic / pie选项进行编译。

这意味着所有功能都映射到内存中的随机地址。

如果à需要对这种二进制文件进行检测或逆向工程该怎么办?

有没有一种方法可以挂钩linux二进制加载程序,以便始终提供相同的地址?

谢谢

1 个答案:

答案 0 :(得分:0)

  

这意味着所有功能都映射到内存中的随机地址。

不,不是

启用地址随机化后,PIE二进制文件将在每次运行时都加载到随机基址,但是所有函数和数据将一起移动

也就是说,如果一次执行中有&foo == 0x12345600&bar == 0x12345700,那么在随后的执行中它们之间的增量将始终为0x100(直到重新链接二进制文件)。

  

有没有一种方法可以挂钩linux二进制加载程序,以便始终提供相同的地址?

有几种方法:

  • 可以通过
    echo 0 > /proc/sys/kernel/randomize_va_space
  • 全局禁用地址随机化
  • 使用setarch ... -R a.out
  • 在GDB下运行程序,该程序将通过personality系统调用禁用随机化。