关于app安全性

Crash的解析以及定位

2021-05-23  本文已影响0人  Money_YC

一、.dSYM

1.简介

.dSYM(debugging SYMbols)又称为调试符号表,是苹果为了方便调试和定位问题而使用的一种调试方案,本质上使用的是起源于贝尔实验室的DWARF(Debugging With Attributed Record Formats),其在.xcarchive目录中的层次结构为:


截屏2021-05-23 下午4.48.01.png
2.确定符号表和崩溃日志的一致性

终端输入:

xcrun dwarfdump --uuid /Users/xxxx/Desktop/xxxx.app.dSYM

即可获取对应.dSYM文件的UUID,这个UUID必须与.crash文件中的UUID相匹配


24611262-92d9db408a4009c7.png

二.通过.dSYM定位崩溃位置的三种方法

1. Symbolicatecrash

先介绍下Symbolicatecrash,symbolicatecrash 是 Xcode 中自带的perl脚本工具,通过iPhone的崩溃日志和应用的.dSYM文件定位发生崩溃的位置,把Crashed日志中的一堆地址替换成代码相应位置。
xxx.crash 文件的内容是十六进制显示的 ,给我们的分析排错造成很大阻力, 所以我们需要用到 symbolicatecrash 来符号化。

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
./symbolicatecrash ./*.crash ./*.app.dSYM > analysis.crash      

analysis.crash 需要自己命名,这里使用的是 analysis
如果有报错可以使用以下命令,xxxx.crash 为原crash文件,再执行以上步骤

./symbolicatecrash /Users/xxx/Desktop/Crash/xxxx.crash 

符号化前:


截屏2021-05-23 下午5.05.41.png
符号化后: 截屏2021-05-23 下午5.05.50.png

2. crash反解析

24611262-697db8c6488fbf19.png

xxx 0x0000000107fc24a4 0x104488000 + 62104740

0x104488000 符号表起始地址
0x0000000107fc24a4 崩溃发生运行时地址
62104740 偏移量
0x0000000107fc24a4 = 0x104488000 + 62104740
运行崩溃时堆栈地址 = 运行时起始地址 + 偏移量

atos已经封装了地址寻找,命令格式如下

atos -arch arm64 -o xxxx.app.dSYM/Contents/Resources/DWARF/xxxx -l 0x102134000 0x0000000106150124

既可以得到对应崩溃的方法以及行号

-[TestVc doAdd:level:zIndex:] (in xxx) + 616

如果是armv7就把arm64 换为armv7

3.dSYM工具

https://github.com/answer-huang/dSYMTools
使用起来比较简单

上一篇下一篇

猜你喜欢

热点阅读