Извлечь Objective-C двоичный - PullRequest
       22

Извлечь Objective-C двоичный

2 голосов
/ 25 октября 2011

Можно ли извлечь двоичный файл, чтобы получить код, который находится за двоичным файлом?С помощью Class-dump вы можете видеть адреса реализации, но возможно ли также увидеть код, который находится в адресах реализации?Есть ЛЮБОЙ способ сделать это?

Ответы [ 3 ]

5 голосов
/ 25 октября 2011

Весь ваш код компилируется в отдельные инструкции, размещенные в текстовом разделе вашего исполняемого файла. Компилятор отвечает за перевод вашего языка более высокого уровня в инструкции, специфичные для процессора, которые проще. Отменить этот процесс было бы почти невозможно, если бы код не был достаточно простым. Некоторыми проблемами являются неоднозначность операторов и общая читабельность: например, локальные переменные будут не чем иным, как адресом смещения.

Если вы хотите прочитать дизассемблированный код (инструкции, для которого был скомпилирован код более высокого уровня), используйте эту команду в исполняемом файле:

otool -tV file

3 голосов
/ 25 октября 2011

Вы можете декомпилировать (точнее, дизассемблировать) двоичный файл и получить его сборку, но нет способа вернуть исходный Objective-C.

Мое любопытство просит меня спросить, почему вы хотите это сделатьэто!?

2 голосов
/ 26 октября 2011

otx http://otx.osxninja.com/ - хороший инструмент для обозначения разборки на основе otool. Он будет обрабатывать разборку как x86_64, так и i386.

и

Mach-O-Scope https://github.com/smorr/Mach-O-Scope - это инструмент, построенный на основе otx, чтобы выгрузить все это в базу данных sqlite3 для просмотра и аннотирования.

Он не даст вам исходный источник - но он достаточно приблизит вас, предоставив вамс сообщениями, которые передаются в методах.

...