APKファイルからプロジェクトへのリバースエンジニアリング


244

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



2
あなたは日食がそれ自身のバージョン履歴を持っていることを知っていますか?
eisは


4
あなたにとって重要な何かを書いているなら、VCSを使うべきです。Bitbucketには無料のプライベートリポジトリがあります。
lxknvlk 2015年

回答:


287

不明なAPKファイルからJavaコードを生成する便利なツールが2つあります(ラフですが十分です)。

  1. dex2jarからdex2jarツールをダウンロードします
  2. ツールを使用してAPKファイルをJARに変換します。

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

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

JD GUI


6
リソースファイルの取得方法
srini 2013

26
cmdは非推奨ですd2j-dex2jar。代わりに使用してください(v0.0.9.15)。
Fredrick Gauss

1
@sriはapkファイルの名前をzipに変更して抽出するだけで、resフォルダーにリソースファイルが作成されます
Hoang Huynh 2013年

8
@HoangHuynhにはres、読み取り不可能なxmlファイルを含むフォルダーがあります
S.Thiongane

6
Mac:あなたはdex2jarを使用できない場合はpermission denied、この操作を行う $sudo chmod +x d2j-dex2jar.sh
MIN2

81

まず第一に私はthisビデオをお勧めしますこれはあなたのすべての疑問をクリアします

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

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

Step 1:

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

.zipへの変換に問題がある場合は、 link

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

Step 2:

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

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

次にdex2jar classes.dex、Enter キーを押して入力します。これ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

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

  1. グーグルを使用して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


本当に便利です。あなたが言及していないちょうど何か:これapktool.jarは同じパッケージにありません、私は以前のパッケージからそれを手に入れ、それを同じディレクトリに貼り付けましたapktool
S.Thiongane 2014年

1
私はコードをリバースエンジニアリングしましたが、なぜクラスの名前、変数がaa、bcなどの多くのエラーであるのですか
user2934930

1
cmdでそれを実行できない
Meghal Agrawal

それを行う他の方法は?
Meghal Agrawal、2015

2
@ user2934930これは、ProGuardを使用してコードが難読化されていることを意味します。
cascal

58

ソフトウェアは不要で、手順も多すぎません。

APKをアップロードして、このサイトからすべてのリソースを取得してください。

https://www.apkdecompilers.com/

このWebサイトは、APKファイルに埋め込まれたコードを逆コンパイルし、ファイル内の他のすべてのアセットを抽出します。

注:私はAPKファイルを逆コンパイルして、このWebサイトから1分以内にコードを取得します

アップデート1

別のオンライン逆コンパイラサイトを見つけました、

http://www.javadecompilers.com/apk/-ポップアップブロックを要求し続けない

アップデート2:

Playストアでapkデコンパイラーアプリを見つけました。

https://play.google.com/store/apps/details?id=com.njlabs.showjava

Androidフォンでapkファイルを逆コンパイルできます。また、このアプリケーションでjavaおよびxmlファイルを表示できます

更新3:

Android Studio 2.2バージョンのAPK機能の分析という別のオプションを使用できます

ビルド-> APKの分析-> APKを選択->結果を表示

ここに画像の説明を入力してください


3
最後のメソッドでは、Javaクラスを開くことができず、メソッド名のみが表示されます
Choletski

@CholetskiあなたはShowJavaを試していますか?私を試して更新しない場合
Ranjith Kumar

@RanjithKumarは、APKサイズが50 MBに制限されています。デコンパイルするAPKは85 MBです。
Ravi Sharma


1
Androidスタジオでその逆コンパイルされたプロジェクトを実行する方法?誰でもこれについて書いてください。
Mayur kukadiya、


4

あんまり。smalidex2jar などの多くのdex逆アセンブラー /逆コンパイラースイートがあります(dex2jarの場合、JD-GUIなどを使用してJavaコードを取得できますが、プロセスは完璧ではなく、ソースコードを100%再作成できる可能性はほとんどありませんが、ソースツリーの再構築を開始する場所を提供できる可能性があります。


@MAC:APKファイルではなくソースが必要です!!
Shashank Kadne

2
@ShashankKadneは私の言葉を取り戻すことができないかもしれません
MAC

3

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

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

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


3

Androidプラットフォームの場合、ShowJavaを試すことができます、Playストアで入手できる。

生成されたコードはアプリのインターフェースから参照でき、生成されたJavaファイルとフォルダー構造は、結果のShowJavaフォルダー/sdcardとともにのフォルダーに保存されます。.jar、変換のファイル。

アプリは無料で、メインビューの下部に広告バナーが表示されますが、アプリ内購入オプション(3,99 $)で削除できます。アプリ内購入では、広告バナーの削除以外の機能は追加されません。

開示:私はアプリの開発者ではありませんし、彼とは何の関係もありません。


私は通常、次の用途に使用します...素敵なアプリ
Rahul Kushwaha

2

以下の手順に従ってこれを行うか、単にこのプロセスにapkToJava gemを使用してください。動作させるために必要なツールのインストールも行います。

  • apkファイルをzipに変換する
  • ファイルを解凍します
  • それからclasses.dexを抽出する
  • dex to jarを使用して、classes.dexをjarファイルに変換します
  • jadx guiを使用して、jarファイルをJavaソースコードとして開く

2

あなたがプロの代替品を探しているなら、JEB Decompilerを見てください、PNFソフトウェアの。

ほとんどのコードを逆コンパイルできるデモ版があります。


2

以下は、APKファイルからソースコードへのリバースエンジニアリングを実行するために使用できるツールの一部です。

  1. Dex2jar
  2. Javaデコンパイラー
  3. Apktool
  4. APKアナライザー

2

Android Studio 3.5では、1分で達成できるのはとても簡単です。以下は、段階的なプロセスです。

1: Android Studioを開き、ウィンドウボタンを押します->「Android Studioと入力」->アイコンをクリックして、次のようなAndroid Studioのスプラッシュ画面を開きます。

ここに画像の説明を入力してください

2:ここに「プロファイルまたはデバッグAPK」オプションが表示されます。それをクリックしてapkファイルを選択し、[OK]を押します。

ここに画像の説明を入力してください

3: apkのサイズに応じて、すべてのマニフェストとJavaクラスを1分以内に開きます。

ここに画像の説明を入力してください

それでおしまい。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.