私のラップトップのハードドライブがクラッシュしただけで、私は過去2ヶ月間取り組んできたアプリのすべてのソースコードを失いました。私が持っているのは私が友人にそれを送ったときから私のEメールに格納されているAPKファイルだけです。
このAPKファイルからソースコードを抽出する方法はありますか?
簡単な方法:オンラインツールを使用してください http://www.javadecompilers.com/apk 、apkをアップロードしてソースコードを入手してください。
.apkファイルをデコードする手順、ステップバイステップの方法:
新しいフォルダを作成し、デコードしたい.apkファイルを上書きします。
この.apkファイルの拡張子を.Zipに変更し(例:filename.apkからfilename.Zipに名前変更)、保存します。これで、classes.dexファイルなどにアクセスできます。この段階では、描画可能ファイルは表示されていますが、xmlファイルやJavaファイルは表示されていないので、続行します。
同じフォルダ(または新しいフォルダ)にこの.Zipファイルを解凍します。
dex2jarをダウンロードして 同じフォルダ(または新しいフォルダ)に展開します。
Classes.dexファイルをdex2jarフォルダに移動します。
今すぐコマンドプロンプトを開き、そのフォルダ(または新しいフォルダ)にディレクトリを変更します。それからd2j-dex2jar classes.dex
と書いて(mac terminalまたはubuntuの場合は./d2j-dex2jar.sh classes.dex
と書いてください)、enterを押してください。これで、同じフォルダにclasses.dex.dex2jarファイルがあります。
Javaデコンパイラのダウンロード 、jd-guiをダブルクリックし、開いているファイルをクリックして、そのフォルダからclasses.dex.dex2jarファイルを開きます。これでクラスファイルが得られます。
これらのクラスファイルすべてを(jd-guiでは、[ファイル] - > [すべてのソースを保存]をクリックして)src名で保存します。この段階ではJavaソースを入手できますが、.xmlファイルはまだ読めないので続行します。
今すぐ別の新しいフォルダを開きます
デコードしたい.apkファイルを入れます。
apktool _および_ apktoolインストールウィンドウ の最新バージョンをダウンロードして(両方とも同じリンクからダウンロードできます)、それらを同じフォルダーに配置します。
コマンドウィンドウを開く
今apktool if framework-res.apk
のようなコマンドを実行します(あなたがそれを持っていないなら ここでそれを入手してください )そしてnext
apktool d myApp.apk
(myApp.apkはデコードしたいファイル名を表します)
今すぐあなたはそのフォルダ内のファイルフォルダを取得し、簡単にapkのxmlファイルを読むことができます。
両方のフォルダ(この場合は両方とも新しいフォルダ)の内容を単一のフォルダにコピーするだけのステップではありません。
そしてソースコードを楽しんでください...
これは代替の説明です - 念のために、誰かが上記の説明に行き詰まった場合。手順に従ってください:
apktool.bat
(またはLinuxの場合は apktool
)および apktool_<version>.jar
をダウンロードしてください。apktool.jar
に変更し、両方のファイルを同じフォルダーに入れます。cmd.exe
)を開き、そのフォルダに移動します。 Java環境がインストールされていることを確認します(Linuxの場合は、必要なライブラリーに関するメモも確認してください)。apktool decode [apk file]
中間結果 :リソースファイル、AndroidManifest.xml
中間結果 :classes.dex
dex2jar-0.0.9.15.Zip
をダウンロードして抽出します。classes.dex
をdex2jar.bat
にドラッグアンドドロップします(またはDOSボックスに<path_to>\dex2jar.bat classes.dex
と入力します。Linuxの場合はdex2jar.sh
を使用します)。 中間結果 :classes_dex2jar.jar
classes_dex2jar.jar
を解凍します(使用される逆コンパイラによってはオプションになる場合があります)。結果 :ソースコード
注意:サードパーティのパッケージを逆コンパイルすることは許可されていません。このガイドは、APKファイルからのみ個人的なソースコードを復元することを目的としています。最後に、結果のコードはほとんどの場合難読化されます。
APK
ファイルを逆コンパイルすることはできますが、大きな問題が1つ発生する可能性があります。
あなたが書いたコードを返すことはありません。代わりに、コンパイラがインライン展開したものは何でも、変数にはランダムな名前を与え、関数にはランダムな名前を与えます。最初からやり直すよりも、逆コンパイルして元のコードに復元しようとすると、かなり時間がかかる可能性があります。
残念なことに、このようなことは多くのプロジェクトを殺しました。
将来的には、 _ cvs _ 、 _ svn _ 、 git などのバージョン管理システムを学ぶことを強くお勧めします。
そしてそれをバックアップする方法。
Playストア にapk(システムアプリケーションも)を逆コンパイルしてあなたのスマートフォンでソースコードを見ることが可能な新しいアプリケーションもあります。あなたのSDカードにファイルを保存するので、あなたもあなたのコンピュータでそれを見ることができます。 rootやそれ以外のものは必要ありません。
ただインストールして楽しんでください。私はこれがアプリを逆コンパイルするための最も簡単な方法だと思います。
apktool はあなたが試すことができる最高のものです。私はそれを使っていくつかのxmlを保存しましたが、正直なところ私はそれが.Javaコードでどのように動作するかわかりません。
あなたが唯一のコーダーであっても、私はあなたにコードレポジトリを持つことを勧めます。私は自分のプロジェクトに Project Locker を使っています。それはあなたに無料のsvnとgitのレポを与えます。
これら2つの記事では、apktool
とdex2jar
を組み合わせてAPK
ファイルを作成し、それをビルドして実行できるEclipseプロジェクトを作成する方法について説明します。
http://blog.inyourbits.com/2012/11/extending-existing-Android-applications.html
http://blog.inyourbits.com/2012/12/extending-existing-Android-applications.html
基本的にあなた:
apktool
を使用してください。dex2jar
を使用してください。JDGui
を使用してjarファイルを開きます。JDGui
から取り出し、それをEclipse内のクラスに固定して変更します。apktoolは動きます。ソースコードを抽出するためにキーストアを知る必要さえありません(これは少し怖いです)。主な欠点は、ソースがJavaではなくSmali形式で表示されることです。 iconやmain.xmlのような他のファイルは完全にうまくいきます、そして少なくともそれらを回復するのはあなたの時間の価値があります。最終的には、ほとんどの場合、Javaコードを最初から書き直す必要があります。
Apktool ここ を見つけることができます。 apktoolと適切なヘルパー(Windows、Linux、またはMac OS用)をダウンロードするだけです。解凍するには7-Zipなどのツールを使用することをお勧めします。
これを行うにはいくつかの方法があります。
Android Studio 3.0の「Profile or Debug APK」機能を使用してください。
Android StudioでAPKを開いて探索することができます。クラスはsmalliに逆コンパイルされます。リソースは抽出されず、 "Go to Definition"、 "Find All References"、デバッグなどはソースコードなしでは機能しません(Android studio 3.0 canary 9)。 smalidea を使用すると、その他のSmalliの機能が機能する場合があります。
jadx を使用してください。
Jadxは与えられたAPKのコードをJavaソースファイルに逆コンパイルします。
apktool を使用してください。
Apktoolはリソースを抽出し、与えられたapkのためにsmalliにコードを逆コンパイルするコマンドラインツールです。 apktoolを使って再コンパイルすることもできます。これが実際の例です。
$ apktool d test.apk
I: Using Apktool 2.2.4 on test.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: 1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
$ apktool b test
I: Using Apktool 2.2.4 on test
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
I: Copying unknown files/dir...
簡単にソースを見ることができるでしょう:
Androidスタジオ2.3では、Build -> Analyze APK -> Select the apk that you want to decompile
。
そのソースコードが表示されます。
参考のためのリンク:
https://medium.com/google-developers/making-the-most-the-apk-analyzer-c066cb871ea2
.apk ファイルを逆コンパイルする他の方法を紹介します。
あなたは " prankul garg "から最初の2つのステップに従うことができます。だからあなたは別の機会があります:
ステップ3 ':
"JD-GUI" をダウンロードしてください。これは簡単に見つけることができます。 "jd-gui.exe"で .jar ファイルを開きます。 (ファイル>ファイルを開く> ' .jar fileを見つけました')。この手順の後、すべてのリソースを .Zip ファイルに保存できます。
そう、
1番目 - .apk ファイルの名前を .Zip に変更する必要があります。
2番目 - .dex fileをデコードする必要があります(必要な場合は .apk ファイルを dex2jar にデコードしてください、可能です)。
3番目 - .jar fileを JD-GUIでデコードする必要があります
_ online _ toolの下に
http://www.javadecompilers.com/apk
1回のクリックですべてが実行されます。逆コンパイルされた .Javaファイル+リソース+ xml (1つの.zipファイルに含まれます)逆コンパイルできない」または一部のAndroidアセンブラ/マシンコード)
私は個人的にソースコードを入手するために Show Java Android App を推奨しています。 Playストアまたは here からダウンロードできます。
このサイト https://www.apkdecompilers.com/ /自動的にしました。
私は最初に受け入れられた答えで言及されたサイトを試みました、しかしそれは私のために働きませんでした。
Apktool リバースエンジニアリングのサードパーティ製、クローズド、バイナリのAndroidアプリ。
リソースをほぼオリジナルの形式にデコードし、変更を加えた後でそれらを再構築することができます。
それはステップごとにsmalliコードをデバッグすることを可能にします。また、プロジェクトのようなファイル構造とapkの構築などのいくつかの繰り返し作業の自動化により、アプリの操作が簡単になります.
あなたは DexPatcher を試すことができます。それはAndroid Studioとさえ統合します。内部で Apktool と Dex2Jar を使用しています。
あなたはそれらのツールを独立して使うこともできます。 Apktool はapkを逆コンパイルし、.dexファイルを抽出します。これはDex2Jarを使用してさらにjarに変換できます。 Jarは JD-GUI を使用して逆コンパイルできます。あなたはそのツールの助けを借りてJavaコードを見ることができます。実際のコードと逆コンパイルされたコードの類似性は保証できませんが。市場で入手可能ないくつかの高度な コード難読化 ツールがあり、それらはコードをめちゃくちゃにして逆コンパイル/理解を困難にします。例えば。警備員
apktool は行き方です。オンラインapktoolサービスも存在します: http://www.javadecompilers.com/apktool
明らかに、「オンラインの性質」というサービスにはいくつかの制限があります。資産とマニフェストファイルを抽出して調査することはできますが、現時点ではアプリケーションを再コンパイルすることは不可能です。
それでも、これはAndroidアプリケーションを「開く」ための簡単な方法です。
最も簡単な方法はApk OneClick Decompilerを使用することです。これはAPK(Androidパッケージ)を逆コンパイルおよび逆アセンブルするためのツールパッケージです。
_機能_
_要件_
Java Runtime Environment(JRE)がインストールされている必要があります。
あなたはこのリンクからダウンロードすることができます Apk OneClick Decompiler
それを楽しんでください。
Androidスタジオでは任意のapkファイルを分析することができます。
1 - ビルドメニューから、apkオプションを分析し、apkファイルを選択します。 2 - これにより、classes.dexファイルと他のファイルが作成されます。 3 - classes.dexをクリックすると、フォルダ、パッケージ、ライブラリ、ファイルのリストが表示されます。 4 - FromとAndroidのスタジオ設定は "Dex to Jar"と呼ばれるプラグインをインストールします。
これにより、Javaファイルの実際のコードが得られます。
乾杯。
そのためのアプリがあり、一般的に数回クリックするだけで、完了です。 https://github.com/Nuvolect/DeepDive-Android
その後、ソースコードを閲覧したり、elFinderを使用して他のコンピュータにダウンロードしたり、Luceneを使用して検索したりできます。
Jadxに加えて、CFRとFernflowerの逆コンパイラもあります。
私は最も簡単な方法として以下を見つけました:
あなたのAndroidにはapk:あなたの状態に基づいて、
といった:
後藤:
apkからJavaのソースコードに自動デコードする方法
ステップ:
upload
apkファイル+クリックRun
+しばらく待つ+ Download
をクリックしてZip +解凍 - >
sources/com/{yourCompanyName}/{yourProjectName}
あなたの予想されるJavaソースコードです。
自分で逆コンパイル/クラックするために関連ツールを使用します。
jadx
/jadx-gui
を使用apk
をJava sourcecode
に変換ダウンロード jadx-0.9.0.Zip それから解凍してbin/jadx
を取得し、
jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
sources
とresources
を表示します。sources/com/{yourCompanyName}/{yourProjectName}
はあなたの予想されるJava sourcecode
ですjadx-0.9.0/bin/jadx-gui
を実行します(Linuxのjadx-gui.sh
/Windowsのjadx-gui.bat
)apk
ファイルを開くsave all
またはsave as Gradle project
例えば:
3 steps
の主なメソッド:
apk/app to dex
dex to jar
jar to Java src
詳細な説明:
apk/app to dex
実行中のアプリからツール(FDex2
/DumpDex)ダンプ/フックアウト(1つまたは複数)dex
ファイルを使用
ステップ:
root
ed Android FDex2
/ DumpDex をXPosedにインストールして有効にしますdex
をダンプするFDex2
を実行して、後でdexをキャプチャ/フックアウトできるようにするためにあなたのapk名をクリックしてください
/data/data/com/yourCompanyName/yourProjectName
にあるすべてのapkリソースを見つけ出してダンプします。dex
ファイルを見つけるでしょうdex to jar
dex
ファイルをjar
ファイルに変換する(特定の、アプリロジックを含む)tool(dex2jar
)ファイルを使用する
ダウンロード dex2jar got dex-tools-2.1-SNAPSHOT.Zip 、unzipがdex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh
を取得し、
sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex
例えば:
dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex
dex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar
jar to Java src
ツールの一つを使う:
jar
をJava src
に変換
jarからJavaへのsrc変換効果
Jadx
> Procyon
> CRF
>> JD-GUI
Jadx
/jadx-gui
の使用をお勧めします
ステップ:
jadx-gui
を実行dex
ファイルを開くFile
- > save all
例えば:
エクスポートされたJavaソース:
より詳しい説明は私のオンライン電子ブック Chinese tutorialを見ることができます。