[解決済み] APKファイルのリバースエンジニアリングを回避する方法
質問
を開発中です。 決済処理アプリ のリソース、アセット、ソースコードにハッカーがアクセスできないようにしたい。 APK ファイルを作成します。
もし誰かが.apkの拡張子を.zipに変更したら、それを解凍してアプリのすべてのリソースとアセットに簡単にアクセスできるようになります。 dex2jar とJavaデコンパイラを使えば、ソースコードにアクセスすることも可能です。Android APKファイルのリバースエンジニアリングは非常に簡単です。 APKファイルからプロジェクトへリバースエンジニアリング .
Android SDKに付属のProguardというツールを使っています。署名付きキーストアとProguardを使用して生成されたAPKファイルをリバースエンジニアリングすると、難読化されたコードが表示されます。
しかし、Androidコンポーネントの名前は変更されず、アプリで使用されるキー値など、一部のコードも変更されません。Proguardのドキュメントによると、このツールはManifestファイルに記載されたコンポーネントを難読化することはできません。
そこで質問です。
- どうすれば を完全に防ぐことができます。 Android APKのリバースエンジニアリングは可能ですか?可能でしょうか?
- ハッカーがAPKファイルを一切ハックできないように、アプリのすべてのリソース、アセット、ソースコードを保護するにはどうすればよいですか?
- ハッキングをより困難に、あるいは不可能にする方法はありますか? APKファイルのソースコードを保護するために、さらに何ができますか?
解決方法は?
<ブロッククオート1. Android APKのリバースエンジニアリングを完全に回避するにはどうすればよいですか?可能でしょうか?
リバースエンジニアリングを完全に回避する方法はありません。
また、@inazaruk さんのおっしゃることも非常によくわかります。 あなたがコードに何をしたところで、潜在的な攻撃者はそれをどのようにでも変更することができます。 . 基本的に、アプリケーションを改変されないようにすることはできません。そして、あなたが入れた保護は、無効にしたり削除したりすることができます。
<ブロッククオート2. ハッカーがAPKファイルを一切ハックできないように、アプリのすべてのリソース、アセット、ソースコードを保護するにはどうしたらよいでしょうか。
ハッキングを難しくするために、さまざまなトリックを行うことができますが。たとえば、難読化(Javaコードの場合)を利用する。これは通常、リバースエンジニアリングの速度を著しく低下させます。
<ブロッククオート3. ハッキングをもっと手強く、あるいは不可能にする方法はないのでしょうか?APKファイルのソースコードを保護するために、もっとできることはありますか?
誰もが言うように、そしてあなたも知っているように、100%のセキュリティは存在しません。しかし、Googleが内蔵しているAndroidのためのスタート地点は、ProGuardです。もし、オプションで 共有ライブラリ を使えば、C++で必要なコードを入れて、ファイルサイズや統合を確認することができます。 などがあります。ビルドのたびに外部ネイティブライブラリをAPKのライブラリフォルダに追加する必要がある場合。 ということであれば、以下の提案で使用することができます。
ライブラリは、ネイティブライブラリのパス(デフォルトは "libs")に配置します。 プロジェクトフォルダ のネイティブコードをビルドした場合 'アルメアビ' ターゲットに の下に libs/armeabi . でビルドした場合 アルメアビ-v7a の下に置いてください。 libs/armeabi-v7aです。
<project>/libs/armeabi/libstuff.so
関連
-
Android Studio を 3.6.3 にアップデートした後、構成 :classpath のアーティファクトをすべて解決できない。
-
GoogleMapと連携し、位置情報の取得が可能
-
アンドロイドのエリプサイズを使用する
-
ConstraintLayoutのいくつかのプロパティの概要(RelativeLayoutの強化版、LinearLayoutの比例プロパティを含む、階層ツールの削減)。
-
問題 ---- Android ---- ActivityManager: Error: アクティビティクラス{xx/xx.MainActivity}が存在しない
-
Android Bluetooth 開発の基本プロセス
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] APKファイルからソースコードを取得する方法はありますか?
-
[解決済み] AndroidエミュレーターにAPKファイルをインストールする方法を教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Android端末にADBが接続できない!を解決。理由: デバイスが認証されていない!
-
デフォルトのアクティビティが見つからない場合の対処法
-
AndroidStudio3.0 Error:Execution failed for task ':app:processDebugResources'.
-
Androidで発生した問題、解決策とヒント
-
エラーが発生しました。ArrayAdapter は、リソース ID が TextView である必要があります。
-
android block certificate validation CertPathValidatorException: 認証パスのトラストアンカーが見つかりません
-
Androidのカラーグラデーション実装のまとめ
-
超シンプルなアンドロイドのタイムディレイ機能
-
Android.support.v7.widget.Toolbar が見つかりませんでした。
-
アンドロイドにおけるトークンの利用