APK dexファイルを逆コンパイルしてさまざまなフックを挿入できるツールがいくつかあります。メソッドがフックされたかどうかを調べる方法(アプリケーションをクラッキングするためにレイヤーとして機能するサードパーティのメソッド)
たとえば、インストーラのパッケージ名を確認する場合は、関数PackageManager.getInstallerName()
を呼び出す必要があります。
私が心配している限り、彼らはメソッドへのリフレクションを置き換えてから、実際のメソッドを呼び出すか、またはスプーフィングされた結果を送信します。
これは、メソッドをネイティブまたはリフレクションで呼び出す場合は重要ではないという大きな利点があります。
この場合、getInstallerName()
は常にcom.google.android.feedback
を返します。
なフックのためのいくつかのソースコードはここで見つけることができます:http://androidcracking.blogspot.de/2011/03/original-smalihook-java-source.html
は、これらのフックを検出する方法はありますか?
ありがとうございます回答。明らかに、APKをmd5sumすることは不可能です(合計を保存すると、合計が変更されます)、唯一の方法はclasses.dexをcrcすることです。また、dex2jarは実行時に使用するには高価になります。単にsmaliクラスのクラスをチェックする方法はありますか?また、私はより一般的な方法を必要とするだけでなく、この1つのツールです。 – Force
ああ、実行時にこれをやりたかったことを理解していない:)それはかなり変わる。私は自分のレスポンスを編集します... – waxspin
'Class.forName()'は良いアプローチですが、クラスはDEXに挿入されませんが、バイトコードを変更するだけです。つまり、追加の方法はありません。 – Force