Как запустить толстые бинарники на iOS 5.1/iPhone 4

Я разрабатываю приложение для взломанных устройств iOS.
Я хочу настроить таргетинг на стенд iPhone 3G (iOS 4.3.x) и iPhone 4/4S (iOS 5.x).

Я успешно сгенерировал толстые двоичные файлы с помощью Xcode 4.3.x.

marsu:LatestBuild sst$ otool -h myproduct.armv6
myproduct.armv6 (architecture armv7):
Mach header
   magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
   0xfeedface      12          9  0x00          2    20       2664 0x00200085
myproduct.armv6 (architecture armv6):
Mach header
   magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
   0xfeedface      12          6  0x00          2    19       2648 0x00000085

Запустить это на iPhone 3G можно. Запустив это на iPhone 4, я получил

iPhone:~ root# ./myproduct.armv6
Killed: 9

При запуске сборки armv7 только на iPhone 4 все в порядке.

Что мне не хватает?


person Sébastien Stormacq    schedule 26.03.2012    source источник


Ответы (1)


ЧАСТИЧНО РЕШЕНО:

Проблема в том, что ldid не может подписывать толстые двоичные файлы. См. раздел Сборка взломанных устройств на iOS SDK 4.2. Детали.

Я нашел этот исходный код ldid, который должен подписывать толстые двоичные файлы https://github.com/rpetrich/ldid но у меня это не работает (ldid зависает во время выполнения)

Решение, вероятно, состоит в том, чтобы использовать инструмент lipo, чтобы разделить двоичный файл на два исполняемых файла, ldid их отдельно и собрать в один исполняемый файл. (у меня тоже не работает, но я над этим работаю)

cd MyApp.app/; 
lipo MyApp -extract armv6 -output MyApp6; 
lipo MyApp -extract armv7 -output MyApp7; 
ldid -S MyApp6; ldid -S MyApp7; 
lipo -create MyApp6 MyApp7 -output MyApp
person Sébastien Stormacq    schedule 29.03.2012
comment
Я однажды говорил об этом с Optimo или BigBoss, и они, кажется, думали, что можно использовать ваш общий подход (разделить с lipo, ldid -S на каждый по отдельности, а затем собрать заново). Но я был счастлив производить только armv6, поэтому я никогда не проверял это. - person Nate; 23.05.2012