iOS 64bit app标题,测试工具的奇怪行为

时间:2016-10-10 08:53:51

标签: ios encryption

我有一个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

在header load命令中似乎没有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 个答案:

答案 0 :(得分:0)

原来你需要首先使用dylib和dumpdecrypted - https://github.com/stefanesser/dumpdecrypted,然后使用在OSX上运行的最新版本的类转储 - http://stevenygard.com/projects/class-dump/这将让你成功地类转储arm64位二进制文​​件。