2012-04-17 5 views
2

В настоящее время у меня есть внутренняя система, написанная на Java, которая обрабатывает, массирует и перенаправляет данные на внешний модуль HSM для шифрования. Тогда это считалось достаточно безопасным. Однако недавние результаты аудита требуют, чтобы все базовые классы Java также были защищены.Как скомпилировать Java-сервлеты и многие другие классы с GCJ?

Я читал о GCJ, он компилирует байт-коды Java в собственный код. Это, безусловно, усложнит реконструирование.

После более чем 30 часов поиска в Интернете & пытается, я даже не мог получить компиляцию. Мне не удалось скомпилировать GCJ с моими 5 сервлетами и более сотнями других классов Java. Это также означает, что я еще не тестировал его с tomcat, я понятия не имею, куда это происходит.

Так вот вопросы я хотел бы знать:

1) кто-то там есть какой-либо успех компиляции Java sevlets с GCJ и работает под Tomcat? Если да, есть ли руководство или образец, непосредственно связанные с компиляцией Java-сервлета?

2) Я на правильном пути в обеспечении классов Java? Если нет, то какой лучший подход?

ответ

2

Я читал о GCJ, он компилирует коды байт Java в собственный код. Это, безусловно, усложнит реконструирование.

Это ложное предположение. Если вы хотите запутать свой байт-код Java, используйте ProGuard.

У кого-нибудь есть какие-либо успехи в компиляции java sevlets с GCJ и запуске его под Tomcat? Если да, есть ли руководство или образец, непосредственно связанные с компиляцией Java-сервлета?

Подумайте, что вы пытаетесь сделать здесь. Tomcat загружает сервлеты динамически, импортируя файлы классов внутри Jar-файла или каталога. GCJ компилирует классы Java к исполняемым файлам или файлам родной библиотеки. Tomcat не сможет загружать эти собственные двоичные файлы во время выполнения.

Возможно, вы сможете создать свой собственный веб-сервер, введя Jetty и скомпилировав его с помощью GCJ, но я сомневаюсь, что именно это вы действительно хотите сделать. Есть тонна инструментов обфускации байт-кода, которые сделаны для решения этой самой проблемы. ProGuard - это то, что Google рекомендует для разработки Android и является бесплатным.

Update

Если вы используете отражение в вашем приложении вы можете настроить ProGuard не переименовывать/удалять определенные классы следующие строки в файле proguard.cnf.

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

Я попытался yGuard, и убить все мое отражение вызов. Вы говорите, что ProGuard может избежать обфускации методов отражения? – Reusable

+0

ProGuard по умолчанию попытается удалить классы, которые выглядят неиспользуемыми, а также переименовать классы и классы. Однако вы можете настроить его для хранения определенных классов, а также предотвратить переименование определенных методов. –

+0

@wm_eddie «Это ложное предположение». Не могли бы вы вернуть это заявление фактами? –