需要用到两个工具Il2CppDumper和IDA_Pro,网上可以下到对应的软件
可以看到报错的位置是libil2cpp.so 0000000000AFF820
接下来要做的事情就是找到0000000000AFF820对应的函数是哪个
解包
Il2CppDumper解析so文件和符号表,查看对应的函数表
把apk后缀改成zip后解压,获得包内的libil2cpp.so和global-metadata.dat
两个文件路径分别是
lib\arm64-v8a\libil2cpp.so
和assets\bin\Data\Managed\Metadata\global-metadata.dat(这里取arm64-v8a的文件是根据之前报错日志的显示的架构选择的)
打开Il2CppDumper,先选libil2cpp.so,再选global-metadata.dat
如果成功的话会输出
Dumping...
Done!
Generate script...
Done!
Generate dummy dll...
Done!
然后在Il2CppDumper所在的目录,可以看到dump.cs,这个就是函数表文件
IDA PRO解析SO文件,查看对应报错的函数
打开IDA PRO,把libil2cpp.so拖进去,选择ARM64
按G弹出跳转框
根据之前堆栈的地址
#20 pc 0000000000AFF820 lib/arm64/libil2cpp.so
输入AFF820 跳转到指定位置
可以看到sub_82EB84。sub后面的82EB84就是函数地址
在之前的解出的函数表dump.cs搜索82EB84
找到对应的函数,之后通过相同的方式可以找到其他报错函数,可以获得整个调用的函数堆栈。
注意有的时候跳转到对应的行会出现以下的情况,这是因为IDA解析较慢,有时候还未解析出来,可以再等一等