Androidアプリケーションをリバースエンジニアリングから保護する-ProGuard

ProGuardは、コードを削減、最適化、および難読化するためのユーティリティです。 その結果、* .apkが小さくなり、リエンジニアリングがはるかに困難になります。 developer.android.comでは、ProGuardはAndroidアプリケーションのビルドシステムに埋め込まれていると書かれています。 しかし、r9にアップグレードした後にのみ、このユーティリティがSDKフォルダーに表示されることに気付きました。

ProGuardは、「リリース」モードでビルドを実行したときにのみ起動します。 これを行う方法がわからない人(Eclipse):プロジェクトのコンテキストメニューを右クリックし、[ エクスポート ] -> [Android]-> [Androidアプリケーションのエクスポート]を選択します 。 プロジェクトを作成すると、構成ファイルはルートにproguard.cfgという名前で自動的に表示されます。 お持ちでない場合は、SDKを含むフォルダー内のユーティリティを確認してください。
次に、アセンブリの前に難読化ツール自体を有効にするには、 proguard.config = / path / proguard.cfgの形式の行を/root_of_your_project/default.propertiesファイルに追加する必要があります。pathはファイルへのパスです。 したがって、多数のプロジェクトの1つの構成をドラッグできます。

そのため、アセンブリの「リリース」後、ProGuardは次のいずれかのフォルダーで少し汚れます。

ファイルが作成されます:


また、developer.android.comでは、ProGuardコードを処理する際に、 ClassNotFoundExceptionの形で合併症が発生する可能性があると警告しています。 これを回避するには、構成に行を追加できます。
-keep public class <MyClass> 

設定の詳細については、 こちらをご覧ください 。 実際、そこにはいくつかのサンプルがあります

さらに、フォルダー/ path_to_your_SDK / tools / proguard / binには、 retrace.batと呼ばれる特定のスクリプトがあります (Linux / Mac OS Xの場合-retrace.sh )。 上記のmapping.txtを使用して、難読化されたものを読み取り可能に変換できます。
使用構文:
 retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>] 

例:
 retrace.bat -verbose mapping.txt obfuscated_trace.txt 

スクリプトが<stacktrace_file>へのパスを書き込むのが面倒な場合、標準の手動テキスト入力も受け入れます。
ProGuard(デフォルト設定)を使用して「リリース」モードで最初に起動したときにエラーコード1が飛んでいる場合、SDKへのパスにスペースが含まれている可能性があります。

難読化をお楽しみください!

Source: https://habr.com/ru/post/J112833/


All Articles