Steps for building your application as PIE
In Xcode, select your target in the "Targets" section, then click the "Build Settings" tab to view its settings.
For iOS apps, set iOS Deployment Target to iOS 4.3 or later. For Mac apps, set OS X Deployment Target to OS X 10.7 or later.
Verify that Generate Position-Dependent Code is set at to NO.
Verify that Don't Create Position Independent Executables is set to NO.
复制代码
PIE是什么
PIE(position-independent executable)是一种生成地址无关可执行程序的技术。如果编译器在生成可执行程序的过程中使用了PIE,那么当可执行程序被加载到内存中时其加载地址存在不可预知性。
PIE还有个孪生兄弟PIC(position-independent code)。其作用和PIE相同,都是使被编译后的程序能够随机的加载到某个内存地址。区别在于PIC是在生成动态链接库时使用(Linux中的so),PIE是在生成可执行文件时使用。
PIE的作用
安全性
PIE可以提高缓冲区溢出攻击的门槛。它属于ASLR(Address space layout