2017-03-11 6 views
0

タイトルとして、xposedを使用してアプリケーションから呼び出されたすべてのメソッドをログアウトして停止するまで開始します。私はクラス名、メソッド名、すべてのメソッドをフックしたくないログを記録したい。 このコードを試しますが、エラーgetMethodが見つかりません。アプリで呼び出されたすべてのメソッドをXposedでログに記録する

findAndHookMethod("java.lang.Class", lpparam.classLoader, "getMethod", String.class, Object.class, new XC_MethodHook() 

ありがとうございます!

+0

フック "をhandleHookedMethod(メンバー方法、int型のoriginalMethodId、additionalInfoObjは、でthisObjectは、[]引数をオブジェクトのオブジェクト)" *アプリによって呼び出されるすべての*メソッドかなり不可能です。ログを印刷するために使用した方法を使用する場合はどうなりますか?あなたが望むのは、アプリケーション内のメソッドの静的なリストを見ることだけであれば、APKファイルを逆コンパイルするために 'apktool'を使うことができます。 –

+0

私はすべてのメソッドをフックしたくありません。私はちょうどそれが私がそれを停止するまで開始からアプリによって呼び出されたメソッドをログに記録したい。 – LieuLiau

答えて

0

前述のように、Xposedは、オーバーヘッドのためにこの状況に入る方法ではありません。

最も簡単な解決策は、Googleが提供するdmtracedumpを使用することです。ほとんどのx86 Androidイメージとエミュレータには、デバッグ可能フラグ(ro.debuggable)が付いています。クローズドソースアプリケーションにも使用できます。

さらに、Emmaなどの他のツールもAndroidでも動作することが知られていますが、ソースコードに変更が必要な場合があります。

+0

はい、私はこのtraceviewを知っていますが、問題はアプリが強制的に閉じる前に停止しているので、トレースファイルは書き込まれません。 – LieuLiau

+0

これはアプリですか、非公開のソースアプリですか?あなたが望むのは、実行されたメソッド/クラスの名前であれば、Emmaのコードカバレッジは時間の経過とともに取り出すことができます。 – 4knahs

+0

これは閉じたソースアプリケーションです。エマはそれを使うことができますか? – LieuLiau

1

あなたが探しているような一言の解決策はありません。

すべてのメソッドをフックすると、アプリケーションから呼び出されたメソッドが開始から停止まで(何らかの理由で)、すべてのメソッドをフックしたくない場合は、

私がやったことは私のAPKを逆コンパイルし、名前を取得する第1の使用apktoolた動作します(ソートの)JavaのVM自体変更されたと考えることができます(NOT私が推薦する何かを。)

ソリューションすべてのクラスのすべてのメソッドの 次に、xposedを使用してすべてのクラスのすべてのメソッドにフックし、現在の関数名をdlogに出力しました。

それが唯一の一種の働きなぜ

Xposedが、それはメソッドをフックするたびにオーバーヘッドがあります。 xotedされたアプリの一般的な使い方については、それほど多くはありません。しかし、あなたがアプリケーションの各メソッドにフックをかけ始めると、オーバーヘッドが非常に急速に大きくなります。つまり、上記の方法は小さなアプリでは機能しますが、大型のアプリでは非常に迅速にハングしてクラッシュします。

もソートの

FRIDAを働く代替はネイティブアプリケーションにJavaScriptを注入する方法です。 Hereすべての関数呼び出しをログに記録する方法を示します。上記のリンクでは、すべての関数呼び出しをPythonコードで記録していますが、同じコードもAndroidで動作します。

+0

ありがとうございます:) – LieuLiau

0

すべてのJavaメソッドをログに記録する方法があります.XposedBridgeを変更します。

XposedBridge.javaの方法 て

XposedフックJavaメソッド

Log.v(TAG, "className " + method.getClass().getName() + ",methodName " + method.getName()); 
関連する問題