web-dev-qa-db-ja.com

Android .apkファイルを逆コンパイルすることは可能ですか?

ユーザーはアプリケーションのapkファイルを実際のコードに戻すことができますか?もしそうなら-これを防ぐ方法はありますか?

82
aryaxt

まず、 apkファイル は単なる変更されたjarファイルです。本当の問題は、内部のdexファイルを逆コンパイルできるかどうかです。答えは一種です。 dedexersmali など、すでに逆アセンブラがあります。これらはより良くなるだけで、理論的には最終的に実際のJavaソースにデコンパイルできるはずです(少なくとも時々)。前の質問 DEXをJavaソースコードに逆コンパイルする を参照してください。

覚えておくべきことは、難読化が機能しないことです。適切なライセンスを選択し、法律でそれを実施するために最善を尽くします。信頼できない技術的手段で時間を無駄にしないでください。

78

APKファイルの逆コンパイルは可能ですが、難読化されているとコードを理解するのが困難になる場合があります。

APKファイル内のリソースを表示するAPKツール

  • AndroidManifest.xmlおよびresフォルダー内のすべてを抽出します(レイアウトxmlファイル、画像、webviewで使用されるhtmlなど)。
  • コマンド:apktool.bat d sampleApp.apk
  • 注:これは、7-ZipなどのZipユーティリティを使用して実現できます。ただし、すべての.classファイルの.smaliファイルも抽出します。

dex2jarの使用

  • .apkファイルから.jarファイルを生成します。この.jarからソースコードを表示するにはJD-GUIが必要です。
  • コマンド:dex2jar sampleApp.apk

JD-GUIを使用した.jarの逆コンパイル

  • .classファイルを逆コンパイルします(Androidアプリの場合は難読化されていますが、他の.jarファイルの場合は読み取り可能な元のコードが取得されます)。つまり、アプリケーション。
32
gtiwari333

また、最近ではAndroidオンラインのアプリケーションで、ソフトウェアは不要です!

次の2つのオプションがあります。

2
Andrew Rukin

このjadxツールをダウンロード https://sourceforge.net/projects/jadx/files/

解凍し、libフォルダーでjadx-gui-0.6.1.jarファイルを実行して、apkファイルを参照します。終わった。自動的にapkは逆コンパイルし、保存ボタンを押して保存します。それがあなたのために働くことを願っています。ありがとう

1
akhilesh Jha

ユーザーはアプリケーションのapkファイルを実際のコードに戻すことができますか?

はい。

人々はさまざまなツールを使用して次のことができます。

  • 分析:APK
  • apk のデコード/ハック
    • FDex2を使用してdexファイルをダンプします
      • dex2jarを使用してjar に変換します。
        • jadxを使用してJavaソースコードに変換します

もしそうなら-これを防ぐ方法はありますか?

はい。これを防止する(ある程度)ためのいくつかの(組み合わせることができる)方法:

  • 低レベル:コードの難読化
    • Android ProGuardを使用
  • 高レベル:use Android harden Scenario

詳細は、私の中国語チュートリアルを参照してください: 安卓応用用的安全和破解

0
crifan