我使用"-w -pie"
链接选项标志为iPhone应用程序启用PIE(位置无关可执行文件)/ ASLR(地址空间布局随机化)。有什么方法可以确保现在的东西按照宣传的方式工作吗?我尝试使用NSLog打印变量(编辑:和函数)的地址,每次都会出现相同的情况。我做得对吗?
答案 0 :(得分:5)
我知道这个帖子已经老了,但是如果别人偶然发现它,那就没有好的答案了。要检查PIE标志是否设置非常简单,只需运行以下命令:
otool -hv /path/to/App.app/app
其中[APP]是构建后创建的可执行文件(不是ipa,而是可执行文件,二进制文件)。
你应该看到这样的事情:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC ARM V7 0x00 EXECUTE 19 2708 NOUNDEFS DYLDLINK TWOLEVEL PIE
otool应该包含在Xcode中,但是如果你没有它,你可以在Xcode首选项中安装它>下载>命令行工具。
答案 1 :(得分:0)
检查函数地址,而不是变量地址。