Android APKの詳細な操作ガイドを逆コンパイルする[ApkTool、dex2jar、JD-GUI](Mac)
Decompile Android Apk Detailed Operation Guide Apktool
約4年前に記事を掲載しました。 「Android開発の逆コンパイルと逆コンパイル」 この記事では、WindowsプラットフォームでAPKを逆コンパイルする方法について説明しました。今日では、Macシステムを使用する学生がますます増えています。 MacプラットフォームでAPKを逆コンパイルする方法について投稿を書くことができるかどうか、多くの友人から質問がありました。記事、今日はMacプラットフォームでAPKを逆コンパイルする方法について書く時間を取ります、私は学習に興味のある学生を助けることを望んでいます。
逆コンパイルについて説明する前に、盲検化を始めましょう。
APKとは何ですか?
APKのプロセス全体は、AndroidアプリケーションパッケージであるAndroidアプリケーションパッケージです。 Androidアプリケーションをインストールするときは、APKファイルをローカルにダウンロードしてインストールする必要があります。 AndroidシステムはそれをAndroidアプリケーションパッケージとして認識します。また、APKは実際にはZIPファイル形式に基づくファイルであるため、解凍ソフトウェアを使用して抽出できることを指摘しておく必要があります。 APKファイルを抽出すると、次のファイルが表示されます。
- .dexコードファイル:これは、DEXによってコンパイルされたクラスファイルのファイル形式であり、Dalvik仮想マシンで実行されているメインコード部分に使用されます。
- リソースリソースファイル:画像リソース、カラーリソース、文字列、レイアウトなど、リソースおよびresディレクトリで表されるAndroidプログラムで必要な一部のリソース。
- アセットファイル:アセットファイルは、フォントや着信音などの保存など、アセットディレクトリに保存されます。
- マニフェストマニフェストファイル:AndroidManifest.xmlで表されるAndroidマニフェストファイル。マニフェストファイルは、Androidシステムへのアプリケーションに必要な情報を提供します。アプリケーションのコードを実行するには、システムにこの情報が必要です。
APKの後で、APKを逆コンパイルするために必要なツールを紹介することを理解しています。
APKを逆コンパイルするにはどのようなツールが必要ですか?
WindowsでもMacでも、逆コンパイルAPKはApkTool、dex2jar、JD-GUIなしでは実行できません。これらの3つのツールは何に使用されますか?
- ApkTool:Apkに適用されるリバースエンジニアリングツールです。コンパイル、逆コンパイル、署名などの機能があります。この記事では、ApkToolを使用してapk xmlファイル、AndroidManifest.xml、および画像を表示する方法について説明します。
- Dex2jar:名前が示すように、このツールの役割は主にdexファイルをjarファイルに変換することです。 jarに変換した後、JD-GUIを使用して、dexを逆コンパイルした後にコードを表示できます。
- JD-GUI:Java逆コンパイラGUI。通常はdex2jarを使用して、逆コンパイルされたdexコードを表示できます。
準備(ApkTool、dex2jar、JD-GUIをインストールする特定のプロセス)
ApkTool、dex2jar、およびJD-GUIの機能を紹介した後、逆コンパイルの前にいくつかの準備作業を行います。まず、ApkToolをインストールする必要があります。
ApkTool
ApkToolをダウンロードする
誰もができる ibotpeaches.github.io/Apktool/ins… ApkToolをダウンロードしてください。誰でもダウンロードできます。 ApkTool、dex2jar、JD-GUI 。
ApkToolをインストールします
- うまくダウンロードされます
apktool
ファイルとapktool_2.3.1.jar
ファイルの準備ができてapktool_2.3.1.jar
名前が変更されますapktool.jar
; - will
apktool.jar
vsusapktool
移動/usr/local/bin
ディレクトリの下(ターミナルからコマンドを出力できます)open /usr/local/bin
このディレクトリを開くには) - 上記の2つのファイルに実行可能権限を追加します。つまり、ターミナルに入力して実行します。
chmod +x apktool.jar chmod +x apktool Copy code
- ターミナルでの入力
apktool
実行できるかどうかを確認し、実行できない場合は、実行できますSystem preferences
開くSecurity and privacy
クリックしてapktool.jarを実行します
この時点で、ApkToolのインストールが完了し、ターミナルで実行されます。apktool
コマンドには、次の出力が表示されます。
dex2jar
dex2jarをダウンロード
誰もができる sourceforge.net/projects/de… dex2jarをダウンロードしてください。誰でもダウンロードできます。 ApkTool、dex2jar、JD-GUI 。直接ダウンロードして解凍します。
JD-GUI
JD-GUIをダウンロードする
誰もができる jd.benow.ca/ JD-GUIをダウンロードしてください。誰でもダウンロードできます。 ApkTool、dex2jar、JD-GUI 。
ApkToolを使用してAPKを逆コンパイルし、xmlファイル、AndroidManifest.xml、および画像を取得します
cd / You store the apk directory or use the absolute path of the xxx.apk file in the following command Apktool d xxx.apk //This command will generate a directory with the same name as your compiled apk in the same directory. Copy code
apkは、上記のコマンドで逆コンパイルできます。
次に、逆コンパイル後に生成されたディレクトリに、関連するリソースファイルが表示されます。
APkToolはリソースファイルの抽出と処理しかできないため、.dexタイプのファイルを表示することはできません。したがって、dex2jarを使用する必要があります。
Dex2jarはdexをjarに逆コンパイルします
最初のステップでは、apkを抽出してdexファイルを取得します
解凍ソフトウェアを使用してapkを解凍します。
apkファイルのサフィックスを.rarに変更し、ダブルクリックしてすばやく解凍することもできます。
解凍ソフトウェアでapkを開き、apktoolで異なるapkを開きます
- apktoolを使用した直接解凍apkおよび逆コンパイルapkはAndroidManifest.xmlを取得できますが、直接解凍されたAndroidManifest.xmlは文字化けしており、直接表示することはできません。
- resリソースファイルを取得するための直接解凍apkにはresources.arsc部分が含まれておらず、apktoolresを使用してコンパイルされたresが含まれています
上の図から、2つのclasses.dexファイルがあることがわかります(これはMultiDexのアプリケーションによるものです)。これはプロジェクトのソースコードです。 2つのファイルを解凍したdex2jarディレクトリにコピーします。
次に、次のコードを実行して逆コンパイルします。
cd / Your dex2jar decompression directory is also the directory where the class.dex file is stored in the above figure. sh d2j-dex2jar.sh classes.dex sh d2j-dex2jar.sh classes2.dex Copy code
上記のコマンドで2つの.jarファイルを取得します。
JD-GUIを使用して、逆コンパイルされたプログラムのソースコードを表示します
dexをjarに変換した後、JD-GUIを使用して逆コンパイルされたプログラムのソースコードを表示できます。
操作手順は非常に簡単です。ダブルクリックして実行jd-gui-1.4.0.jar
、続いてclasses-dex2jar.jar
JD-GUIインターフェイスにドラッグアンドドロップします。
よくある質問
許可が拒否されましたd2j_invoke.sh
d2j_invoke.shのアクセス許可を追加します。
Sudo chmod +x d2j_invoke.sh //sudo chmod + cancel permissions Copy code
スレッド 'main'の例外brut.androlib.AndrolibException:arscファイルをデコードできませんでした
Apktoolのバグは他のバージョンのApktoolを使用していますが、apktool_2.3.3.jarでこの問題が発生しました。apktool_2.3.1.jar
この問題が発生した場合は、別のApktoolバージョンを試してみてください。