如何在OS X上获得另一个进程'ASLR幻灯片?

时间:2013-08-02 02:05:49

标签: c macos aslr

是否可以在OS X上获得正在运行的进程'ASLR幻灯片?

我不想以某种方式禁用ASLR(例如像gdb),而是获取偏移量。

示例:

$ cat > test.c
#include <stdio.h>

int test(void) {
    return 42;
}

int main(void) {
    getchar();
    printf("%p: %d\n", test, test());
    return 0;
}
$ gcc test.c -o test

多次运行测试将确认test()每次运行时确实有不同的地址:

$ ./test
^D
0x104493e50: 42
$ ./test
^D
0x106fe8e80: 42

注意:查找幻灯片的方法不应搜索进程的内存或以其他方式进行检查,因为我需要一个适用于所有可执行文件的可移植解决方案。

2 个答案:

答案 0 :(得分:1)

使用MachOView源代码中find_main_binary的{​​{1}}和get_image_size函数,如果您拥有进程'pid',则可以获取该进程的ASLR幻灯片你有这样的root权限:

Attach.mm

我把它变成了一个名为get_aslr的小工具。

答案 1 :(得分:-2)

不,这会破坏ASLR的目的。