在ios swift中启用栈金丝雀
问题描述:
我正在寻找一种方法来为我的ios应用程序在swift中启用栈金丝雀,但后来我发现最近版本的xcodes具有启用栈默认情况下所需的标志。所以然后我正在寻找一种方法来确保启用堆栈canaries,而其他站点说,我试图用终端($ otool -Iv appName | grep stack_chk)中的otool命令来确保它并期望它返回'stack_chk_guard和stack_chk_fail'标志,但它没有返回任何值/标志。于是我尝试在'其他C标志'下手动设置'-fstack-protector-all'标志,但我仍然看不到使用otool命令的标志。在ios swift中启用栈金丝雀
缺少什么我在这里?还是我误解了一些东西?我怎样才能保证我的应用程序启用了stack canaries?
答
看起来你正在做的一切都是正确的。请仔细检查
- 要设置
-fstack-protector-all
标志主要目标“其他C标志”。或者您将其设置为项目设置和在目标版本设置中有$(inherited)
。 - 构建应用程序,并生成日志(在报告中导航,CMD + 8)检查哪里是
AppName.app
包 cd path-to-package/AppName.app
- 二进制文件使用
otool
:otool -Iv AppName| grep stack
我做确切的4个步骤完全相同不知道怎么回事。 – XiOS
@XiOS你的项目中是否有一个Objective-C文件? –
是的,有几个.. – XiOS