Unity查安卓Native Crash的方法,定位SO报错函数

2023-12-25 13:07:41

需要用到两个工具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解析较慢,有时候还未解析出来,可以再等一等?

文章来源:https://blog.csdn.net/weixin_43705303/article/details/135194541
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。