所以我试图使用 memfetch 从我的三星 Galaxy Nexus 中转储特定进程的内存。
我从 http://lcamtuf.coredump.cx/ 下载了memfetch
使用以下命令提取其内容:
tar -xvf memfetch.tgz
在我的memfetchls
目录上运行:
ls
COPYING Makefile memfetch.c mffind.pl README
在这个阶段,我应该运行 make 命令来获取我的 memfetch 可执行文件。
编辑memfetch.c
文件,我删除了该#include page.h
行
所以首先我使用以下命令下载了 Android ARM 架构。这是用于 memfetch 的静态交叉编译:
apt-get install gcc-arm0-linux-gnueabi
然后我Makefile
在以下区域进行了编辑:
FILE = memfetch
CFLAGS = -Wall -09 -static
CC = arm-linux-gnueabi-gcc
所以成功了,我有我的 memfetch 可执行文件:
make
arm-linux-gnueabi-gcc -Wall -09 -static memfetch.c -o memfetch
ls
COPYING Makefile memfetch memfetch.c mffind.pl README
然后我将 memfetch 可执行文件推送到我的 Android 手机中:
adb push memfetch /sdcard/memfetch
现在从这里我用我的手机工作。我运行执行了adb shell
命令并创建了一个目录来存储 memfetch 可执行表,理想情况下从那里运行它:
adb shell
su
cd /sdcard
mkdir tmp
mount -t tmpfs tmpfs tmp
cp memfetch tmp
cd tmp
chmod 6755 memfetch
现在问题来了。当我执行 memfetch 时,我收到以下错误:
./memfetch 1197
memfetch 0.05b by Michal Zalewski <lcamtuf@coredump.cx>
Usage ./memfetch [ -sawn ] [ -S xxx ] PID
-s - wait for fault signal before generating a dump
-a - skip non-anonymous maps (libraries etc)
-w - write index file to stdout instead of mfetch.lst
-m - avoid mmap(), helps to prevent hanging on some 2.2 boxes
-S xxx - dump segment containing address xxx (hex) only
无论我尝试转储什么 PID,我总是遇到同样的错误。我什至尝试了各种标志组合,但没有一个有效:(
感谢您提供任何高级帮助,如果需要任何其他信息,请告诉我。