首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否可以将本机编译用作Java模糊处理

我是否可以将本机编译用作Java模糊处理
EN

Stack Overflow用户
提问于 2010-11-20 18:31:57
回答 3查看 1.5K关注 0票数 5

我正在为Java应用程序编写一个插件。我可以混淆插件,但它仍然可以很容易地被反向工程。

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

准确地说:

代码语言:javascript
复制
public class PluginImpl implements Plugin {
    @Override
    public void startPlugin(PluginContext ctx) {
       ctx.helloWorld();
    }  
}

应转换为

代码语言:javascript
复制
public class PluginImpl implements Plugin {
    @Override
    public native void startPlugin(PluginContext ctx);
}

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

(嗯,是的,我知道,我可以在第一时间用C写这个插件)

EN

回答 3

Stack Overflow用户

发布于 2010-11-21 08:57:47

如果您以任何形式分发可执行代码,那么您就不能真正使用任何东西来混淆代码。任何可执行代码都可以进行逆向工程。这是一个商业问题,而不是一个技术问题,它是通过商业手段解决的:许可协议,价格,上市时间,或者很可能是对风险和价值的更现实的评估,即承认你的代码没有那么有价值。或者,将产品作为服务交付,而不是作为可执行文件交付。

票数 2
EN

Stack Overflow用户

发布于 2010-11-20 19:38:52

我假设你有很好的理由去进行本机编译。您可以研究的一个选项是Excelsior JET,它是一种经过认证的Java解决方案。

票数 1
EN

Stack Overflow用户

发布于 2010-11-20 19:50:25

你可以让你的插件通过RMI提供服务。这样,插件就是一个应用程序,可以被编译成本机代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4232283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档