Как определить, что PIE / ASLR был включен для моего приложения iOS? - PullRequest
4 голосов
/ 04 февраля 2012

Я включаю PIE (независимый от позиции исполняемый файл) / ASLR (рандомизацию макета адресного пространства) для приложения iPhone с помощью флага опции связывания "-w -pie".Можно ли как-то убедиться, что теперь все работает так, как рекламируется?Я попытался напечатать адрес переменной (Редактировать: и функцию) с помощью NSLog, и он каждый раз появляется одинаково.Я правильно делаю?

Ответы [ 2 ]

5 голосов
/ 11 октября 2012

Я знаю, что эта ветка старая, но пока нет хорошего ответа на тот случай, если кто-то еще наткнется на нее.Чтобы проверить, установлен ли флаг PIE, очень просто, просто запустите эту команду:

otool -hv /path/to/App.app/app

Где [APP] - исполняемый файл, созданный после сборки (не ipa, а исполняемый двоичный файл).

Вы должны увидеть что-то вроде этого:

Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
   MH_MAGIC     ARM         V7  0x00     EXECUTE    19       2708   NOUNDEFS DYLDLINK TWOLEVEL PIE

otool должен быть включен в Xcode, но если у вас его нет, вы можете установить его в настройках Xcode> Загрузки> Инструменты командной строки.

0 голосов
/ 04 февраля 2012

Проверка адресов функций, а не переменных адресов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...