如何检测我的 iOS 应用已启用 PIE/ASLR?
Posted
技术标签:
【中文标题】如何检测我的 iOS 应用已启用 PIE/ASLR?【英文标题】:How to detect that PIE/ASLR has been enabled for my iOS app? 【发布时间】:2012-02-04 12:14:39 【问题描述】:我正在使用"-w -pie"
链接选项标志为 iPhone 应用程序启用 PIE(与位置无关的可执行文件)/ASLR(地址空间布局随机化)。有什么办法可以确保事情现在可以按照宣传的方式工作?我尝试使用 NSLog 打印变量 (编辑:和函数) 的地址,并且每次都出现相同的情况。我做得对吗?
【问题讨论】:
我有 PIE 标志。我的问题是什么可以让我不被 Clutch 和 Clutch2 反编译。任何一个? 【参考方案1】:我知道这个帖子很旧,但还没有很好的答案,以防其他人偶然发现它。要检查是否设置了 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 首选项 > 下载 > 命令行工具中安装它。
【讨论】:
【参考方案2】:检查函数地址,而不是变量地址。
【讨论】:
我也这样做了,但仍然没有运气。 您可能打印的是相对地址而不是绝对地址。这就是为什么你每次都得到相同的结果。以上是关于如何检测我的 iOS 应用已启用 PIE/ASLR?的主要内容,如果未能解决你的问题,请参考以下文章