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


86

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


1
APKを逆コンパイルする方法はいくつかあります。私はAPKToolをより頻繁に使用しますが、これは最高で最も強力です。それを使用してapkファイル変更するのは非常に簡単です
taranfx 2011年

私はここにブログ投稿を書きました:codexplo.wordpress.com/2012/03/15/…しかし、繰り返しますが、難読化されたコードでは難しいでしょう...
rokonoid 2012年

1
yeblon.com/how-to-decompile-android-apk-app-files-これはベルプかもしれません
Badr Hari

回答:


80

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

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


45
絶対とは絶対言うな。難読化は決心した泥棒を止めることはありませんが、他の多くの人を遅くしたり抑止したりします。Proguardを使用した処理は、コードを難読化するための簡単で信頼性の高い方法であり、ボーナスとしてコードも最適化されます。また、Android SDKに含まれているため、Googleによって承認されています。
バリー・フルイトマン2011

3
難読化は確実に機能しますが、目標をより明確に定義する必要があります。明らかに、ソースコードを本当に安全に保つ唯一の方法は、サーバーやクライアントへのアクセスを誰にも許可しないことです。Proguardは、XMLファイルに参照があるクラスではうまく機能しないことに注意してください。それを回避するには、手動の難読化を利用する必要があります。
MattC 2012年

35

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

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

  • 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ファイルの場合は読み取り可能な元のコードが取得されます)。つまり、アプリケーションから.javaを取得します。

apktoolはJavaソースファイルを吐き出しません!スマリのみ
IgorGanapolsky

1
すでに回答で述べたように、apktoolは.apkから.jarを作成し、JD-GUIのようなツールを使用して.jarを逆コンパイルして.javaソースファイルを作成する必要があります。
gtiwari333 2012

1
あなたは私の命を救った!なんて素晴らしい投稿でしょう。SSDに障害が発生したため、最後の2日間のコードを失いました(残念ながら、gitにコミットしませんでした)。しかし、私はapkを持っていました、そして今私は私のソースを持っています、あなたを気に留めてください、少し異なります、しかしソース!
farcrats 2012

3

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

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


decompileandroid.comはオフラインであり(apkをアップロードすると、再度ダウンロードする際に問題が発生します)、javadecompilers.com / apkは私のapkを長い間キューに入れてきました。私はオフラインになり、それからオンラインになりました、それはまだ待ち行列にありました。すべての閲覧履歴をクリアしましたが、2回目にアップロードしたapkがキューに入っています。
iOSAndroidWindowsMo​​bileAppsDev 2016

1

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

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


0

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


0

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

はい。

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

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

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

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

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

詳細については、私の中国語チュートリアルを参照してください


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/

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