聊完 一代加固的落地加载,我们从攻击者的角度看看:一个跑起来的 App,内存到底能被怎么 dump 出来。
theme: github
一、前提条件
root环境,可以是模拟器或者root的手机
二、执行命令core_dump命令
1、windows的cmd命令窗口下
adb 先连接上设备
然后执行adb shell连接进入设备的命令窗口
adb shell
再执行su获取设备的root的权限执行后续命令
su
然后先后执行
toybox ulimit -P $(pidof 应用包名) -c unlimited
sysctl kernel.core_pattern="data/data/应用包名/files/core.%p.%t"
kill -SIGXCPU $(pidof 应用包名)
其中应用包名替换为需要dump的应用包名,执行完最后一条命令后,则会在data/data/应用包名/files/目录下生成名为:core.xxxx.xxxxxxx 的core_dump内存文件。
查看core文件,使用cd 命令到目录下
cd data/data/应用包名/files/
使用ls命令列出当前目录下的文件
ls
为了能在windows使用adb pull把文件拉到电脑中,需要先赋予文件的读写权限,使用chmod 777命令
chmod 777 要pull出来的文件(这里是core.xxxx.xxxxxxx文件)
在当前命令行下,先后执行2个exit命令回到windows的cmd环境
exit
exit
最后执行adb pull把core文件提取到电脑端D盘的files目录下
adb pull data/data/应用包名/files/core.xxxx.xxxxxxx D:\Files
三、使用010editor可以搜索并分析该应用的内存
则不在本文讨论范围内。
四、后记
由此可见,Android即使是运行时的内存都能很轻易地被dump出来,所以我们放在内存中的数据是不是要稍微考虑安全方面的情况?至少核心敏感内容千万不要明文。
本文收录于《Android 逆向与加固》专栏
系列文章
- Java反射机制详细指南
- Android ClassLoader 重点解析
- Android应用程序启动流程详解(含源码)
- Android第一代加固技术原理详解(附源码)
- Android第二代加固技术原理详解(附源码)
- Android第三代加固技术原理详解(附源码)
- 快速 Dump 应用运行时内存(本篇·攻击视角)
如果你更关心防守,下一篇可以接着看二代加固:dex 不落地之后,内存 dump 这条路是怎么被堵上的。