如何尽可能的保护自己的 Java 代码

2020-05-25 15:58:21 +08:00
 cruii

最近公司要把开发的项目直接以 jar 包的方式发送给客户。理由是客户方是内网环境,无法访问我们部署在服务器上的平台,需要部署到他们的服务器上。 我担心代码泄露,公司也不是第一次发生这种事情,公司前辈说这种东西只能靠打官司解决 但我还是想来问问 V 站大佬们:

  1. 客户方是内网环境就必须以这种方式部署吗?
  2. 如何提高代码的破解成本?
  3. 有没有相对更好的解决办法或者折中的办法?
3118 次点击
所在节点    程序员
19 条回复
BBCCBB
2020-05-25 16:03:35 +08:00
应该只能混淆 + 加很多没用的代码混淆
lower
2020-05-25 16:21:23 +08:00
1.核心代码可以考虑搞成 dll 调用;
2.搞 license 许可,用服务器网卡 /IP 去校验;
3.加密 class 文件,启动加载时解密,解密逻辑写在外部 dll ;
murmur
2020-05-25 16:24:25 +08:00
你们前辈说的是对的,当你们做到行业老大的时候,就可以一边搜索一边发律师函了,或者把你们的东西做的有缺陷点,不走客服就用不爽
yjxjn
2020-05-25 16:30:49 +08:00
最简单的例子其实就是银行系统,好多人说银行系统安全性高,这点不假,但是只要攻破,牢饭妥妥的,所以你前辈说的对,代码这种事儿,你再怎么加密也没啥用,总有漏洞,最好的方法就是打官司。
lewis89
2020-05-25 16:37:16 +08:00
做好验证, 找个知识产权代理 注册好知识产权 以后打官司就好了,从代码层面上来防盗 根本没用,windows 搞反盗版 搞了这么多年,后面干脆放弃了
guyeu
2020-05-25 16:48:35 +08:00
假如贵司用的是 java9+,可以考虑使用 jimage/jmod 的方式发布二进制。。
sadfQED2
2020-05-25 23:03:18 +08:00
我以前见过的,在客户服务器上面装个虚拟机,所有东西放到虚拟机里面,虚拟机开磁盘加密啥的
Iamnotfish
2020-05-26 00:02:56 +08:00
代码混淆吧加 LICENSE 验证吧,从技术层面讲能保护源码也就只能做这么多了
legiorange
2020-05-26 06:11:46 +08:00
做过破解的人表示对于 java 来说代码混淆基本上会被破解。
除了 2 楼说的,我只能补充一句对 jvm 下手,这才是真正解决问题的关键。
在安全角度来说,你没有办法不让别人破解,你只能提高别人破解的成本,和溯源一样。
wujieyuan
2020-05-26 10:30:21 +08:00
服务端的代码有什么好保密的, 无非就是 一些业务逻辑和数据库的增删改查, 没啥技术含量, 别人研究你混淆后的代码还不如找一个自己重新写
nnnToTnnn
2020-05-26 10:59:13 +08:00
@lower 回复 2L, IDA Pro 表示打开你的 dll 和直接打开源码没有什么区别。 从技术上是无法保证源码泄露的。其次为什么要纠结源码? 你看这么多开源项目,别人一样盈利啊
hantsy
2020-05-26 11:46:52 +08:00
用 Oracle GraalVM 编译成机器内码,提供 Docker Image,或者 Vagrant Box 。

目前很多框架开始支持 Graal (主要是集成,简化开发人员操作),Quarkus 从一开始就是支持,Helidon,Micronaut 也添加了支持,Spring 还在开发中。
cruii
2020-05-26 12:23:49 +08:00
@wujieyuan 不好意思,技术含量还是有的。我既然来问了,也不会不考虑是否值得保护的问题
cruii
2020-05-26 12:24:52 +08:00
@nnnToTnnn 可是我们不是开源项目。我们是技术服务商。
cruii
2020-05-26 12:25:47 +08:00
@legiorange
@lower
谢谢二位的想法,我会研究一下,尽可能提高破解的成本
cruii
2020-05-26 12:26:09 +08:00
@guyeu 难顶,目前还停留在 Java8
nnnToTnnn
2020-05-26 13:12:34 +08:00
@cruii 说实话你也太看的起你们公司的代码,能比 linux 的代码好吗? 能比 jdk 的代码优秀吗? 与其纠结在代码的保护,还不如在放在著作权,和专利的申请。

就如同 Google 的那句话,从来不担心源码泄露,同样的代码,没有人做的比它好。
nnnToTnnn
2020-05-26 13:14:19 +08:00
@nnnToTnnn 你花了百分之 20 的精力去把代码做保护的时候,还不如用同等的事件去提高产品的质量,做到别人所不能触碰到的高度,走出一条自己的道路,而不是仅仅停留在当下
wanguorui123
2020-05-26 18:45:38 +08:00
各种混淆压缩工具

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/675276

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX