微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

地址空间布局随机化烧毁

如何解决地址空间布局随机化烧毁

我正在将一堆unix应用程序移植到linux,其中一个存在地址空间随机化问题。该应用程序是将“状态”信息保存到磁盘的共享应用程序系统的一部分。给定用户的每笔交易都可以由相同或不同的应用程序实例执行。因此,在这个应用程序中,程序员变得很聪明,并且将指向函数的指针存储在状态文件中。在原始AIX系统上可以正常工作。但是在linux上,如果下一个事务是由另一个应用程序实例执行的,则会发生段错误。使用地址随机化时,这些功能指针不再有效。如果它失败了并获得相同的应用程序实例,则可以正常工作。

因此,我要么必须禁用地址空间随机化,要么重组他的代码。是否可以在可执行文件上设置属性,以便仅该可执行文件在禁用随机化的情况下运行。还是只能全局禁用它?我看到另一篇提到setarch $(uname -m) -R /bin/bash的帖子,它是对由shell实例启动的所有应用程序执行此操作的一种方式。但是我不想为每个应用程序禁用它-只是使用这种狡猾技术的应用程序。

还有一件事。我系统上的uname -m返回X86_64,但是有问题的应用程序是在32位模式下构建的,所以我需要调整setarch命令以不同方式处理64位系统上的32位应用程序吗?

解决方法

Lorinczy Zsigmond,谢谢。 -no-pie达到了目的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。