来自 ldd 输出的共享对象的基址

逆向工程 linux 图书馆 动态链接
2021-06-11 07:51:01

我在一台禁用了 ASLR 的 Linux 机器上。ldd在二进制文件上运行给了我以下结果:

linux-gate.so.1 =>  (0xb7fe1000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7e5c000)
/lib/ld-linux.so.2 (0xb7fe2000)

这是否意味着libc.so.6将在该地址加载0xb7e5c000我正在尝试为旧的 CTF 挑战构建 ROP 链,并且我想从库中获取小工具。我想知道库的基地址,以便我可以将它添加到小工具的偏移量中。

2个回答

事实上,ldd正在加载库以列出需要的库。因此,在这次运行中,您可以说libc.so.6已在 加载0xb7e5c000,但您不能保证情况会一直如此。即使没有 ASLR,它也主要取决于库的加载顺序,这些库的加载顺序可能因一次运行而异。

尽管如此,假设您没有 ASLR,并且说libc.

是的, 的基地址libc.so.6应该是0xb7e5c000那个二进制文件。您可以通过/proc/<pid>/maps在应用程序运行时进行 catting 来验证这一点