我可以使用本机编译作为Java混淆

obf*_*cer 5 java java-native-interface native

我正在为Java应用程序编写一个插件.我可以对插件进行模糊处理,但它仍然可以很容易地进行逆向工程.

我相信如果我可以将这个插件编译成一个共享库,它大量使用JNI与主应用程序通信,那么逆向工程就会困难得多.我愿意为JNI牺牲一些性能,我编写的应用程序确实支持共享库加载.唯一的问题是我不知道有一个工具可以完成这项工作:gcj似乎依赖于它自己的运行时和IKVM.NET - 在.NET上

确切地说:


public class PluginImpl implements Plugin {
    @Override
    public void startPlugin(PluginContext ctx) {
       ctx.helloWorld();
    }  
}
Run Code Online (Sandbox Code Playgroud)

应转换为


public class PluginImpl implements Plugin {
    @Override
    public native void startPlugin(PluginContext ctx);
}
Run Code Online (Sandbox Code Playgroud)

并且我的startPlugin方法的主体被编译成一个共享库.

(嗯,是的,我知道,我本可以在C中首先编写这个插件)

ren*_*ick 1

我认为您有充分的理由进行本机编译。您可以考虑的一个选项是Excelsior JET,它是经过认证的 Java 解决方案。