Qcom ramdump解析方法簡介-- ramdump parser


首先得先抓取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腳本用於執行解析:

# ramdump-parser.sh
#! /bin/bash
echo ""
echo "Start ramdump parser.."
local_path=$PWD
ramdump=$local_path/
vmlinux=$local_path/vmlinux
out=$local_path/out
gdb=~/Ramdump_tools/tools/gnu-tools/aarch64-linux-android-4.9/bin/aarch64-linux-android-gdb
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
# git clone git://codeaurora.org/quic/la/platform/vendor/qcom-opensource/tools
ramparse_dir=~/Ramdump_tools/tools/ramdump/tools/linux-ramdump-parser-v2
 
echo "cd $ramparse_dir"
cd $ramparse_dir
echo ""
echo -e "python ramparse.py -v $vmlinux -g $gdb -n $nm  -j $objdump --force-hardware 630 --phys-offset=0x40000000 -a $ramdump -o $out -x"
echo ""

# python 2.7.5
python ramparse.py -v $vmlinux -g $gdb -n $nm  -j $objdump --force-hardware 630 --phys-offset=0x40000000 -a $ramdump -o $out -x
cd $local_path
echo "out: $out"
echo ""
exit 0
 
 
 
錯誤提示:
1:
!!! A bogus hardware id was specified: 630
!!! 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM