0

そのため、memfetch を使用して、Samsung Galaxy Nexus から特定のプロセスのメモリをダンプしようとしています。

http://lcamt​​uf.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に関係なく、常に同じエラーが発生しました。さまざまなフラグの組み合わせを試してみましたが、どれも機能しませんでした:(

高度なサポートに感謝します。追加情報が必要な場合はお知らせください。

4

1 に答える 1

0

これは、Linux コマンドへの入力としていくつかのヌル文字を作成する Windows コマンド ラインの愚かさによるものです。

解決策は、他の入力「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]);

于 2014-06-07T03:23:13.470 に答える