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をインストールします

  1. うまくダウンロードされますapktoolファイルとapktool_2.3.1.jarファイルの準備ができてapktool_2.3.1.jar名前が変更されますapktool.jar;
  2. will apktool.jar vsus apktool移動/usr/local/binディレクトリの下(ターミナルからコマンドを出力できます)open /usr/local/binこのディレクトリを開くには)
  3. 上記の2つのファイルに実行可能権限を追加します。つまり、ターミナルに入力して実行します。chmod +x apktool.jar chmod +x apktool Copy code
  4. ターミナルでの入力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バージョンを試してみてください。

スレッド 'main'の例外

参照