java源码保护技术,sourceguard

sourceguard

项目记录了本人对java源码保护的一些探索实践.

项目结构

sourceguard-repack

实现原始jar文件的解包,对目标class文件加密和还原成jar文件

sourceguard-dencrypt

使用jni实现的字节码加密和解密逻辑

sourceguard-hook

利用jvmti的类加载回调函数实现字节码的解密

说明

以字节码加密来实现源码保护遇到最大障碍便是是spring体系中大量使用的asm技术.spring aop会利用asm直接读取加密过的字节码,绕过了jvmti机制,使得程序报错。以本人的某个基于spring-boot 2.1.4的项目为例,需要额外更改下边的函数

org.springframework.asm.ClassReader.ClassReader(byte[], int, boolean)

org.springframework.cglib.core.AbstractClassGenerator.generate(ClassLoaderData)

更改的原理无非是在原始逻辑调用读取到字节码之前对其进行还原

使用

编译sourceguard-hook项目生成动态库,将该动态库放置在java.library.path对应的目录,使用如下命令启动jar

java -agentlib:sourcegaurd-hook -jar test.jar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值