ramparser
ramparser
1 理解概念
1.1 ramdump
ramdump是内存转储文件,简单来说,就是当系统发生致命错误无法恢复的时候,把整个DRAM抓下来,写到多个固定大小的.bin文件当中(文件尺寸相加就是当前DRAM的大小)。
1.2 ramparser
ramparser是解析ramdump的工具
1.3 debugpolicy
secure boot: 为了安全,凡是开了secure boot的机器, 会禁用相当一部分的debug功能. 但是很多打开了secure boot的手机出现问题的时候也需要调试. 需要临时打开这些debug feature, 比如tzlog, full ramdump, 以及subsystem restart ramdump.
debugpolicy: 在8994以及之前的平台,想干这件事比较麻烦,需要修改签名的配置文件,重新签名xbl.elf以及mba.mbn才能enable. 在8996以及之后的平台上,高通引入了debugpolicy. 本质上, 它是一个被签名的配置文件, 会被刷到apdp和msadp分区(通常情况下这两个分区是空的),当xbl以及tz在启动阶段发现有这个文件,并且能通过签名校验的时候,就会临时开启相应的debug功能.
2 抓取ramdump
2.1 触发crash dump
# 检查debugpolicy(0x0b有效)
adb shell getprop ro.boot.d
# 刷入debugpolicy
python ./vendor/xiaomi/securebootsigner/Qualcomm/common/debugpolicy.py
# 检查debugpolicy(0x0b有效)
adb shell getprop ro.boot.d
# 触发crash dump; 或手动按音量+-和power键4s左右进入dump
adb root
adb shell "echo c > /proc/sysrq-trigger"
lsusb
2.2 使用QPST configuration
此时进入crash dump模式,端口识别为900e。使用工具自动获取dump信息。Ports标签页查看,查看dump文件: Help --> Open Log File Directory
3 解析ramdump
3.1 安装ramparser
3.2 获取vmlinux symbols文件
build生成路径 out/target/product/<product_name>/obj/kernel/msm-4.19/vmlinux
husky平台 http://husky.pt.miui.com/buildFile/symbols
3.3 使用ramparser
python ramparse.py -x -a <dump_path> -v <dump_path>\vmlinux -o cmdparser --force-hardware umi
# 注意上面的路径,替换为你本地的路径:
-x 解压
-a dump的路径
-v vmlinux符号表的路径
-o 执行parser
--force-hardware 是指定的平台
4 查看报告
N/A
5 参考资料
- ramdump文件抓取及解析
- DebugPolicy 安装