在ios swift中启用堆栈canaries

时间:2017-09-04 18:45:49

标签: ios compiler-flags penetration-testing stack-smash

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

enter image description here

我在这里缺少什么?还是我误解了什么?我如何向自己保证我的应用程序启用了堆栈canaries?

1 个答案:

答案 0 :(得分:5)

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

  1. 您正在为主目标"其他C标志"设置-fstack-protector-all标志。或者您要为目标构建设置中的项目设置设置$(inherited)进行设置。
  2. 构建应用程序并在构建日志中(在报告导航器中,cmd + 8)检查AppName.app package
  3. 的位置
  4. cd path-to-package/AppName.app
  5. 在二进制文件上使用otoolotool -Iv AppName| grep stack