2012-04-17 3 views
2

現在、バックエンドシステムはJavaで書かれており、データを処理し、マッサージし、外部HSMモジュールに転送して暗号化します。当時は十分安全であると考えられていました。しかし、最近の監査結果では、すべてのバックエンドJavaクラスを保護する必要があります。GCJでJavaサーブレットや他の多くのクラスをコンパイルする方法は?

私はGCJについて読んで、Javaバイトコードをネイティブコードにコンパイルします。これは間違いなく、リバースエンジニアを難しくします。

グーグルで&を試しても、コンパイルができなくなってしまった。私は私の5サーブレットと何百もの他のJavaクラスでGCJでコンパイルすることに失敗しました。それはまた、私はまだ風邪でそれをテストしていないことを意味、私はこれがどこに行くのか分からない。

は、だからここに私が知りたい質問です:そこ

1)誰もがGCJのJava sevletsをコンパイルするとTomcatの下でそれを実行している任意の成功を持っていますか?はいの場合は、Javaサーブレットのコンパイルに直接関連するガイドまたはサンプルがありますか?

2)私はJavaクラスのセキュリティを確保する上で正しい道にいるのですか?そうでない場合は、より良いアプローチは何ですか?

答えて

2

私はGCJについて読んで、Javaバイトコードをネイティブコードにコンパイルします。これは間違いなく、リバースエンジニアを難しくします。

これは誤った仮定です。 Javaバイトコードを難読化したい場合は、ProGuardを使用してください。

GCJでjava sevletsをコンパイルしてTomcatで実行している人はいますか?はいの場合は、Javaサーブレットのコンパイルに直接関連するガイドまたはサンプルがありますか?

あなたがここで何をしようとしているのか考えてみてください。 Tomcatは、クラスファイルをJarファイルまたはディレクトリ内にインポートすることにより、サーブレットを動的にロードします。 GCJはJavaクラスを実行可能ファイルまたはネイティブライブラリファイルにコンパイルします。 Tomcatは実行時にこれらのネイティブバイナリファイルをロードすることができません。

Jettyを組み込み、GCJでコンパイルすることで自分のWebサーバーを作ることができるかもしれませんが、本当にやりたいことは間違いありません。この非常に問題を解決するために作られた1トンのバイトコード難読化ツールがあります。 ProGuardは、GoogleがAndroid開発に推奨するもので無料です。

更新

アプリにリフレクションを使用している場合は、あなたのproguard.cnfファイルの次の行で特定のクラスを削除/名前変更しないようにProGuardのを設定することができます。

-keep public class * extends com.package.ClassName 
-keepclassmembers class * extends com.package.ClassName 
+0

、それはすべての私の反射コールを殺します。あなたはProGuardが反射法を難読化するのを避けることができると言っていますか? – Reusable

+0

ProGuardは、デフォルトでは、クラスやクラスメンバーの名前を変更するだけでなく、未使用のクラスも削除しようとします。ただし、特定のクラスを保持し、特定のメソッドの名前を変更しないように構成することもできます。 –

+0

@wm_eddie "これは誤った仮定です。"この声明を事実に戻してください。 –