#ios #encryption
#iOS #шифрование
Вопрос:
У меня есть 64-битное приложение для iOS, но различные инструменты и функции, похоже, не работают на нем. Это приложение было загружено из App Store, поэтому оно прошло все проверки Apple и т. Д.
Это 64-битное приложение, как видно из заголовка mach-o-
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC_64 16777228 0 0x00 EXECUTE 47 5480 NOUNDEFS DYLDLINK TWOLEVEL WEAK_DEFINES BINDS_TO_WEAK PIE
Похоже, что в командах загрузки заголовка даже нет LC_ENCRYPTION_INFO_64 (как 64-разрядного приложения), и отсутствует вся информация о cryptoffset, cryptid и т. Д-
root# otool -l myApp | grep -i crypt
root#
root# otool -l myApp | grep -i LC_ENCRYPTION_INFO
root#
Использование nm для получения функций, классов и методов, на которые ссылаются в приложении и в динамически загружаемых библиотеках, встречается с ошибкой.
nm myApp
nm: object: myApp malformed object (unknown load command 4)
И, наконец, когда я дамп с помощью class-dump-z, я получаю null, это результат, независимо от того, делаю ли я это в стандартном двоичном файле из App Store или сначала расшифровываю с помощью Clutch.
/**
* This header is generated by class-dump-z 0.2a.
*
* Source: (null)
*/
Lipo также выдает ошибку
root# lipo -info myApp
dyld: lazy symbol binding failed: Symbol not found: _map_fd
Referenced from: /usr/bin/lipo
Expected in: dyld shared cache
dyld: Symbol not found: _map_fd
Referenced from: /usr/bin/lipo
Expected in: dyld shared cache
Trace/BPT trap: 5
Что происходит?
Ответ №1:
Оказывается, сначала нужно использовать dylib и dumpdecrypted — https://github.com/stefanesser/dumpdecrypted а затем используйте новейшую версию class-dump, работающую на OSX — http://stevenygard.com/projects/class-dump / это позволит вам успешно выполнить сброс класса arm64-битных двоичных файлов.