美文网首页
JAVA Class文件加密小探

JAVA Class文件加密小探

作者: 淡淡的小番茄 | 来源:发表于2021-06-23 15:11 被阅读0次

    我们基于TrueLicense实现了license的校验。这块网上资料很多,在此就不加以介绍了。今天主要想说一说机器指纹的问题。

    主要包括如下两部分:

    1、指纹的采集生成

    2、指纹的校验

    我们所做的一切都是防君子不防小人,任何东东都有破解的方式方法,能做的只是增加其难度。项目中的开发语言使用的是java,由于java的跨平台特性,jvm加载执行的是字节码,字节码有一套规范,很容易进行反编译。基于此,我们做了如下工作:

    使用go语言采集机器指纹信息

    机器指纹是线下采集,采集的信息需要进行加密,我们使用的是的AES对称加密。目前支持:

    /*****************************

    *arm架构,Linux version 4.19.90-9.ky10.aarch64 (YHKYLIN-OS@kernel-rpmbuild-amd64) (gcc version 7.3.0 (GCC)) #1 SMP Sun Apr 26 11:05:59 CST 2020

    *amd64架构,CentOS Linux release 7.2.1511 (Core)

    ******************************/

    采集上来的密文,通过解密工具解密获取到明文,然后作为license的扩展参数加密存储(sm2)。

    对核心的校验类进行加密

    基于JVM Tool Interface对加密的类进行解密

    加密和解密是对应的。由于C或者C++加解密基本都需要依赖第三方软件,没有java中那么方便。

    目前项目中都要求使用国产加密算法,比如S2、S3。C++里面没有比较好的实现,高版本的openssl才支持国密算法,对于一直写java的我来说,困难比较大。其间,我们尝试了基于openssl的rsa、des加密,在c++中能正常跑的代码。使用jni调用的时候一直报错。一行一行代码排查发现此处引起的具体的原因就不知道了。

    然后继续尝试别的加密方法,想使用一个简单且不依赖第三方库的算法,于是我们打算使用tea算法,简单高效。然后选择了xxtea-c尝试对class文件进行加密。

    相关文章

      网友评论

          本文标题:JAVA Class文件加密小探

          本文链接:https://www.haomeiwen.com/subject/ldybyltx.html