Я пишу плагин для приложения Java. Я мог бы запутать плагин, но он все равно будет легко реконструирован.Могу ли я использовать встроенную компиляцию как Java obfuscation
Я считаю, что если бы я смог скомпилировать этот плагин в разделяемую библиотеку, которая в большой степени использует JNI для связи с основным приложением, было бы гораздо сложнее перепроектировать. Я готов пожертвовать некоторой производительностью JNI, и приложение, которое я кодирую, поддерживает загрузку разделяемой библиотеки. Единственная проблема заключается в том, что я не в курсе инструмента, который делает работу: GCJ, кажется, зависит от его собственного исполнения и ikvm.net - на .NET
Чтобы быть точным:
public class PluginImpl implements Plugin {
@Override
public void startPlugin(PluginContext ctx) {
ctx.helloWorld();
}
}
должны быть преобразованный в
public class PluginImpl implements Plugin {
@Override
public native void startPlugin(PluginContext ctx);
}
и тело моего метода startPlugin скомпилировано в общую библиотеку.
(ну, да, я знаю, я мог бы написать этот плагин в C в первую очередь)
Почему вы говорите, что обфускация bytecode может быть легко изменена? – hhafez
Любой, у кого есть время и терпение, чтобы де-обфускать ваш байт-код, может сделать то же самое с нативным кодом, учитывая больше времени. Вы приносите в жертву производительность, неспособность отлаживать, надежность (когда скомпилированная к-родной Java неизменно ведет себя по-другому по сравнению с запуском в JVM) и дни вашего собственного времени для очень небольшого «выигрыша» и значительно худшего продукта. ** Откажитесь сейчас **, в то время как вы не вложили столько времени в обфускацию, что вы чувствуете, что просто * имеете *, чтобы отправить продукт, как это ... – SimonJ
Может быть, вы должны перенести свое приложение на Perl ;-) – helpermethod