Java class 文件安全加密工具对比与ClassFinal实战

这篇具有很好参考价值的文章主要介绍了Java class 文件安全加密工具对比与ClassFinal实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

相信不少的同学开发的软件都是用户商业化,对于这些商业运营的项目很多都会直接部署在客户方,这样就可能会导致项目源码泄露。当然,作为Java语言的搬砖人打的jar包更是如此,可以直接通过GUI反编译轻而易举拿到源码。那么,有没有对我们class文件加密和代码混淆的实战方案呢?答案当然是有的,今天我们就分享一下常规的加密方案。

常见加密方案对比

XJar

Spring Boot JAR 安全加密运行工具,同时支持的原生JAR。
基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动,动态解密运行的方案,避免源码泄露或反编译

功能特性:
无需侵入代码,只需要把编译好的JAR包通过工具加密即可。
完全内存解密,杜绝源码以及字节码泄露或反编译。
支持所有JDK内置加解密算法。
可选择需要加解密的字节码或其他资源文件,避免计算资源浪费。

运行环境:
新版XJar只支持go启动器模式启动加密后的jar包 , 加密后需要go环境生成go启动器 . 运行时不需要go环境。

加密原理:
对jar的字节码加密 , 启动jar包时调用自定义的类加载器, 重写findClass方法,拿到字节流后,先解密再调Classloader的defineClass方法,初始化成Class对象。

加密结果:
加密后的Class不能反编译。
classfinal,开发工具,Spring,java,安全,spring

ProGuard

ProGuard 是一个免费的 Java 类文件的压缩,优化,混淆器。它删除没有用的类,字段,方法与属性。使字节码最大程度地优化,使用简短且无意义的名字来重命名类、字段和方法 。

功能特性:
1、压缩(shrink) 移除未使用的类、方法、字段等;
2、优化(optimize)优化字节码、简化代码等操作;
3、混淆(obfuscate)使用简短的、无意义的名称重全名类名、方法名、字段等;
4、预校验(preverify)为class添加预校验信息。

运行环境:
jdk,不需要额外运行环境。

加密结果:
混淆后的class反编译后都是一些魔法命名字符,增加阅读难度。
classfinal,开发工具,Spring,java,安全,spring

ClassFinal

ClassFinal 是一款 Java class 文件安全加密工具,支持直接加密 jar 包或 war 包,无需修改任何项目代码,兼容 spring-framework,可避免源码泄漏或字节码被反编译。

项目模块说明:
1、classfinal-core: ClassFinalde 的核心模块,几乎所有加密的代码都在这里;
2、classfinal-fatjar: ClassFinal 打包成独立运行的 jar 包;
3、classfinal-maven-plugin: ClassFinal 加密的 maven 插件;

功能特性:
1、无需修改原项目代码,只要把编译好的 jar/war 包用本工具加密即可。
2、运行加密项目时,无需求修改 tomcat,spring 等源代码。
3、支持普通 jar 包、springboot jar 包以及普通 java web 项目编译的 war 包。
4、支持 spring framework、swagger 等需要在启动过程中扫描注解或生成字节码的框架。
5、支持 maven 插件,添加插件后在打包过程中自动加密。
6、支持加密 WEB-INF/lib 或 BOOT-INF/lib 下的依赖 jar 包。

环境依赖:
JDK 1.8 +

本工具使用 AES 算法加密 class 文件,密码是保证不被破解的关键,请保存好密码,请勿泄漏。
密码一旦忘记,项目不可启动且无法恢复,请牢记密码。
本工具加密后,原始的 class 文件并不会完全被加密,只是方法体被清空,保留方法参数、注解等信息,这是为了兼容 spring,swagger 等扫描注解的框架; 方法体被清空后,反编译者只能看到方法名和注解,看不到方法的具体内容;当 class 被 classloader 加载时,真正的方法体会被解密注入。

加密结果:
配置文件反编译后为空
classfinal,开发工具,Spring,java,安全,spring

class文件反编译后直接隐藏方法体
classfinal,开发工具,Spring,java,安全,spring

ClassFinal实战

由于我们不希望引入其他外部依赖环境,遂选择ClassFinal进行代码混淆,可以达到隐藏配置文件内容和清空方法体的效果,即使外部人员拿到源码也不能仿造系统。

纯命令方式

下载工具

https://repo1.maven.org/maven2/net/roseboy/classfinal-fatjar/1.2.1/classfinal-fatjar-1.2.1.jar

参数说明

-file        加密的jar/war完整路径
-packages    加密的包名(可为空,多个用","分割)
-libjars     jar/war包lib下要加密jar文件名(可为空,多个用","分割)
-cfgfiles    需要加密的配置文件,一般是classes目录下的yml或properties文件(可为空,多个用","分割)
-exclude     排除的类名(可为空,多个用","分割)
-classpath   外部依赖的jar目录,例如/tomcat/lib(可为空,多个用","分割)
-pwd         加密密码,如果是#号,则使用无密码模式加密
-code        机器码,在绑定的机器生成,加密后只可在此机器上运行
-Y          无需确认,不加此参数会提示确认以上信息

执行以下命令

java -jar classfinal-fatjar-1.2.1.jar -file yourpaoject.jar -libjars a.jar,b.jar -packages com.yourpackage,com.yourpackage2 -exclude com.yourpackage.Main -pwd 123456 -Y

结果: 生成 yourpaoject-encrypted.jar,这个就是加密后的jar文件;加密后的文件不可直接执行,需要配置javaagent。
classfinal,开发工具,Spring,java,安全,spring

执行jar

java -javaagent:yourpaoject-encrypted.jar='-pwd 123456' -jar yourpaoject-encrypted.jar

maven插件方式

引入ClassFinal插件后直接package即可生成加密包

pom引入插件

