在Mac OS X Snow Leopard中禁用ASLR

3

我想在Mac OS X Snow Leopard中禁用ASLR,并使用gcc进行缓冲区溢出和栈溢出。 有人知道如何禁用ASLR吗?


我本来想说去谷歌一下,但是谷歌只会搜索到你的问题。 :( - R.. GitHub STOP HELPING ICE
ASLR是内核技术,只需要使用gcc生成PIE代码。缓冲区溢出和堆栈溢出保护不仅限于ASLR。 - osgx
2个回答

3

Asan的作者列举了几种在MacOS中禁用ASLR的方法:https://code.google.com/p/address-sanitizer/issues/detail?id=29

对于10.6版本:

export DYLD_NO_PIE=1 

对于10.7及更高版本:
使用脚本的--no-pie标志,取消已链接可执行文件中的MH_PIE位。此脚本链接:http://src.chromium.org/viewvc/chrome/trunk/src/build/mac/change_mach_o_flags.py?view=markup 或者使用--no_pie标志链接程序。
此外,gdb还有一种困难的方法:http://reverse.put.as/2011/08/11/how-gdb-disables-aslr-in-mac-os-x-lion/

1

您可以设置环境变量 "DYLD_NO_PIE"。请参阅 "man dyld"。这在 OS X 10.6 上有效,但在 10.5 上无效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接