java语言开发的产品,需要部署到客户现场服务器.产生了对代码进行保护的需求,开始研究代码加密方式.

经过研究分析后有两种思路,混淆和加密.两者各自适应不同的情况.

由于大量spring注解功能,并且无明显的核心功能.因此首先放弃了混淆的方式.

然后开始研究ClassLoader和JVMTI,研究了老半天之后发现,Spring的注解扫描机制需要在项目启动时候扫描相关的class,通过asm自行解析class文件,加密class后导致读取类信息报错.

又开始把思路转向到class文件格式,考虑解析文件格式对其中方法body指令进行加密,保证类的名称接口注解都能被正常读取.研究期间发现不管用JNI还是JAVA代码实现解密过程,最终产生的byte[]都能被拦截获取到.

最终发现,通过获取loadedClass和字节码工具javassist直接能从内存中读取已加载的类,并保存成为class,再反编译成为源码.

到这里还没放弃,想着不行了自己拉取jvm源代码定制一个jvm,屏蔽掉jvmti等接口.

最终--放弃了编译jvm,这个想法是如此的扯淡.

然后又考虑使用混淆

翻了翻代码,没有核心代码,没有哪里是需要加密的.

最新文章

  1. CSS浮动文摘
  2. git使用ssh密钥
  3. 使用tolua++编译pkg,从而创建自定义类让Lua脚本使用
  4. Visual Studio动态代码生成的实现基础
  5. HDU 4280 Island Transport(网络流)
  6. 新建的硬盘-mount
  7. 协方差cov
  8. asp.net2.0安全性(3)--验证与授权--转载来自车老师
  9. crm2011i创建nt类型字段
  10. Linux TCP连接数修改
  11. pandas 处理dataframe(一)
  12. Django学习-18-中间件
  13. spring中jedis对redis的事务使用注意总结
  14. 279. Perfect Squares(动态规划)
  15. spring Ioc容器之使用XML配置Bean
  16. linux echo设置颜色
  17. 一些应该使用mongodb或者其他文档存储而不是redis或mysql、oracle json的情形(最近更新场景)
  18. C# 通过copydata实现进程间通信
  19. 训练赛第一场D题
  20. 机械加工行业计划排程:中车实施应用易普优APS

热门文章

  1. css忽略某一层的存在:pointer-events:none
  2. 工具 | Sublime
  3. 多tomcat 同一个浏览器 多个项目 会导致session覆盖
  4. 测试效率 timeit cProfile
  5. 自制session
  6. 【每日scrum】第一次冲刺day2
  7. 第一次spring冲刺第3、4天
  8. java实现中值滤波均值滤波拉普拉斯滤波
  9. self和super关键字介绍
  10. Unity发布Exe后,去掉提示分辨率的窗口