使用Android三星Galaxy Nexus进行Memfetch

时间:2013-08-22 05:12:30

标签: android adb

所以我正在尝试使用memfetch从三星Galaxy Nexus中转储特定进程的内存。

我从http://lcamtuf.coredump.cx/

下载了memfetch

使用以下命令提取其内容:

tar -xvf memfetch.tgz

在我的memfetch目录中运行ls

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 exectable,理想情况是从那里运行它:

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,我总是得到同样的错误。我甚至试过各种旗帜组合,但没有一个工作:(

感谢您提供高级帮助,如果需要任何其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

这是因为Windows命令行的愚蠢,使得一些空字符成为linux命令的输入。

解决方案是,如果你不使用其他输入“samwS”注释这一行,

while ((opt=getopt(argc,(void*)argv, "+samwS:h"))!=EOF) switch(opt) { case 's': waitsig=1; break; case 'a': skipmap=1; break; case 'w': textout=1; break; case 'm': avoid_mmap=1; break; case 'S': if (sscanf(optarg,"%x",&onlyseg)!=1) fatal("Incorrect -S syntax (hex address expected).\n"); break; default: usage(argv[0]); }

你使用它们只是评论 default: usage(argv[0]);