ARM дизассемблер / кросс-компилятор для проверки компиляции iOS - PullRequest
5 голосов
/ 19 апреля 2011

Может кто-нибудь порекомендовать либо:

  • дизассемблер ARM, который работает в Windows или MacOS и в идеале может понять формат исполняемого файла, используемый iOS
  • в MacOS, способ вызова кросс-компиляции GCC, установленного XCode, непосредственно из командной строки (чтобы я мог запустить его в небольшом тестовом файле и запросить вывод сборки).

По сути, мне интересно посмотреть, как некоторые вещи компилируются для ARM / iOS с помощью XCode / gcc, чтобы помочь мне с оптимизацией. Как вы можете видеть, хотя у меня есть опыт работы как с Windows, так и с Linux, я не специалист по Mac, так что я не слишком знаком с, например. где XCode устанавливает все свои gubbinry или входы и выходы любого бинарного формата, который использует iOS.

Меня не особо волнует, нужно ли мне выполнять «разборку» под Mac OS или Windows, но я пытался избежать установки новой копии GCC, настроенной для кросс-компиляции в ARM, как предположительно XCode там уже есть очень хорошая установка где-то там ... Любая помощь приветствуется.

Ответы [ 6 ]

5 голосов
/ 19 апреля 2011

Вы всегда можете использовать дизассемблер otool. Это довольно простой, но делает работу.

IDA Pro может разбирать файлы ARM Mach-O, используемые в iOS. Использование этого (по моему предвзятому мнению) намного лучший опыт, чем просмотр мертвого списка. Вы можете проверить, как это работает с демоверсией .

Отказ от ответственности: я работаю на Hex-Rays.

IDA Pro disassembling an ARM Mach-O file

4 голосов
/ 19 апреля 2011

дизассемблер ARM, который работает в Windows или MacOS и в идеале может понять формат исполняемого файла, используемый iOS

Я могу предложить вам LLVM. Если он построен с параметрами по умолчанию, llvm-objdump будет разбирать ARM.

Кроме того, похоже, что http://developer.apple.com/technologies/tools/whats-new.html Apple использует набор инструментов LLVM в iOS SDK.

2 голосов
/ 31 мая 2011

В XCode уже есть набор инструментов для кросс-компиляции ARM. Вы можете отлаживать ваши iOS-приложения на уровне исходного кода и ASM с поддержкой отладчика gdb, уже встроенной в Xcode. Например, откройте приложение iOS и выберите «Устройство и отладка». Затем установите точку останова в исходной строке и запускайте программу до тех пор, пока не будет достигнута точка останова. Теперь выберите «Выполнить -> Отладчик» из меню. Когда отладчик показывает, выберите «Выполнить -> Отображение отладчика -> Исходный код и дизассемблирование», и вы увидите окно с правой стороны, которое показывает ASM-код ARM, который был создан из вашего исходного кода. Вы можете пошагово пройти код строки исходного текста, используя кнопки. Если вы хотите пошагово выполнять одну инструкцию ARM asm за раз, откройте консоль gdb и используйте инструкцию "stepi" (введите ее один раз, затем просто нажмите enter, чтобы повторить).

0 голосов
/ 12 августа 2015

Взгляните на Radare2 - это инструмент с открытым исходным кодом, который постоянно расширяет набор функций и уже поддерживает разборку ARM.

0 голосов
/ 13 марта 2013

В MacOS - способ вызова кросс-компиляции GCC, установленного XCode, непосредственно из командной строки (чтобы я мог запустить его в небольшом тестовом файле и запросить вывод сборки).

Используйте этот скрипт для gcc, который компилируется для iphone:

#!/bin/bash

# Note: The "/Applications/Xcode.app/Contents" prefix is only required on 10.7.2 and 
# later (where Xcode is installed through app store rather than as a package).
# If running 10.6 or earlier, cut out that prefix.
PLATFORM=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
# Change this to the iOS version you want to compile for (you must have the platform
# SDK installed in Xcode)
VER=6.1

$PLATFORM/Developer/usr/bin/gcc -arch armv7 -framework IOKit -framework CoreFoundation -F $PLATFORM/Developer/SDKs/ iPhoneOS$VER.sdk/System/Library/Frameworks -I $PLATFORM/DeviceSupport/Latest/Symbols/usr/include -L $PLATFORM/Developer/SDKs/iPhoneOS$VER.sdk/usr/lib -L $PLATFORM/Developer/SDKs/iPhoneOS$VER.sdk/usr/lib/system $*

Источник: newosxbook.com

0 голосов
/ 07 августа 2012

Взгляните на Бункер . Это чертовски дешево по сравнению с IDA (хотя и не так мощно), а последние версии могут работать с ARM.

...