Xcode设置PIE是否开启

1,676 阅读1分钟

1、Xcode中如何关闭PIE标记

Xcode中PIE(即ASLR)默认开启:

可手动设置这两项为YES

再次编译,可在编译信息中搜索"pie" ,可找到"-no_pie"标记,说明是执行关闭 pie 标记:

但是下面的告警信息 "-no_pie ignored for arm64", 说明在xcode中已忽略 arm64架构下的"-no_pie"标记,说明关闭失败,Xcode强制开启 pie 。

2、查看一个app的二进制文件是否开启pie标记

(1)终端先进入刚才编译的.app路径中,记得改成你的路径

% cd /Users/xxxx/Library/Developer/Xcode/DerivedData/FityIt-fhjrguftpzruxfgkdakcjbnaqnqm/Build/Products/Debug-iphoneos/FityIt.app/

(2)用otool查看FityIt是否包含PIE标记

% otool -vh FityIt

终端输出信息:

FityIt:
Mach header
      magic  cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
MH_MAGIC_64    ARM64        ALL  0x00     EXECUTE    34       4904   NOUNDEFS DYLDLINK TWOLEVEL PIE

从输出信息中可以看到有 "PIE" 标记,说明是开启了PIE(即ASLR),如果看不到 "PIE",则说明未开启。