web-dev-qa-db-ja.com

APKで.smaliファイルを逆コンパイルする

APK Manager をダウンロードしたため、APKファイルを解凍できます。

しかし、それはそれを解凍するだけで、.smaliファイルを.Javaに逆コンパイルしません。

.smaliを.javaに逆コンパイルすることは可能ですか?

118
BimoZX

いいえ、APK Managerは.dexファイルを.smaliおよびバイナリ.xmlに人間が読めるxmlに逆コンパイルします

(APK Manager 4.9に基づく)シーケンスは、パッケージを選択するための22であり、次に9それを逆コンパイルします。 9の代わりに1を押すと、単にそれを解凍します(.png画像を交換する場合にのみ有用です)。

.Javaファイルに逆コンパイルするために使用できるツールはありません。おそらくほとんどありません。 dex2jarを使用してdexファイルを.classファイルに変換してから、jarデコンパイラー(freejd-gui)からプレーンテキストJavaへ。しかし、このプロセスは最適とはほど遠いものであり、動作するコードを生成することはできませんが、それを読むことができるほど十分です。

dex2jar: https://github.com/pxb1988/dex2jar

jd-gui: http://jd.benow.ca/

編集:SOのどこかに非常によく似た答えの質問があることを知っていました... DEXを逆コンパイルしますJavaソースコード

100
Aleadam

新しいクロスプレートフォーム(Java)とオープンソースツールがあり、それを行うことができます。チェックアウト https://bytecodeviewer.com

enter image description here

=========

編集:2017年4月の時点で、Googleが開発した新しいオープンソースツールがあります。それは、私たちが探していたものを行うためのものです=> http://classyshark.com

27
Gomino

dex2jarは、apkを逆コンパイルするのに役立ちますが、100%ではありません。 .smaliファイルにはいくつかの問題があります。 Dex2jarはJavaに変換できません。 apkソースファイルを逆コンパイルでき、.smaliファイルに問題がないアプリケーションを知っています。ここにリンクがあります http://www.hensence.com/en/smali2Java/

26
Daryn

私の推奨は Virtuous Ten Studio です。ツールは無料ですが、寄付を提案します。必要なすべての手順(APKのアンパック、baksmaliing、逆コンパイルなど)を1つの使いやすいUIベースのインポートプロセスに結合します。 5分以内にJavaソースコードが必要になります。これは、上記のツールのいずれかのコマンドラインオプションを理解するのに必要な時間よりも短い時間です。

SmaliをJavaに逆コンパイルすることは、特にsmaliアーティファクトが難読化プログラムを通過した場合、不正確なプロセスです。ウェブ上でいくつかの逆コンパイラを見つけることができますが、それらの一部のみがまだ維持されています。あるものは他のものよりも良い逆コンパイルされたコードを提供します。他の人よりも「理解しやすい」のように「より良い」を読んでください。リバースエンジニアリングされたJavaコードがすぐにコンパイルされることを期待しないでください。 Virtuous Ten Studioには複数の無料のJavaデコンパイラーが組み込まれているため、さまざまなデコンパイラーを簡単に試して(「Javaソースの生成」ステップ)最適な結果を確認できます、それらの逆コンパイラを自分で見つけて使用する方法を見つけ出す時間を節約できます。その中にはCFRがありますが、これは数少ない無料の、まだ維持されている逆コンパイラーの1つです。

出力として、特に、すべての逆コンパイルされたJavaソースコードを含むフォルダー構造を受け取ります。その後、これをIntelliJ IDEAまたはEclipseにインポートして、さらに編集、分析することができます(たとえば、定義に移動、使用方法を見つける)。

4
Christoph

同感です。

Dex2jarは、apktoolから取得したxmlを使用して、プロジェクトソースとして追加できるWORKING jarを生成します。

ただし、JDGUIは、多くの場合エラーを含む.Javaファイルを生成します。

私が推測するコードの難読化に関係しています。

1
Avijit