
Утилита для расшифровки приложений App Store на джейлбрейкнутой iOS 11.x
Утилита для дешифровки приложений App Store на джейлбрейк-устройствах с iOS 11.x
Вот пример использования https://github.com/BishopFox/bfinject для дешифровки приложения Reddit на iPhone с джейлбрейком Electra:
Cs-iPhone:~ root# bash bfinject -P Reddit -l dylibs/bfdecrypt.dylib
[+] Electra detected.
[+] Injecting into '/var/containers/Bundle/Application/BCEBDD64-6738-45CE-9B3C-C6F933EA0793/Reddit.app/Reddit'
[+] Getting Team ID from target application...
[+] Thinning dylib into non-fat arm64 image
[+] Signing injectable .dylib with Team ID 2TDUX39LX8 and platform entitlements...
[bfinject4realz] Calling task_for_pid() for PID 3218.
[bfinject4realz] Calling thread_create() on PID 3218
[bfinject4realz] Looking for ROP gadget... found at 0x1016a5110
[bfinject4realz] Fake stack frame at 0x10a06c000
[bfinject4realz] Calling _pthread_set_self() at 0x181303814...
[bfinject4realz] Returned from '_pthread_set_self'
[bfinject4realz] Calling dlopen() at 0x1810c3460...
[bfinject4realz] Returned from 'dlopen'
[bfinject4realz] Success! Library was loaded at 0x1c03e1100
[+] So long and thanks for all the fish.
На вашем устройстве появится такой экран:
После завершения появится системное уведомление с вопросом, хотите ли вы запустить службу, с которой можно скачать расшифрованный IPA:
Если вы нажмёте Yes, на порту 31336 вашего устройства будет запущена служба. Подключитесь к ней, и вы получите сырую копию IPA, которую можно скачать с помощью netcat следующим образом:
carl@calisto-3 /tmp $ nc 192.168.1.33 31336 > decrypted.ipa
carl@calisto-3 /tmp $ ls -l decrypted.ipa
-rw-r--r-- 1 carl wheel 14649063 Jan 25 16:57 decrypted.ipa
carl@calisto-3 /tmp $ file decrypted.ipa
decrypted.ipa: iOS App Zip archive data, at least v2.0 to extract
В качестве альтернативы проверьте консольный журнал устройства — он подскажет, где хранится расшифрованный IPA. Например:
[dumpdecrypted] Wrote /var/mobile/Containers/Data/Application/6E6A5887-8B58-4FC5-A2F3-7870EDB5E8D1/Documents/decrypted-app.ipa
Вы также можете найти IPA в файловой системе так:
find /var/mobile/Containers/Data/Application/ -name decrypted-app.ipa
Забрать .ipa с устройства можно с помощью netcat. На вашем ноутбуке настройте службу прослушивания:
ncat -l 0.0.0.0 12345 > decrypted.ipa
А на джейлбрейк-устройстве:
cat /path/to/decrypted.ipa > /dev/tcp/<IP_OF_YOUR_COMPUTER>/12345
.ipa будет клоном оригинального .ipa из App Store, за исключением того, что главный бинарный файл и все сопутствующие фреймворки и общие библиотеки будут расшифрованы. Флаг CRYPTID будет равен 0 в каждом ранее зашифрованном файле. Вы можете взять этот .ipa, извлечь приложение, изменить его по своему усмотрению, подписать его собственным сертификатом разработчика и развернуть его на устройствах без джейлбрейка.
Успешно протестировано с Electra и LiberiOS.