そのため、memfetch を使用して、Samsung 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に関係なく、常に同じエラーが発生しました。さまざまなフラグの組み合わせを試してみましたが、どれも機能しませんでした:(
高度なサポートに感謝します。追加情報が必要な場合はお知らせください。