gpt4 book ai didi

ios - 苹果自己的 ASLR 实现是如何工作的?

转载 作者:IT王子 更新时间:2023-10-28 23:38:18 26 4
gpt4 key购买 nike

根据ASLR(Address Space Layout Randomization),它在每次进程启动时提供随机堆栈和堆分配和页面加载,并随机化放置对象在给定进程的虚拟空间中的地址。

但是在我在ios上运行的应用程序中,我创建了一个名为ObjectA的对象,经过几次重新加载进程后,我发现ObjectA的地址都是一样的,没有随机化。

Apples 自己的 ASLR 实现是如何工作的?为什么ObjectA的地址都是一样的?

最佳答案

“多次重新加载”是什么意思?您应该明确退出应用程序,因为您可能会重新打开同一进程。

例如。这是我打印出 UIViewController 实例地址的应用程序之一,因为您可以看到每次执行时对象的地址都不同。

First run: <DCViewController: 0x13d4a0>
Second run: <DCViewController: 0x2880f0>
Third run: <DCViewController: 0x2a2050>

(我不认为是这种情况,但在 XCode 中有一个选项可以在“build设置”下启用 PIE(位置独立可执行文件),它被称为“不创建位置独立可执行文件”,您可以轻松找到它但是在搜索框中输入“pie”。此选项应设置为否)。

编辑:

此外,如果部署目标 >= 4.3,Xcode 只会生成 PIE 二进制文件

希望这会有所帮助 =)

关于ios - 苹果自己的 ASLR 实现是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10152527/

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