Build app support PIE

Position Independent Executable(PIE),也叫 (Address space layout randomization),可以避免buffer overflow attack,防止對已知記憶體位置作攻擊,重點是前幾天上架時iTune Connect跟我說我的app不支援PIE不可以上架,會有這問題是因為我們的library是很久以前build的,沒有支援PIE,重build就好了。

iOS 在4.3之後開始支援,Android是在4.0,根據 QA1788,只要確認這幾個設定有設對,build出來的app就會有PIE,新開的project預設選項都有開。






看到app的flag裡有PIE就成功了
$ otool -hv /path/to/MyApp.app/MyApp
MyApp:
Mach header
magic   cputype cpusubtype caps filetype  ncmds  sizeofcmds   flags
MH_MAGIC  ARM    V7        0x00  EXECUTE    23        2372     NOUNDEFS DYLDLINK TWOLEVEL PIE

當然,攻擊時要把他拿掉也是可以啦XD

reference:
WIKI-ASLR
iphoneWIKI-ASLR
废除应用程序的ASLR特性

沒有留言: