大家发布到现场的 Java 代码有加密吗?都是咋实现的,可否分享下?

2017-11-02 10:14:50 +08:00
 sunboy911

老板要求部署到现场 tomcat 的代码全部加密,防止客户反编译!!

8297 次点击
所在节点    Java
31 条回复
wdlth
2017-11-02 12:56:52 +08:00
混淆、改 class loader,再把 JVM 改了……
kidult
2017-11-02 13:11:18 +08:00
多招两个实习生写写不就完了
loshine1992
2017-11-02 13:59:27 +08:00
@sunboy911 proguard
paragon
2017-11-02 14:03:10 +08:00
原则上只能混淆~
xiaoyu03
2017-11-02 15:20:15 +08:00
看到这个帖子还以为是我呢...我们公司软件要产品化接下去我大概要做:
1.USB key + license ;
2.混淆代码(效果不好,因为种种原因很多代码不能混淆 QAQ );
3.写一个小工具给 Jar 中的 Class 加密。在 ClassLoader 中解密,Spring Boot 的 ClassLoader 需要修改;或者 Jni 方式解密
4.想办法怎么隐藏 ClassLoader,启动时动态生成?
zpf124
2017-11-02 15:46:18 +08:00
我们曾经做过过一个简单粗暴的方法。

1,代码根据 机器的网卡 mac 地址 + 硬盘序列号 用自定义的加密规则算一个 激活码。
2,项目启动如果激活码不正确或者没填激活码,不连接 jdbc,几个关键的 bean 不生成。
3,将许多乱七八糟的类都一起混淆,混淆后连我们自己都看不懂加密那个类里的代码,混淆工具将许多字符串和变量混淆后都转移到其他类了,同理这个类里还包含了一些其他类用的变量。

3,部署之后 客户将机器的 网卡 mac 和 硬盘序列号发给我们,我们这边算出激活码在发给他们,用户要换个机器部署都得联系我们。
yksg
2017-11-02 16:51:46 +08:00
多招两个实习生就 OK 了
rswl
2017-11-02 16:53:53 +08:00
不是都能反编译的吗
hsuan
2017-11-02 16:54:35 +08:00
把关键 jar 加密,运行时揭秘后动态加载
abcbuzhiming
2017-11-13 21:57:14 +08:00
这纯粹是老板自己折腾;要么你牛逼到改 jvm 本身,要么 jni 用 c++编程搞 dll 的话,其它方式没啥用,你混淆?改 classloader ?我直接 dump 内存,虚拟机语言拿到内存字节码后反编译 class 源码比纯二进制语言容易多了。而且这年头,你以为你的代码是高科技啊,是个人都想要?
xiner
2020-07-09 16:19:32 +08:00
时隔这么久,不知楼主还是否有 Java 加密需求。
几维安全 Java 代码加密产品能够帮助到你。
Java2C:创新 Dex 和 Jar 源码保护方案。将 Java 代码自动翻译为 C 代码,并实施 Native 层的虚拟化加密保护,比传统加固兼容性更好,安全性更高,防止反编译。
Java2C 是移动端新一代 DEX 加密方案,提交安卓应用包 APK 文件,即可将 DEX 文件中的核心函数翻译成 C 代码,并通过 Native 层的源码加密技术实施代码混淆、代码虚拟化和字符串加密处理,从而提高 Java 层核心代码的安全性。
与传统的 APP 加固方案相比,不涉及到自定义修改 DEX 文件的加载方式,所以其兼容性非常好;其次 Java 函数被完全转化为 C 函数,直接在 Native 层执行,不存在 Java 层解密执行的步骤,其性能和执行效率更优。
,欢迎查阅,java 源码加密: https://www.kiwisec.com/product/java2c.html

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

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

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

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

© 2021 V2EX