<plugin>
    <groupId>net.roseboy</groupId>
    <artifactId>classfinal-maven-plugin</artifactId>
    <version>1.2.1</version>
    <configuration>
        <password>#</password>
        <packages>yourpackage</packages>
        <excludes>org.spring</excludes>
        <cfgfiles>yourconfig</cfgfiles>
        <libjars>yourjar</libjars>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>classFinal</goal>
            </goals>
        </execution>
    </executions>
</plugin>

mvn打包

mvn package -Dmaven.test.skip=true

classfinal,开发工具,Spring,java,安全,spring

反编译jar

配置文件全部清空
classfinal,开发工具,Spring,java,安全,spring

class文件方法体全部清空
classfinal,开发工具,Spring,java,安全,spring

依赖的lib包方法体全部清空
classfinal,开发工具,Spring,java,安全,spring

写在最后

非常重要的项目推荐使用XJar可以完全隐藏Class文件内容,但是需要额外的go环境支持,也可以保守选择ClassFinal直接无侵入达到隐藏方法体和配置文件内容的目的。当然任何的加密和代码混淆的方案都只是增加反编译破解难度,在实际的生产中还需要增加远程鉴权、机器码植入验证、远程依赖加载等等方式保证软件的控制权。文章来源地址https://www.toymoban.com/news/detail-754797.html

到了这里,关于Java class 文件安全加密工具对比与ClassFinal实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 各大加密算法对比(原理、性能、安全、运用)

    原理 按加密可逆可以分为:加密可逆算法和加密不可逆算法。加密可逆算法又可以分为:对称加密和非对称加密。 1、 加密不可逆算法 :一般采用hash算法加密,其原理一般是将原文长度补位成64的倍数,接着初始化固定长度的缓存值,经过循环与分组后的明文进行 与操作、

    2023年04月15日
    浏览(25)
  • 源码加密与SDC沙盒:专业安全解决方案的卓越对比

    在信息安全领域,源码加密和SDC沙盒是两种重要的安全技术,为企业提供全面的保护措施。让我们来看看它们与其他产品的对比分析。 1. 对比传统加密技术:  相比于传统的加密技术,源码加密采用先进的算法和访问控制策略,将源代码转化为不可读的形式,有效避免了源码

    2024年02月11日
    浏览(48)
  • Web3 隐私增强技术对比:探秘加密时代的数据安全与隐私保护

    作者:Anders Dalskov(博士,Partisia Blockchain 密码学科学家) 来源:https://medium.com/partisia-blockchain/mpc-fhe-dp-zkp-tee-and-where-partisia-blockchain-fits-in-c8e051d053f7 编译:TinTinLand 本文重点是对主题提及的每种技术提供最简短、最直观的技术介绍。本文涉及的技术(Differential Privacy 除外)均

    2024年04月26日
    浏览(36)
  • 怎么安全加密文件?文件加密软件哪个安全?

    文件加密可以有效地保护个人信息和企业数据安全,避免数据泄露。那么,我们要怎么安全加密文件呢? 安全 文件加密最基本,也是最重要的要求就是安全,这是避免数据泄露的前提。如果无法保障安全,那么文件加密也就没有了意义。 易用 文件加密不仅要操作简单,而且

    2024年02月07日
    浏览(34)
  • 4.Java开源RSA/SM2非对称加密算法对比介绍

    前期内容导读: Java开源RSA/AES/SHA1/PGP/SM2/SM3/SM4加密算法介绍 Java开源AES/SM4/3DES对称加密算法介绍及其实现 Java开源AES/SM4/3DES对称加密算法的验证说明 非对称加密 主要是指 秘钥对 是非对称的(相对于 对称加密 而言),简单理解就是加密秘钥和解密秘钥不同,一般叫做公钥和私

    2024年02月14日
    浏览(34)
  • 怎么加密文件夹才更安全?安全文件夹加密软件推荐

    文件夹加密可以让其中数据更加安全,但并非所有加密方式都能够提高极高的安全强度。那么,怎么加密文件夹才更安全呢?下面我们就来了解一下那些安全的文件夹加密软件。 如果要评选最安全的文件夹加密软件,那么 文件夹加密超级大师 一定会名列榜首。 针对文件夹加

    2024年02月14日
    浏览(36)
  • [网络安全]sqlmap加密注入教程+实战详析

    在使用手工注入绕过参数加密的限制时,需要构造出原始POC再进行加密注入,耗时耗力,因此采用sqlmap加密注入。 在开始本文前,sqlmap基础知识及姿势可参考: [网络安全]以留言板项目渗透实例带你入门sqlmap 基本语法: * 表示只对该参数进行注入测试,不加 * 的话还会测试

    2024年02月07日
    浏览(36)
  • 几款AI工具代码安全漏洞分析能力对比

         这段时间研究AI平台的能力。 今天我把库博检测工具发现的一个Java安全漏洞相关代码传到几款AI工具上进行分析,看看这几款工具反馈的结果。这些工具包括ChatGPT-3.5、Forefront Claude、AIChat(组合)和清华ChatGlm。        首先我们看看库博检测出的这个漏洞是否存在。

    2024年02月04日
    浏览(27)
  • PDF文件加密怎么解除?10大PDF解除加密工具榜单

    PDF 文件可能包含与个人信息、官方信息或家庭信息相关的重要数据,或者通常是您不希望他人访问的数据。为了防止数据被伪造、滥用或操纵,密码用于保护 PDF 文件。但是,当您忘记或放错了访问文件的特定密码时,可能会出现这种情况。在这种情况下,您通常会搜索 PD

    2024年02月05日
    浏览(30)
  • 【爬虫JS逆向-工具篇】浏览器内存漫游加密参数Hook实战教程

    【作者主页】: 吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建

    2024年02月22日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包