首先得先抓取ramdump, 如何抓取qcom ramdump這里不再贅述。
進入本文正題:
拿到ramdump后,
首先需要拿到相應的符號文件, 如vmlinux放到ramdump的文件夾。
然后從source code中拿到解析ramdump的幾個gnu工具,
aarch64-linux-android-gdb,aarch64-linux-android-nm,aarch64-linux-android-objdump
aarch64-linux-android-gdb不知在哪個版本開始android 源碼中已不再提供了,所以需要自己從網上下載。
然后下載ramdump parser, 高通給文檔里面寫的是
git clone git://codeaurora.org/quic/la/platform/vendor/qcom-opensource/tools
但是下的版本往往過時的,所以建議使用source code里面的ramdump parser工具
路徑如下:
vendor/qcom/opensource/tools/
工具准備好之后需要在ramdump parser 目錄下新建一個local_settings.py,內容示例如下:
gdb_path = "gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-gdb"
nm_path = "gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-nm"
objdump_path = "gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-objdump"
gdb64_path = "gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-gdb"
nm64_path = "gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-nm"
objdump64_path = "gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-objdump"
再編寫一個sh腳本用於執行解析:
nm=~/Ramdump_tools/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-nm
objdump=~/Ramdump_tools/tools/gnu-tools/aarch64-linux-android-4.9/bin/objdump
ramparse_dir=~/Ramdump_tools/tools/ramdump/tools/linux-ramdump-parser-v2
# python 2.7.5
!!! Supported ids:
9615
8625
8626
8627
9635
8260
8909
8908
californium
8916
8960
8929
8610
9607
8064
8060
8630
8026
9640
9625
8084
8952
8953
8992
8996
8994
8936
8937
8930
8917
8974
8939
8976
——版本老了,建議使用source code里的工具。
2:
TZ address: 146bf658
Adding /media/rainey/Ramdump/PQCS#433/Device#144/1226/ocean_a1_ramdump/DDRCS0_0.BIN 40000000--9fffffff
Adding /media/rainey/Ramdump/PQCS#433/Device#144/1226/ocean_a1_ramdump/DDRCS1_0.BIN a0000000--ffffffff
Adding /media/rainey/Ramdump/PQCS#433/Device#144/1226/ocean_a1_ramdump/OCIMEM.BIN 14680000--146bffff
Adding /media/rainey/Ramdump/PQCS#433/Device#144/1226/ocean_a1_ramdump/PIMEM.BIN 1c000000--1c1fffff
The kaslr_offset extracted is: 0x55c600000
The kimage_voffset extracted is: ffffff84e4600000
Using 64bit MMU
!!! Could not match version!
!!! Could not get the Linux version!
!!! Your vmlinux is probably wrong for these dumps
!!! Exiting now
——需要你指定--phys-offset, 如--phys-offset=0x40000000