代码之家  ›  专栏  ›  技术社区  ›  Bob5421

Pie/pic elf二进制仪器

  •  0
  • Bob5421  · 技术社区  · 6 年前

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

    这意味着所有函数都映射到内存中的一个随机地址。

    如果需要对这种二进制文件进行检测或反向工程,我应该怎么做?

    有没有办法挂接linux二进制加载器,以便始终提供相同的地址?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   Employed Russian    6 年前

    这意味着所有函数都映射到内存中的一个随机地址。

    不,它 意思是。

    启用地址随机化后,PIE二进制文件将以随机基址从运行到运行进行加载,但是 全部的 函数和数据将移动 在一起 .

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

    有没有办法挂接linux二进制加载器,以便始终提供相同的地址?

    有几种方法:

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