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へのパスにスペースが含まれている可能性があります。



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



All Articles