zoukankan      html  css  js  c++  java
  • JAVA代码保护从入门到放弃

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

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

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

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

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

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

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

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

    然后又考虑使用混淆

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

  • 相关阅读:
    安卓系统浏览器中select下拉按钮无法弹出选择面板奇怪问题解决
    Webkit浏览器点击控件时出现的边框消除
    UML序列图总结
    UML序列图总结
    UML类图几种关系的总结
    UML类图几种关系的总结
    UML用例图总结
    UML用例图总结
    类与类之间的关系
    java核心技术----Object类
  • 原文地址:https://www.cnblogs.com/relinson/p/8352299.html
Copyright © 2011-2022 走看看