[Android][Kernel]使用crash工具分析ramdump

前言

本篇只讨论如下内容:

1、crash工具下载、编译

2、crash工具使用需要的文件、数据

3、crash工具使用需要传递的参数

本篇不讨论如下内容:

1、crash分析ramdump的指令 —— 后续可能会写

2、kaslr的作用 —— 这个网上很多了

3、内存地址偏移量的含义 —— 这个网上也不少

总之一句话,本篇只讲怎么搭建平台,至于怎么用,怎么分析问题,本篇概不讨论

下载crash工具:

github官网:https://github.com/crash-utility/crash

我们直接下载release即可:https://github.com/crash-utility/crash/archive/7.2.7.zip

(注意:7.2.9可能导致解析ramdump失败,原因不明,因此建议使用7.2.7)

7.2.9报错如下:

/var/tmp/ramdump_elf_N7LVjZ: ELF header read: No such file or directory
crash: malformed ELF file: /var/tmp/ramdump_elf_N7LVjZ

编译crash工具:

解析64位Android kernel使用如下指令编译:

make target=ARM64

期间会下载gdb,请保证网络畅通,或者手动下载(http://ftp.gnu.org/gnu/gdb/gdb-7.6.tar.gz)后放到crash所在目录中;

需要下载的文件:

gdb-7.6.tar.gz

gdb-7.6.patch

获取vmlinux文件

通常存在于out/target/product/<$project>/obj/KERNEL_OBJ/vmlinux

使用工具抓取ramdump

此次是高通手机,ramdump可以直接通过QPST抓取,抓取完成后目录下内容如下:

$ ls Port_COM19/
CD_BTDDR.BIN  CODERAM.BIN   DDRCS0_0.BIN  dump_info.txt  IPA_HRAM.BIN  IPA_SRAM.BIN  MSGRAM11.BIN  MSGRAM15.BIN  MSGRAM4.BIN  MSGRAM8.BIN   PARTBIN1.BIN  PMON_HIS.BIN
CD_BTIMM.BIN  DATARAM.BIN   DDRCS1_0.BIN  FSM_CTRL.BIN     IPA_IU.BIN    load.cmm      MSGRAM12.BIN  MSGRAM1.BIN     MSGRAM5.BIN  MSGRAM9.BIN   PARTBIN2.BIN  RST_STAT.BIN
CD_SHIMM.BIN  DCC_CFG.BIN   DDRCS1_1.BIN  FSM_STS.BIN     IPA_MBOX.BIN  MSGRAM0.BIN   MSGRAM13.BIN  MSGRAM2.BIN     MSGRAM6.BIN  OCIMEM.BIN    PIMEM.BIN      SHRM_MEM.BIN
CD_STRCT.BIN  DCC_SRAM.BIN  DDR_DATA.BIN  IPA_GSI.BIN     IPA_SEQ.BIN   MSGRAM10.BIN  MSGRAM14.BIN  MSGRAM3.BIN     MSGRAM7.BIN  PARTBIN0.BIN  PMIC_PON.BIN  SN_C6D6B790

加粗文件是此次需要的;

获取kaslr

无视网上各种hexdump -s 偏移位的指令(偏移位并不好确认),此处指令简单粗暴:

使用指令hexdump OCIMEM.BIN | grep dead 可以看到类似如下内容:

$ hexdump Port_COM19/OCIMEM.BIN | grep dead
+0012800 beef dead 0000 0000 0000 0000 0000 0000
00290e0 c0fe dead 0000 0000 0000 0000 0000 0000
002a0c0 0000 0000 0000 0000 c0fe dead 0000 0000
002b6d0 4ead dead 0000 2580 0015 0000 df48 a14b
002bb10 0000 0000 d00d dead 717c 6dcb 01cc d330
直接关注4ead dead这一行,后面的0000 2580 0015 0000即为kaslr

但是由于arm采用little-endian,因此需要倒序读取;

以此为例,此次kaslr为:0x001525800000

确认ramdump的加载偏移量

上面所列的DDRCS0_0.BIN、DDRCS1_0.BIN、DDRCS1_1.BIN为ramdump时内存的实际存储内容,属于原始数据,但是其加载的地址偏移位是未知的,这时就需要借助dump_info.txt的信息来确认了:

1 0x0000000080000000 0000002147483648   DDR CS0 part0 Memo         DDRCS0_0.BIN 
   1 0x0000000100000000 0000002147483648   DDR CS1 part0 Memo         DDRCS1_0.BIN 
   1 0x0000000180000000 0000002147483648   DDR CS1 part1 Memo         DDRCS1_1.BIN 

加粗的内容就是这三块内存数据加载的偏移位;

至此,我们获取到了crash分析ramdump的所有必要信息,现在只需要进行拼接即可:

使用crash分析ramdump

crash vmlinux  Port_COM19/DDRCS0_0.BIN@0x80000000,Port_COM19/DDRCS1_0.BIN@0x100000000,Port_COM19/DDRCS1_1.BIN@0x180000000 --kaslr=0x001525800000

附录:常用指令

log - 查看dmesg

dis -xl <$fun> - 查看某个函数的汇编代码

set <$pid> - 设置需要查看的进程pid

bt -T - 查看调用栈信息

list -s list_head <$addr> - 从某个地址起,查看其往后的链表情况

[Android][Kernel]基于crash工具搭建分析ramdump的平台相关推荐

  1. 基于GitBook框架搭建技术文档平台

    源宝导读:为了向用户更好的传递ERP开放平台的价值与技术知识,我们基于GitBook框架搭建了一个文档中心站点,本文将介绍此站点的设计与实现过程. 一.项目架构图 因为文档会涉及到很多的产品线,所以目 ...

  2. Android Audio常用音频工具和分析方法

    1. linux driver部分 使用android系统录音工具tinycap来抓取底层pcm音频. tinycap 使用方法: tinycap file.wav [-D card] [-d dev ...

  3. 基于Self-Hosted模式搭建K8S可观测平台Pixie(内附填坑方法)

    Pixie是基于Ebpf技术构建的一套可观测性平台,Pixie默认已经集成了许多可观测性工具,例如:我们可以清晰的通过Pixie观测到K8S内部的流量情况.DNS解析时延.TCP丢包.掉包等,同时我们 ...

  4. AUTOSAR从入门到精通-【应用篇】基于Vector工具链车载总线自动化测试平台的研究与开发

    目录 车载总线发展现状 自动化测试平台的发展趋势 国内外研究现状

  5. (好文重发)朴英敏:用crash工具分析Linux内核死锁的一次实战

    本文简介: 内核死锁问题一般是读写锁(rw_semaphore)和互斥锁(mutex)引起的,本文主要讲如何通过ramdump+crash工具来分析这类死锁问题. 作者简介: 朴英敏,现就职于国内一家 ...

  6. linux crash,系统崩溃 - crash工具介绍

    工欲善其事,必先利其器.本文主要介绍linux下crash工具常用命令的功能和使用. 背景知识 crash是redhat的工程师开发的,主要用来离线分析linux内核转存文件,它整合了gdb工具,功能 ...

  7. crash工具解析_crash工具和x86-64汇编基础

    在前面的文章中,已经出现了作为Linux重要调试手段之一的crash工具的身影.在后续的文章里,我们还会继续用到它.因此在这里,准备对Linux中的crash工具的原理和使用方法,做一个相对全面的介绍 ...

  8. 一次因内存覆盖引起的system dump问题分析,基于linux的crash工具。

    关于crash工具 sudo mount system.img the-dir   //把system.img挂载到一个目录,就可以查看system的文件了,还用去网上搜什么解包方法???? 对vml ...

  9. 【ARM Linux 系统稳定性分析入门及渐进 1 -- Crash 工具简介】

    文章目录 1.1 Kexec 和 Kdump 1.1.1 Kexec 加载优点 1.1.2 kdump 功能 1.1.3 kdump原理 1.2 Crash tool 1.2.1 ramdump 机制 ...

  10. 用FFmpeg搭建基于CNN的视频分析方案

    Photo by Lukas from Pexels FFmpeg作为一个集录制.转换.音/视频编码解码功能为一体的开源框架,自然也需要考虑怎样去和当下流行的视频分析技术融合.本文来自英特尔网络平台部 ...

最新文章

  1. app息屏后ajax请求不执行_息屏时钟app下载-息屏时钟软件下载v1.0 安卓版
  2. IT从业者进阶指南:如何提升自身的不可替代性
  3. DOS介绍以及常用命令
  4. 类库 通用变量 is和as 委托
  5. What happens when clicking interaction record work center?
  6. 华为linux版笔记本安装win7,华为MateBook X Pro笔记本怎样安装win7系统
  7. mpmath.psi python_【Python Package】mpmath学习笔记(2)
  8. ipsec ***之配置详解篇
  9. 中国人工智能学会通讯——一种基于众包的交互式数据修复方法 3 给定质量约束下的交互式算法...
  10. MySQL8安装详细步骤
  11. java实现IP归属地查询
  12. Android Studio实现百度地图定位(显示经纬度和地址)
  13. SQL 常用英文单词
  14. lol服务器维护 胜率,说下这游戏服务器控制胜率怎么来的。
  15. Altium Designer的PCB无法显示Designator
  16. MySQL 5.7--------多实例部署最佳实战
  17. Dubbo源码解析-——服务引用
  18. 使用endnote在毕业论文中插入文献
  19. “全面集中管控”企业信息化体系建设的思考
  20. 2016中国大数据技术大会在北京盛大召开

热门文章

  1. DA14580与ADXL362应用
  2. 小米手环 / 运动手环 记步功能原理
  3. iozone - 性能压力测试工具
  4. idea好看字体设置
  5. 【分布式】什么是分布式技术?
  6. 在Eclipse中使用JUnit5进行单元测试
  7. Hive的概述、流程和优化
  8. ASS 字幕格式规范
  9. 人工智能笔记之专业选修课4.1.5 - 博弈论 11.贝叶斯博弈场景-拍卖,合作博弈论
  10. python调用QT界面使用方法