2

次のような状況があります。Android フォンのシステム コールを監視したいので、そのためのスクリプトを作成しました。Android Emulator では完全に動作します (アプリケーションのトレースを Ubuntu の特定のファイルに書き込みます)。問題は、実際の電話を接続して分析すると、結果ファイルに次のように表示されることです。

ptrace attach failed: Operation not permitted

このコードを使用して取得していますが、ルート化された実際のデバイスではなくエミュレーターで機能する理由がわかりません。

これは私がperlで使用するコマンドです:

system("$dirTools/adb -s $Device shell strace -p $PID[1]>$dirRecordDataSet/$Date/$appName &");

なにか提案を?前もって感謝します

4

2 に答える 2

1

adbデーモンが限られた権限で実行される可能性があります。setuid roo を使用して strace のインストールを試みることができます。これに関するマンページのアドバイスは次のとおりです。

Setuid インストール

strace が root に setuid でインストールされている場合、呼び出し元のユーザーは、任意のユーザーが所有するプロセスに接続してトレースすることができます。さらに、setuid および setgid プログラムが実行され、正しい有効な権限でトレー​​スされます。完全な root 権限を持つ信頼されたユーザーのみがこれらの操作を実行できるようにする必要があるため、strace を実行できるユーザーがこの信頼を持つユーザーに制限されている場合に限り、strace を root に setuid としてインストールすることは理にかなっています。たとえば、モード「rwsr-xr--」、ユーザー root およびグループ trace で strace の特別なバージョンをインストールすることは理にかなっています。ここで、trace グループのメンバーは信頼できるユーザーです。この機能を使用する場合は、通常の luser が使用する strace の非 setuid バージョンをインストールすることを忘れないでください。

于 2011-03-01T14:55:14.177 に答える
0

この質問Android emulatorの回答に従って、APK ファイルを にインストールできます。インストール後、

Eclipse に移動し、DDMSWindows からビューを開く => パースペクティブを開く。

タブに移動File Browserし、任意のフォルダをクリックして、[ファイルをデバイスにプッシュ] をクリックします。空の trace.txt ファイルをここにアップロードできます。ファイルをsdcardフォルダーに入れることをお勧めします。

上記のリンクにある CMD に移動します。タイプしadb shellます。と入力してSDカードに移動しますcd sdcard

コマンドラインに入力psし、パッケージ名から APK ファイルの PID を見つけます。

と入力しstrace -p <pid> -o trace.txtます。すべてのシステム コールは、このファイルに配置されます。APK の追跡を終了したい場合は、この trace.txt ファイルをコンピューターにダウンロードして、追跡を確認できます。

于 2012-12-15T11:01:48.327 に答える