「ProGuard」の版間の差分

提供: Java入門
移動: 案内検索
(ページの作成:「ProGuard とは、フリーの Javaクラスファイルシュリンカー、オプティマイザー、難読化、preverifier です。Androidアプリのリバー...」)
 
(関連項目)
 
(同じ利用者による、間の1版が非表示)
行20: 行20:
 
解決策は、proguard.cfg で addJavascriptInterface で追加するクラスを対象外にします。
 
解決策は、proguard.cfg で addJavascriptInterface で追加するクラスを対象外にします。
 
  -keep class com.foo.bar { *; }
 
  -keep class com.foo.bar { *; }
== 使い方 ==
+
== Android SDK ==
 
[[ProGuard]]は、Android SDKのビルドシステムに組み込まれています。
 
[[ProGuard]]は、Android SDKのビルドシステムに組み込まれています。
 +
== インストール ==
 +
=== FreeBSD ===
 +
<syntaxhighlight lang="bash">
 +
$ sudo pkg install proguard
 +
</syntaxhighlight>
 +
== proguardコマンド コマンドラインオプション ==
 +
== 使い方 ==
 +
=== proguard.cfg ===
 +
-injars hello.jar
 +
-outjars hello_obf.jar
 +
 +
-dontwarn java.lang.Object
 +
-dontwarn java.lang.System
 +
-dontwarn java.lang.String
 +
-dontwarn java.io.PrintStream
 +
-dontwarn java.lang.Class
 +
-dontwarn java.lang.Object
 +
-dontwarn java.lang.Class
 +
-dontwarn java.lang.System
 +
-dontwarn java.lang.Class
 +
-dontwarn java.io.PrintStream
 +
-dontwarn java.lang.Class
 +
-dontwarn java.lang.String
 +
 +
-keep public class * { *; }
 +
=== 実行例 ===
 +
<syntaxhighlight lang="bash">
 +
$ javac hello.java
 +
$ jar cvfm hello.jar manifest.txt hello.class foo.class
 +
$ proguard @proguard.cfg
 +
</syntaxhighlight>
 
== 関連項目 ==
 
== 関連項目 ==
 +
* [[Androidアプリのapkファイルを解析する方法]]
 
* [[メインページ]]
 
* [[メインページ]]
 
<!-- vim: filetype=mediawiki
 
<!-- vim: filetype=mediawiki
 
-->
 
-->

2015年4月5日 (日) 20:55時点における最新版

ProGuard とは、フリーの Javaクラスファイルシュリンカー、オプティマイザー、難読化、preverifier です。Androidアプリのリバースエンジニアリングを防ぐために利用します。

読み方

ProGuard
ぷろ がーど

概要

ProGuardは、以下の機能を提供します。

  • 未使用のクラス、フィールド、メソッド、属性の検出と削除
  • バイトコードの最適化
  • 未使用の命令の削除
  • 残ったクラス、フィールド、メソッドを「短く意味のない名前」にリネーム

Androidアプリをリバースエンジニアリングから守るために、Javaソースコード難読化ツールを利用します。

ProGuardの罠

WebView は、 Android でウェブページを表示するクラスです。 WebView は、addJavascriptInterface を用いて、JavaScript にインタフェースを追加できます。この機能を利用して、JavaScriptからJavaのメソッドが呼び出しできます。

ProGuardを利用することにより、メソッド名がリネームされます。その結果、JavaScriptから呼び出すメソッドが存在しなくなります。

解決策は、proguard.cfg で addJavascriptInterface で追加するクラスを対象外にします。

-keep class com.foo.bar { *; }

Android SDK

ProGuardは、Android SDKのビルドシステムに組み込まれています。

インストール

FreeBSD

$ sudo pkg install proguard

proguardコマンド コマンドラインオプション

使い方

proguard.cfg

-injars hello.jar
-outjars hello_obf.jar

-dontwarn java.lang.Object
-dontwarn java.lang.System
-dontwarn java.lang.String
-dontwarn java.io.PrintStream
-dontwarn java.lang.Class
-dontwarn java.lang.Object
-dontwarn java.lang.Class
-dontwarn java.lang.System
-dontwarn java.lang.Class
-dontwarn java.io.PrintStream
-dontwarn java.lang.Class
-dontwarn java.lang.String

-keep public class * { *; }

実行例

$ javac hello.java
$ jar cvfm hello.jar manifest.txt hello.class foo.class
$ proguard @proguard.cfg

関連項目