【问题标题】:How to detect that PIE/ASLR has been enabled for my iOS app?如何检测我的 iOS 应用已启用 PIE/ASLR?
【发布时间】:2012-02-04 12:14:39
【问题描述】:

我正在使用"-w -pie" 链接选项标志为 iPhone 应用程序启用 PIE(与位置无关的可执行文件)/ASLR(地址空间布局随机化)。有什么办法可以确保事情现在可以按照宣传的方式工作?我尝试使用 NSLog 打印变量 (编辑:和函数) 的地址,并且每次都出现相同的情况。我做得对吗?

【问题讨论】:

  • 我有 PIE 标志。我的问题是什么可以让我不被 Clutch 和 Clutch2 反编译。任何一个?

标签: iphone ios security


【解决方案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】:

    检查函数地址,而不是变量地址。

    【讨论】:

    • 我也这样做了,但仍然没有运气。
    • 您可能打印的是相对地址而不是绝对地址。这就是为什么你每次都得到相同的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2015-03-02
    • 2020-07-18
    • 2017-03-23
    • 1970-01-01
    • 2017-01-03
    相关资源
    最近更新 更多