【发布时间】:2018-07-31 06:53:11
【问题描述】:
假设我有一个 elf 32 或 64 位二进制可执行文件。此二进制文件已使用 pic/pie 选项编译。
这意味着所有函数都映射到内存中的随机地址。
如果需要对这种二进制文件进行检测或逆向工程,我该怎么办?
有没有办法挂钩 linux 二进制加载器以便始终提供相同的地址?
谢谢
【问题讨论】:
标签: reverse-engineering elf aslr
假设我有一个 elf 32 或 64 位二进制可执行文件。此二进制文件已使用 pic/pie 选项编译。
这意味着所有函数都映射到内存中的随机地址。
如果需要对这种二进制文件进行检测或逆向工程,我该怎么办?
有没有办法挂钩 linux 二进制加载器以便始终提供相同的地址?
谢谢
【问题讨论】:
标签: reverse-engineering elf aslr
这意味着所有函数都映射到内存中的随机地址。
不,它不是那个意思。
启用地址随机化后,PIE 二进制文件将在每次运行时以随机基地址加载,但所有函数和数据将一起移动。
也就是说,如果&foo == 0x12345600 和&bar == 0x12345700 在一次执行中,那么它们之间的增量在后续执行中将始终为0x100(直到重新链接二进制文件)。
有没有办法挂钩 linux 二进制加载器以便始终提供相同的地址?
有几种方法:
echo 0 > /proc/sys/kernel/randomize_va_space全局禁用地址随机化
setarch ... -R a.out
【讨论】: