我正在为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中首先编写这个插件)