.apkファイルからソースコードを取得しますか?[閉まっている]


21

.apkファイルがある場合、そのソースコードを取得する方法はありますか?


7
その前に、パッケージがオープンソースかどうかを確認しましたか?
-ott--

.apkは単なる.zipファイルです。しかし、残念ながら、「リリース」用にビルドされたアプリはおそらくProGuardによって保護されます。
ダニエルロペス

@MatthewRead The Opは彼がapiからコードを取得できるかどうかを尋ね、この現象の名前と、少なくとも同様のアプリの作成を防ぐ方法に答えました。彼はコードの取得を防ぐ方法を言わないので、はい、それは質問に答えます。
人の存在

回答:



11

幸運にも.apkファイルがProguardまたはanalog によって保護されていない場合、APKツールを使用できます。これは、サードパーティのクローズドバイナリAndroidアプリをリバースエンジニアリングするためのツールです。


ApktoolはJavaコードではなく、Smali-Codeのみを生成します-これは大きな違いです。
ロバート

2

SOのParnkul Gargによるコミュニティwikiの1つから:


.apkファイルをデコードする手順、ステップバイステップの方法:

ステップ1:

  1. 新しいフォルダーを作成し、デコードする.apkファイルをコピーします。

  2. 次に、この.apkファイルの拡張子を.zipに変更し(たとえば、filename.apkからfilename.zipに名前を変更)、保存します。これで、classes.dexファイルなどにアクセスできるようになりました。この段階では、ドローアブルは表示できますが、xmlファイルとjavaファイルは表示できないため、続行します。

ステップ2:

  1. 次に、この.zipファイルを同じフォルダー(または新しいフォルダー)に解凍します。

  2. dex2jarダウンロードして、同じフォルダー(または新しいフォルダー)に解凍します。

  3. classes.dexファイルをdex2jarフォルダーに移動します。

  4. コマンドプロンプトを開き、ディレクトリをそのフォルダー(または新しいフォルダー)に変更します。次に、書き込みd2j-dex2jar classes.dex、Enter キーを押します。これで、同じフォルダーにclasses.dex.dex2jarファイルがあります。

  5. java decompilerをダウンロードし、jd-guiをダブルクリックし、開いているファイルをクリックして、そのフォルダーからclasses.dex.dex2jarファイルを開きます。クラスファイルを取得します。

  6. これらのすべてのクラスファイルを(jd-guiで、[ファイル]-> [すべてのソースを保存]をクリックして)src名で保存します。この段階でJavaソースを取得しますが、.xmlファイルはまだ読み取り不能なので、続行します。

ステップ3:

別の新しいフォルダーを開きます

  1. デコードする.apkファイルを入力します

  2. apktool および apktoolインストールウィンドウの最新バージョンをダウンロードし(両方とも同じリンクからダウンロードできます)、同じフォルダーに配置します

  3. framework-res.apkをダウンロードして同じフォルダーに入れます(すべてのapkファイルにこのファイルが必要なわけではありませんが、問題はありません)

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

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

  6. apktool d myApp.apk (myApp.apkは、デコードするファイル名を示します)

これで、そのフォルダーにファイルフォルダーが作成され、apkのxmlファイルを簡単に読み取ることができます。

ステップ4:

両方のフォルダー(この場合は両方とも新しいフォルダー)の内容を単一のフォルダーにコピーするだけのステップではありません

ソースコードをお楽しみください...

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