当前位置:  开发笔记 > 编程语言 > 正文

创建不可反向工作的Java程序

如何解决《创建不可反向工作的Java程序》经验,为你挑选了4个好方法。

有没有办法以不可反向工作的格式部署Java程序?

我知道如何将我的应用程序转换为可执行的JAR文件,但我想确保代码不能进行逆向工程,或者至少不容易.

源代码的混淆不计算......它使得理解代码变得更加困难,但不会隐藏它.

一个相关的问题是如何锁定已编译的Java类以防止反编译?


一旦我完成了程序,我仍然可以访问原始源代码,因此维护应用程序不会成为问题.如果应用程序是分发的,我不希望任何用户能够反编译它.混淆不能实现这一点,因为用户仍然可以对其进行反编译,虽然他们很难跟踪操作流程,但他们将能够看到代码,并可能从中获取信息.

我关心的是代码中是否有与远程访问相关的信息.应用程序使用用户提供的用户标识和密码连接主机.有没有办法从用户隐藏主机的地址,如果该地址位于源代码内?



1> gizmo..:

简短的回答是"不,它不存在".

逆向工程是一个并不意味着完全依赖代码的过程.它基本上试图理解底层机制,然后模仿它们.例如,通过复制Netscape的JavaScript行为,无需访问代码即可从MS实验室中看到JScript.副本非常完美,即使是错误也被复制了.


对不起,但我不会这样做.我更倾向于对错误的问题给出一个好的答案,而不是对一个错误的问题给出一个错误的答案,特别是因为现在AlbertEin的答案不符合所有真正的要求,即"阻止某人找到一个URL".反编译的代码".
你可以回答*预期*问题,并添加一个解释*literal*问题的缺点的评论......

2> albertein..:

您可以使用YGuard对JAR文件进行模糊处理.它不会混淆您的源代码,而是编译后的类,因此以后维护代码没有问题.

如果你想隐藏一些字符串,你可以加密它,使得通过查看源代码变得更难(如果你混淆JAR文件,它会更好).


他说源代码混淆,我告诉他混淆产生的jar类,这与源代码无关

3> Grant Wagner..:

如果您知道要定位的平台,那么可以将Java编译为本机代码,例如Excelsior JET或GCJ.

除此之外,你永远无法隐藏源代码,因为用户总是拥有你的字节码并且可以Jad它.



4> Tanktalus..:

你正在用一种内省的语言写作核心语言的一部分.它生成.class其规范广为人知的文件(从而使其他供应商能够生成Java编译器和解释器的洁净室实现).

这意味着有公开的反编译器.所需要的只是一些谷歌搜索,你有一些Java代码与你的相同.只是没有注释,一些变量名称(但函数名称保持不变).

实际上,无论如何,混淆是关于所有你能得到的(虽然反编译的代码已经被轻微混淆),而不是去C或其他一些完全编译的语言.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有