278

誤ってプロジェクトをEclipseから消去してしまい、携帯電話に転送したAPKファイルしか残っていません。アプリケーションを .apk ファイルにエクスポートするプロセスを逆にして、プロジェクトを元に戻す方法はありますか?

4

13 に答える 13

318

未知のAPKファイルからJavaコード(大まかな、しかし十分に良い)を生成する2つの便利なツールがあります。

  1. dex2jarからdex2jarツールをダウンロードします。

  2. ツールを使用してAPKファイルをJARに変換します:Windows:

     $ d2j-dex2jar.bat demo.apk
     dex2jar demo.apk -> ./demo-dex2jar.jar
    

    MacOS / Linux:

     $ d2j-dex2jar.sh -f demo.apk -o demo.jar
    
  3. JARファイルが生成されたら、JD-GUIを使用してJARファイルを開きます。Javaファイルが表示されます。

出力は次のようになります。

JD GUI

次に、他のツールを使用して、APKファイルからAndroidManifest.xmlとリソースファイル(画像、翻訳など)を取得できます。

  • Apktool

     $ java -jar apktool.jar -q decode -f demo.apk -o outputDir
    
  • AXMLParser

     $ apkinfo demo.apk
    
  • NinjaDroid

     $ ninjadroid demo.apk --all --extract
    
于 2012-10-04T18:29:49.703 に答える
87

まず第一に、thisビデオをお勧めします。これであなたの疑問がすべて解消されます

そうでない場合は、それを通過してください

Procedure for decoding .apk files, step-by-step method:

Step 1:

新しいフォルダーを作成し、その中に .apk ファイル (デコードしたいファイル) を入れます。この.apkファイルの拡張子の名前を変更して.zip(例: filename.apk から filename.zip に名前を変更)、保存します。

.zip への変換に問題がある場合は参照してくださいlink

.zip を取得すると、classes.dex ファイルなどが取得されます。この段階では、drawable は表示されますが、xml および java ファイルは表示されないので、続行します。拡張機能が表示されない場合は、構成を確認してください

Step 2:

この zip apk ファイルを同じフォルダーに抽出します。これからdex2jarをダウンロードしますlink

同じフォルダに解凍します。コマンドプロンプトを開き、ディレクトリをそのフォルダーに変更します。

次にdex2jar classes.dex、入力してエンターを押します。classes.dex.dex2jarこれで、同じフォルダーにファイルが取得されます。

次に、 Java逆コンパイラをダウンロードします

jd-gui をダブルクリックし、ファイルを開くをクリックします。次にclasses.dex.dex2jar、そのフォルダーからファイルを開きます。クラスファイルを取得し、これらすべてのクラスファイルをsrc名で保存します(ファイルをクリックしてから、jd-guiで「すべてのソースを保存」をクリックします)。その zip ファイル(classes_dex2jar.src.zip)を解凍すると、アプリケーションのすべての Java ファイルが取得されます。

この段階で Java ソースを取得できますが、xml ファイルはまだ読み取れないため、続行します。

Step 3:

別の新しいフォルダーを開き、これらのファイルを配置します

  1. デコードしたい.apkファイルを入れてください

  2. windows v1.xAnd用のApktoolをダウンロードApktool

Googleを使用してウィンドウをインストールし、同じフォルダーに入れます

  1. Googleを使用してframework-res.apkファイルをダウンロードし、同じフォルダーに入れます(すべてのapkファイルがframework-res.apkファイルを必要とするわけではありません)

  2. コマンド ウィンドウを開く

  3. APKtool のルート ディレクトリに移動し、次のコマンドを入力します。 apktool if framework-res.apk.

上記のコマンドの結果はFramework installed ....

  1. apktool d "appName".apk ("appName" は、デコードするアプリケーションを示します) そのフォルダーにファイル フォルダーが作成され、xml ファイルも簡単に読み取れるようになりました。

Step 4: 最後にres/、開始時のターゲットであるプロジェクトの Java コードと同様に取得しました。

P.S.上記の手順で res フォルダーを取得できない場合は、新しいフォルダーをインストールしてください。apktool

  • Java 1.7 はインストールされていますか? Apktool 2.x をインストールします
  • Java 1.6 以降がインストールされていますか? Apktool 1.x をインストールします。

Enjoy and happy coding

于 2013-05-14T13:35:06.983 に答える
5

あまり。smaliやdex2jarなど、人間が読める形式の出力を生成するdex逆アセンブラ/逆コンパイラスイートがいくつかあります(dex2jarの場合、JD-GUIなどを使用してJavaコードを取得できますが、プロセスは次のとおりです。完全ではなく、ソースコードを100%再作成できる可能性はほとんどありませんが、ソースツリーの再構築を開始する場所を提供する可能性があります。

于 2012-10-04T17:54:38.103 に答える
5

これを行う新しい方法があります。

Android Studio 2.2 には APK Analyzer があり、apk に関する多くの情報が得られます。ここで確認してください。

アプ

于 2016-06-14T06:38:38.377 に答える
3

はい、プロジェクトを取り戻すことができます。yourproject.apkファイルの名前をに変更するだけyourproject.zipで、そのZIPファイル内のすべてのファイルを取得できます。ファイル拡張子を.apkから.zipに変更します。そのZIPファイルからファイルを抽出し、classes.dex次の方法で逆コンパイルします。

まず、DEX上のすべての(コンパイルされた)クラスをJARに抽出するためのツールが必要です。中国の学生が作ったdex2jarというものがあります。

次に、JD-GUIを使用して、JAR内のクラスをソースコードに逆コンパイルできます。dex2jarはいくつかの最適化を適用するため、結果のソースコードは非常に読みやすいはずです。

于 2012-10-04T18:03:21.950 に答える
2

以下の手順に従ってこれを行うか、このプロセスにapkToJava gemを使用するだけで、必要なツールのインストールも処理されます。

  • apk ファイルを zip に変換する
  • ファイルを解凍します
  • そこから classes.dex を抽出します
  • dex to jar を使用して、classes.dex を jar ファイルに変換します
  • jadx gui を使用して、jar ファイルを Java ソース コードとして開きます。
于 2016-01-31T06:24:38.693 に答える