代码混淆加密

classfinal
roseboyUpdated Aug 27, 2024
  1. ProGuard
  • 简介:开源社区有名的免费混淆工具,相较于字节码加密,对性能基本无影响;
  • 优势:打包阶段混淆字节码,各种变量方法名都变成了abcdefg 等等无意义的符号,字节码可被反编译,但几乎无法阅读,通常被 Android App 用来防止逆向;
  • 不足1:只能混淆部分代码,打包阶段较为耗时,对于三方包混淆,并没有什么好办法。
  • 不足2:混淆后的代码,会影响 arthas 工具的使用,导致排查问题变慢。
  • 不足3:配置比较复杂,曾经在我司 T 项目上用过,令人眼花缭乱。
  • 不足4:无法加密三方依赖所有信息;
 
  1. jar-protect
  • 简介:一款国人开发的 springboot jar 加密工具;需要配合 javaagent 解密;
  • 优势:打包阶段使用 javassist 重写 class 文件;jadx 反编译后看到的都是空方法。反编译后只能看到类信息和方法签名,无法看到具体内容。
  • 不足1:使用 DES 方案,对于几百个三方 jar 的场景,加密手段过重,且加密后的不够完整;
  • 不足2:类文件放在一个目录(META-INF/.encode/),非常容易类冲突;
  • 不足3:无法加密三方依赖所有信息;
 
  1. GraalVM
  • 简介:Oracle GraalVM 提前将 Java 应用程序编译为独立的二进制文件。与在 Java 虚拟机 (JVM) 上运行的应用程序相比,这些二进制文件更小,启动速度提高了 100 倍,无需预热即可提供峰值性能,并且使用的内存和 CPU 更少, 并且无法反编译。
  • 不足:无法支持我司业务程序框架。
 
  1. core-lib/xjar
  • 简介:国人开源的,基于 golang 的加密工具。使用 maven 插件加密,启动时 golang 解密;性能影响未知。
  • 优势:可对所有 class 文件加密。
  • 不足1: 加密后 jar 文件体积翻倍;
  • 不足2:依赖 golang 编译,依赖 golang 启动;
  • 不足3:无法加密三方依赖所有信息;
  • 不足4:开源项目,3年未有新提交。
ClassFinal
class-winter
 
可以一去混淆、也可以加密然后加密运行、或者 licene 验证也行
 
Loading...
目录
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP