首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASLR是否启用libc随机函数地址?

ASLR是否启用libc随机函数地址?
EN

Stack Overflow用户
提问于 2018-12-06 04:34:57
回答 1查看 768关注 0票数 2

这是有关ASLR的一个基本问题。

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

或者地址每次都是一样的,因为主二进制本身没有启用ASLR?

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

代码语言:javascript
复制
 (gdb) break main
 (gdb) run
 (gdb) print &system

那么,这是从libc还是主二进制的PLT返回system()的地址呢?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-07 03:53:32

然而,它使用的libc文件已经启用了ASLR,那么每次在libc文件中的system()地址会被随机化吗?

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

另外,如果我有来自另一个系统的libc文件,那么如何在其中找到system()的地址呢?

这很简单:nm libc.so.6 | grep ' system'。但是,这只会告诉您libc.so.6中的偏移量,您还需要知道libc.so.6在其他系统上的加载位置。

This answer可能对你有帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53644733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档