3

我一直在寻找一种在 swift 中为我的 ios 应用程序启用堆栈金丝雀的方法,但后来我发现最新版本的 xcodes 具有启用堆栈金丝雀所需的标志,默认情况下启用。因此,我一直在寻找一种方法来确保启用堆栈金丝雀,并且正如其他网站所说,我尝试使用终端中的 otool 命令($ otool -Iv appName |grep stack_chk)来确保它并期望它返回'stack_chk_guard和stack_chk_fail' 标志,但它没有返回任何值/标志。所以我然后尝试在“其他 C 标志”下手动设置标志“-fstack-protector-all”,但我仍然看不到使用 otool 命令的标志。

在此处输入图像描述

我在这里想念什么?还是我误解了什么?我如何确保我的应用程序启用了堆栈金丝雀?

4

1 回答 1

9

看起来你做的一切都是正确的。请仔细检查:

  1. 您正在-fstack-protector-all为主要目标“其他 C 标志”设置标志。或者您正在为项目设置设置它并且$(inherited)目标构建设置中。
  2. AppName.app构建您的应用程序并在构建日志中(在报告导航器中,cmd+8)检查包在哪里
  3. cd path-to-package/AppName.app
  4. otool在二进制文件上使用:otool -Iv AppName| grep stack
于 2017-09-04T19:37:39.613 回答