APKを逆コンパイルしてコードとリソースを取得します


このセクションの概要

「Decompile Apk」は非常にハイエンドであるように見えますが、実際はそうではありません。単に逆コンパイル ソフトウェアを使用して APK を逆コンパイルし、プログラムのソース コード、画像、XML リソース、その他のファイルを取得するだけです。他の人の APP インターフェースがとても美しい、または他の人の写真素材が気に入った、などということはありませんか。簡単にするには、他の人の APK をダウンロードして、サフィックス名を xxx zip に変更します。次に解凍します: 作成者は APK をランダムに解凍しました。


1.png

res ディレクトリを開いて、その中にある写真素材を取得できます

2.png

ただし、この方法では .png や .jpg などの一部のビットマップ ファイル リソースしか取得できません。XML リソースの場合は、APK の Java コードを表示すると文字化けしていることがわかります。これらはすべてclasses.dexファイルにパッケージ化されているため、これも機能しません。 しかし、逆コンパイルはあなたのニーズを解決することができます ~ さらに、他人の APK を自分の署名で再パッケージして関連する市場に公開するなど、違法なことをするために逆コンパイルを使用しないでください... さらに、私たちは他人のコードを参照します。完全なコピーではなく! ! !覚えて! !

1. 用意する3つの道具

  1. apktool: リソース ファイルの取得、画像ファイル、レイアウト ファイル、および一部の XML リソース ファイルの抽出

  2. dex2jar: APKをJavaソースコードに逆コンパイルします(classes.dexをjarファイルに変換します)

  3. jd-gui: 2で変換されたjarファイルを表示します。つまり、Javaファイルを表示します。 読者の便宜のために、ここに 3 つのパッケージをまとめてクラウド ディスクに置きます。必要に応じてダウンロードできます: decompilation.zip に関連する 3 つのツール


2. apktool を使用して APK を逆コンパイルし、画像と XML リソースを取得します。

ダウンロードした apktool を解凍すると、次のファイルが表示されます (2 つの csdn は無視してください。1 つは逆コンパイルされた apk、もう 1 つは逆コンパイルされたファイルです)。

3.png

次に、cmd.exe をダブルクリックしてコマンド ラインに移動し、「apktool.bat d csdn.apk」と入力して Enter キーを押します。

4.png5.png

次に、生成された csdn フォルダーが表示されます。このフォルダーには、必要なリソースが含まれています。

6.png

7.png

さて、XML リソースができましたね?写真素材も充実!


3. dex2jar を使用して、classes.dex を jar ファイルに変換します。

ダウンロードした dex2jar フォルダーを解凍し、apk 内のclasses.dex を dex2jar.bat が存在するディレクトリにコピーします。

8.png

cmd を開いてこのディレクトリに移動します: 次のように入力します: d2j-dex2jar.batclasses.dex

9.png

次に、jar パッケージが生成されたことがわかります。

10.png

OK、変換は完了しました。


4. jd-gui を使用して、jar パッケージ内の Java コードを表示します。

OK、jd-guiフォルダーを開きます

11.png

開いた後、変換された jar パッケージを 3 で開きます。内部のコードが表示されます。

12.png

csdn クライアントはコードを難読化しません...オープン ソースの精神に基づいているのかもしれません。コードを学びましょう!一般的に、apk リリースは次のようになります。 難読化してから暗号化を実行するか、より一般的に使用されているサードパーティの暗号化プラットフォームを使用します。興味がある場合は、Baidu で詳細な紹介を確認することもできます。


このセクションの概要

さて、APK の逆コンパイルについてはこれで終わりです。もう準備ができているので、試してみましょう。悪いことはしないでください。他の人の労働の成果を尊重しましょう。さらに、環境構築といくつかの一般的な開発テクニックに関する最初の章はここまでです。次のセクションから、このチュートリアル シリーズの第 2 章を開始します。Android の一般的な UI コントロールについて学習します。関連する基本的なコントロールが多数あるため、コントロールを学習し続けると、面白くない可能性があります。このようにして、毎日 1 つのコントロールとその他の知識ポイントを学習します。アイデアを考えていきますので、お楽しみに〜ありがとう〜