Linux下GDB调试器如何禁用ASLR?
GDB 如何禁用ASLR?
GDB默认会自动禁用ASLR,核心靠两种机制实现:
修改进程的
personality标志位
Linux系统中,每个进程都有一个控制进程行为的personality属性,其中ADDR_NO_RANDOMIZE位专门用来控制ASLR。GDB在启动被调试程序时,会调用personality()系统调用,给目标进程设置这个标志位,强制关闭它的地址空间随机化,所以每次调试时main函数的地址都固定。内置配置选项控制
GDB自带disable-randomization配置项,默认值是on(即禁用ASLR)。你可以在GDB里执行show disable-randomization查看当前状态,也可以手动用set disable-randomization off开启ASLR,或者set disable-randomization on再次关闭。
如果系统全局ASLR已经被禁用,那不管GDB怎么设置,程序地址都不会变化,但GDB的默认行为会优先覆盖系统的全局设置。
内容的提问来源于stack exchange,提问作者Bob5421
相关产品推荐
相关产品推荐

