具体步骤
下载具体固件
去一些固件下载网站 https://www.theiphonewiki.com/wiki/Firmware 下载对应版本的固件。
下载好为 iPhone_4.7_13.0_17A577_Restore.ipsw
文件
下载dyld源码
使用其中的dsc_extractor工具,下载地址 https://github.com/apple-oss-distributions/dyld/tags 源码,我使用了dyld-519.2.2.tar.gz。
下载完dyld源码后,解压,打开进入launch-cache打开dsc_extractor.cpp文件,将预处理指令从0改为1,执行该命令,会生成dsc_extractor
可执行文件。
clang++ -o dsc_extractor ./dsc_extractor.cpp dsc_iterator.cpp
提取系统符号表
- 将下载来的ipsw改为zip,解压。找到解压目录下最大的哪个dmg文件,就是待解密的dmg文件。
-
解压后可以双击打开dmg文件,在其中的
System/Library/Caches/com.apple.dyld
目录下可以看到dyld_shared_cache_arm64
、dyld_shared_cache_armv7s
、dyld_shared_cache_armv7
类似这样的文件,这些就是压缩的系统库。 -
需要通过之前准备的dsc_extractor来解压获取,使用方法
dsc_extractor /Volumes/YukonPre17A577.N71OS/System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm64 /ios/test_dyld
/ios/test_dyld/usr/lib/libAppPatch.dylib
这些都是系统动态库
- 使用buglySymboliOS.jar进行符号表整理
java -Xms512m -Xmx1024m -Dfile.encoding=UTF8 -jar buglySymboliOS.jar -i /ios/test_dyld/usr/lib/libAppPatch.dylib /ios/test_dyld/system-symbol
系统库bata版本符号表
该网址可以下载系统库beta系统库符号表 https://ipswbeta.dev/
bugly 提供的系统符号表工具
https://bugly.qq.com/v2/downloads