我正在寻找一种方法在swift中为我的ios应用程序启用堆栈canaries然后我发现最近版本的xcodes具有启用堆栈canaries所需的标志默认启用。所以我正在寻找一种方法来确保堆栈金丝雀已启用,并且其他站点说我在终端($ otool -Iv appName | grep stack_chk)中尝试使用otool命令来确保它并期望它返回'stack_chk_guard和stack_chk_fail'标志但它没有返回任何值/标志。所以我接着尝试在'其他C标志'下手动设置标志'-fstack-protector-all',但我仍然看不到otool命令的标志。
我在这里缺少什么?还是我误解了什么?我如何向自己保证我的应用程序启用了堆栈canaries?
答案 0 :(得分:5)
看起来你正在做的一切正确。请仔细检查:
-fstack-protector-all
标志。或者您要为目标构建设置中的项目设置和设置$(inherited)
进行设置。AppName.app
package cd path-to-package/AppName.app
otool
:otool -Iv AppName| grep stack