gpt4 book ai didi

linux - ASLR 是否启用了 libc 随机函数地址?

转载 作者:太空狗 更新时间:2023-10-29 12:22:50 25 4
gpt4 key购买 nike

这是一个关于ASLR的基本问题

如果我有一个没有启用 ASLR 的二进制文件。但是,它使用的libc文件启用了ASLR,那么libc文件中system()的地址每次都会随机化吗?

或者地址每次都相同,因为主二进制文件本身没有启用 ASLR?

在 gdb 中,我正在获取 system() 函数的地址,如下所示:

 (gdb) break main
(gdb) run
(gdb) print &system

那么,这是否从 libc 或主二进制文件的 PLT 返回 system() 的地址?

此外,如果我有一个来自另一个系统的 libc 文件,那么我如何才能在其中找到 system() 的地址?默认情况下,如果我在主二进制文件上运行 gdb,它将在本地系统上找到 libc 的 system() 地址。我是否必须告诉 gdb 加载 libc 文件(我从远程系统获得的文件)?

最佳答案

However, the libc file it uses has ASLR enabled, then will the address of system() in libc file be randomized every time?

是(假设您没有通过其他方式禁用 ASLR)。请注意,GDB 默认禁用 ASLR。如果您想在 GDB 下运行程序时观察 ASLR 效果,则需要set disable-randomization off

Also, if I have a libc file from another system, then how can I find the address of system() inside it?

这很简单:nm libc.so.6 | grep '系统'。然而,这只会告诉您 libc.so.6 内的偏移量,您还需要知道 libc.so.6 的加载位置另一个系统。

This answer可能对你有帮助。

关于linux - ASLR 是否启用了 libc 随机函数地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53644733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com