web-dev-qa-db-ja.com

APKを逆コンパイルし、変更してから再コンパイルします

既存のAPKを変更し、ソースを変更してから再コンパイルする必要があります。

  • Dex2jarまたはapktoolを使用して逆コンパイルできます。
  • JarファイルからJavaソースを取得できます(jd-guiを使用)
  • その後、Javaファイルを変更できます

しかし、今私はJavaファイルを再コンパイルしてjarファイルに戻す方法を知りたいです! (jar部分は簡単なはずです。主な問題はAndroidのJavaファイルを再コンパイルする方法のようです)

他の解決策はapktoolを使用してからsmaliファイルを変更することですが、多くのコードを追加したい場合は本当に複雑なようです!

私のアプリケーションは、基本的なHelloWorldの完全な難読化です。

60
darkheir

Chris Jester-Youngに感謝します。

私がそれをどうやってやったかは、本当にシンプルなプロジェクトでしかうまくいかないと思います。

  • Dex2jarでJarを取得しました。
  • Jd-guiを使用して、JarをJavaファイルに戻します。
  • ApktoolでAndroidマニフェストとressourcesファイルを取得しました

  • Eclipseでは、古いプロジェクトと同じ設定で新しいプロジェクトを作成します(マニフェストファイル内のすべての情報をチェックします)

  • プロジェクトが作成されたら、すべてのリソースとマニフェストをapktoolで取得したものに置き換えます
  • Jarから抽出したJavaファイルをsrc foled(パッケージを尊重)に貼り付けます
  • これらのファイルを必要なもので変更します
  • すべてがコンパイルされています!

/!\デバイスから古いapkを削除したことを確認してください。apk署名が古いものと同じではないことを示すエラーがスローされます。

38
darkheir

私はこの質問がまだ答えられていることを知っています、私はdexjarなしでapkからソースコードを取得する方法に関する情報を渡したいです。

an Android apks のオンラインデコンパイラ

  1. ローカルマシンからAPKをアップロードする
  2. ちょっと待って
  3. Zip形式のソースコードをダウンロードする

これがどれほど信頼できるかわかりません。

@ darkheir答えはapkを逆コンパイルする手動の方法です。 Apk作成のさまざまなフェーズを理解するのに役立ちます。

ソースコードを入手したら、受け入れられた回答に記載されている手順に従ってください

別のオンラインApk De-compiler@ Andrew Rukinhttp://www.javadecompilers.com/apk

まだ価値があります。クリエイターに敬意を表します。

33
edwin
  1. 最初に、次のリンクからdex2jarツールをダウンロードします http://code.google.com/p/dex2jar/downloads/list

  2. 作成するファイルを抽出dex2jarフォルダー

  3. ここで、apkファイルを選択し、拡張子を変更した後、拡張子.apkを.Zipに変更します。拡張子がZipファイルのように見える場合は、classes.dexファイルを見つけてこのZipファイルを抽出します

  4. Classes.dexファイルを選択して、dex2jarフォルダーに配置します

  5. Cmdウィンドウを開き、dex2jarフォルダーのパスを入力します

  6. コマンドdex2jar.bat classes.dexを入力し、Enterを押します

  7. dex2jarファイルを見つけたclasses_dex2jar.jarフォルダーを開きます

  8. 次に、次のリンクからJava逆コンパイラツールをダウンロードします http://Java.decompiler.free.fr/?q=jdgui

  9. 最後のステップJavaのファイルclasses_dex2jar.jarを逆コンパイラツールで開くと、apkコードが表示されます。

8
vikram wadhwa

私はこの質問に回答したことを知っていますが、ここでより良い回答をしようとはしていません。このトピックでの私の経験を共有します。

一度コードを失い、apkファイルのみを取得しました。以下のツールを使用してそれを逆コンパイルし、私の一日を作りました。

これらのツールは、このような状況で使用する必要があります。そうでない場合、非倫理的であり、場合によっては違法です(誰かの努力を盗む)。だから賢く使ってください。

これらはそれを行うための私のお気に入りのツールです。

javadecompilers.com

google PlayからAPKを取得するには、GoogleでGoogleで検索するか、それらのサイトをチェックアウトします

この回答を投稿した日に、すべてのリンクをテストしましたが、完璧に機能しました。

注:Apk逆コンパイルは、保護されたコードの場合は効果的ではありません。 Proguard はコードを縮小して難読化し、クラスの名前を意味のない名前に変更するため、コードの理解がかなり難しくなるためです。

ボーナス:

Proguardの使用の基本チュートリアル

2
MBH

dex2jar with jd-guiは、すべてのJavaソースファイルを提供しますが、完全に同じではありません。それらはほぼ同等の.classファイルです(100%ではありません)。したがって、apkファイルのコードを変更する場合:

  • apktoolを使用して逆コンパイル

  • apktoolは、同じ名前のJavaファイルごとにsmali(dexのアセンブリバージョン)ファイルを生成します。

  • smaliは人間が理解できるので、関連ファイルを変更し、同じものを使用して再コンパイルしますapktoolapktool b Nw.apk <Folder Containing Modified Files>

1
Pradeep Tiwari