2

現在、暗号化のためにデータを処理、メッセージ、および外部 HSM モジュールに転送する Java で記述されたバックエンド システムがあります。当時は十分に安全だと考えられていました。ただし、最近の監査結果では、すべてのバックエンド Java クラスも保護する必要があります。

GCJ について読んだことがあります。GCJ は Java Byte コードをネイティブ コードにコンパイルします。これにより、リバース エンジニアリングが確実に難しくなります。

30時間以上グーグルで試してみた後、コンパイルすらできませんでした。5 つのサーブレットと他の何百もの Java クラスで GCJ を使用してコンパイルできませんでした。それはまた、私はまだTomcatでテストしていないことを意味します.これがどこに行くのかわかりません.

だからここに私が知りたい質問があります:

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

2) Java クラスを保護する上で、私は正しい道を進んでいますか? そうでない場合、より良いアプローチは何ですか?

4

2 に答える 2

2

GCJ について読んだことがあります。GCJ は Java Byte コードをネイティブ コードにコンパイルします。これにより、リバース エンジニアリングが確実に難しくなります。

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

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

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

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

アップデート

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

-keep public class * extends com.package.ClassName
-keepclassmembers class * extends com.package.ClassName
于 2012-04-17T03:06:34.690 に答える
0

Excelsior JET を使用して、Tomcat Web アプリをネイティブにコンパイルできます(注: 私は Excelsior で働いています)。

于 2012-05-03T08:41:30.453 に答える