90

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

4

7 に答える 7

83

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

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

于 2010-06-26T03:55:21.500 に答える
37

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

Aapt (Android SDKの一部)またはAXMLParser ( AndroGuardから)を使用して、APKファイルの情報を分析および表示します

  • AndroidManifest.xmlファイルのコンテンツを取得します

  • さまざまな情報(許可、アクティビティ、サービス、ブロードキャストレシーバーなど)を表示します

  • 指示:

    Aapt

     aapt dump badging sampleApp.apk
     aapt dump permissions sampleApp.apk
     aapt dump xmltree sampleApp.apk
    

    AXMLParser

     apkinfo sampleApp.apk
    

ApkToolまたはNinjaDroidを使用して、APKファイルのリソースを分解して表示します

  • バイトコードをsmali/assemblyに分解します

  • AndroidManifest.xml、CERT.RSAファイル、およびresフォルダー内のすべて(レイアウトxmlファイル、画像、webviewで使用されるhtmlなど)を抽出します。

  • 指示:

    ApkTool

    apktool.bat d sampleApp.apk
    
    java -jar apktool.jar -q decode -f sampleApp.apk -o myOutputDir
    

    NinjaDroid

    ninjadroid MyApk.apk --all --extract myOutputDir/
    
  • 注: 7-zipなどのzipユーティリティを使用すると、同様のことができます。ただし、これらのツールは、すべての.classファイルの.smaliファイルも抽出します。

dex2jarを使用して、APKファイルのDEXファイルをJavaコードに逆コンパイルします

  • .apkファイルから.jarファイルを生成します(AndroidアプリのJavaコードは通常難読化されていることに注意してください)

  • 出力.jarファイルからソースコードを表示するには、JD-GUIが必要です

  • 指示:

    dex2jar sampleApp.apk
    
    d2j-dex2jar.sh -f sampleApp.apk -o myOutputDir/sampleApp.jar
    

JD-GUIを使用して.jarファイルを表示します

  • .classファイル(Androidアプリの場合は難読化されていますが、他の.jarファイルの場合は難読化されていません)を逆コンパイルし、対応するJavaコードを表示します
于 2012-02-09T16:26:24.570 に答える
3

また、最近ではAndroidアプリケーションをオンラインで逆コンパイルすることが可能であり、ソフトウェアは必要ありません。

ここにあなたのための2つのオプションがあります:

于 2015-12-12T11:27:07.887 に答える
1

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

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

于 2017-05-02T17:24:03.577 に答える
1

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

はい。

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

  • 分析:あなたのapk
  • あなたのapkをデコード/ハックする
    • ファイル FDex2をダンプするために使用するdex
      • 次に、dex2jarに変換するために使用しますjar
        • 次に、ソースコードjadxへの変換に使用しますjava

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

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

  • 低レベル:コードの難読化
    • Androidを使用するProGuard
  • 高レベル:Android強化シナリオを使用

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

于 2019-04-29T08:35:42.577 に答える
0

dex2jar/を使用するapktoolと、特にループでコードが壊れることがあります。これを回避するには、jadx.jarを使用します。jadxは、最初に/.classファイルを作成せずに、dalvikバイトコードをJavaソースコードに逆コンパイルしますdex2jar(apktoolはdex2jarを使用すると思います)。また、オープンソースであり、活発に開発されています。GUI狂信者のためのGUIさえあります。それを試してみてください!

于 2015-03-04T21:08:03.067 に答える
0

はい、.apkファイルを逆コンパイルするために利用できるソフトウェアはたくさんあります。

最近、私は自分のWebサイトで47の最高のAPK逆コンパイラーの究極のリストを編集しました。私はそれらを4つの異なるセクションに配置しました。

  1. オープンソースAPKデコンパイラー
  2. オンラインAPK逆コンパイラ
  3. Windows、Mac、またはLinux用のAPKデコンパイラ
  4. APK逆コンパイラアプリ

このコレクションがお役に立てば幸いです。

リンク:https ://www.edopedia.com/blog/best-apk-decompilers/

于 2020-06-11T11:51:19.337 に答える