关于allatori代码混淆技术的一次实践

Java源代码加密工具(Allatori)用法说明 一、Allatori简介 Allatori 是第二代 Java 混淆器,可为您的知识产权提供全方位的保护。 尽管大多数第二代混淆器都提供了值得保护的级别,但我们已经在Allatori中开发了许多附加功能,以使对代码进行逆向工程几乎不可能。 Allatori 不仅会混淆,还会最大程度地减少应用程序的大小并提高速度,同时您和您的团队以外的任何人都无法读取您的代码。作为每个现代 Java 混淆器,Allatori 具有完整的水印功能,从而有可能为您的软件提供适当的许可!如果有必要保护您的软件,并且... 阅读详情
AI摘要

本文介绍了Java代码混淆的背景,主要关注Allatori作为混淆工具在工程应用中的使用,包括Allatori的简介,如何在SpringBoot项目中集成混淆插件并配置,以及混淆后的验证方法。

1. Java代码混淆的背景

1.1 混淆使用场景

我们在工程应用中经常会遇到核心代码不希望给别人抄袭,但系统是用java开发的,无法避免被反编译的情况,这样可以用代码混淆的方式来解决。调查了一下主流的第三方混淆工具,目前主流的有三种技术yguard、ProGuard、Allatori,我们目前方案就是采用Allatori进行Java的代码混淆。

1.2 Allatori简介

allatori官方网站:https://allatori.com/
proguard官网: https://www.guardsquare.com/proguard.

2. 混淆的插件的集成

2.1 操作流程

(以auth-serivce服务为例)

  1. 在auth-service服务下建立allatori文件夹
  2. 将官网下载的lib文件夹拷贝到allatori文件夹下

在这里插入图片描述

  1. 新建allatori.xml文件(log.xml文件在package的时候会自动生成)
<config>
    <input>
        <!--混淆后直接覆盖原文件,out指向的路劲为混淆后的jar -->
        <jar in="../app/lib/service-deadline-control-sca-boot-starter-1.5.1-SNAPSHOT.jar"
             out="../app/lib/service-deadline-control-sca-boot-starter-1.5.1-SNAPSHOT.jar"/>
    </input>

    <classpath>
        <jar name="../app/lib/*.jar"/>
    </classpath>

    <keep-names>
<!--        <class access="protected+">-->
<!--            <field access="protected+" />-->
<!--            <method access="protected+" />-->
<!--        </class>-->

        <class template="class com.aaa.sca.config.ServiceDeadlineControlConfiguration"></class>
        <class template="class com.aaa.sca.constant.ServiceDeadlineControlConstants"></class>
        <class template="class com.aaa.sca.model.*"></class>
        <class template="class com.aaa.sca.runner.AuthCodeApplicationRunner"></class>
        <class template="class com.aaa.sca.scheduler.ServiceCertificateReloadScheduler"></class>
        <class template="class com.aaa.sca.service.ServiceCertificateService"></class>
        <class template="class com.aaa.sca.util.*"></class>


        <!-- Matches serialization members -->
<!--        <class template="class * instanceof java.io.Serializable">-->
<!--            <field template="static final long serialVersionUID"/>-->
<!--            <method template="void writeObject(java.io.ObjectOutputStream)"/>-->
<!--            <method template="void readObject(java.io.ObjectInputStream)"/>-->
<!--            <method template="java.lang.Object writeReplace()"/>-->
<!--            <method template="java.lang.Object readResolve()"/>-->
<!--        </class>-->
    </keep-names>

    <ignore-classes>
        <!-- 配置启动类不被混淆  保证springBoot可以正常启动 -->
<!--        <class template="class *ServiceDeadlineControlConfiguration*"/>-->
        <class template="class com.aaa.sca.config.ServiceDeadlineControlConfiguration"></class>
        <class template="class com.aaa.sca.model.AuthCodeContent"></class>
        <class template="class com.aaa.sca.model.ServiceCertificate"></class>

        <!-- 第三方的 不需要混淆 -->
        <class template="class *springframework*"/>
        <class template="class *spring*"/>
        <class template="class *framework*"/>
        <class template="class *alibaba*"/>
        <class template="class *persistence*"/>
        <class template="class *apache*"/>
        <!-- 排除如下包下的类-->
<!--        <class template="class com.sinohealth.sca.config.*"/>-->
    </ignore-classes>

    <property name="log-file" value="../allatori/log.xml"/>
<!--    <property name="packages-naming" value="abc"/>-->
    <property name="classes-naming" value="abc"/>
    <property name="classes-naming" value="unique"/>
    <property name="fields-naming" value="123"/>
    <property name="fields-naming" value="iii"/>

    <property name="string-encryption" value="enable"/>
    <property name="string-encryption-type" value="fast"/>
    <property name="string-encryption-version" value="v4"/>
</config>
  1. 在项目的pom.xml新增pulgin依赖

    				<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>copy-and-filter-allatori-config</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${basedir}/target</outputDirectory>
                                <resources>
                                    <resource>
                                        <directory>allatori</directory>
                                        <includes>
                                            <include>allatori.xml</include>
                                        </includes>
                                        <filtering>true</filtering>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.2.1</version>
                    <executions>
                        <execution>
                            <id>run-allatori</id>
                            <phase>package</phase>
                            <goals>
                                <goal>exec</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <executable>java</executable>
                        <arguments>
                            <argument>-Xms128m</argument>
                            <argument>-Xmx512m</argument>
                            <argument>-jar</argument>
                            <argument>allatori/lib/allatori.jar</argument>
                            <argument>${basedir}/target/allatori.xml</argument>
                        </arguments>
                    </configuration>
                </plugin>
    

2.2 混淆的配置说明

allatori.xml为allatori插件的混淆配置

 		<input>
        <!--混淆后直接覆盖原文件,out指向的路劲为混淆后的jar -->
        <jar in="../app/lib/service-deadline-control-sca-boot-starter-1.5.1-SNAPSHOT.jar"
             out="../app/lib/service-deadline-control-sca-boot-starter-1.5.1-SNAPSHOT.jar"/>
    </input>

in是未混淆的jar的输入路径, out是混淆后的jar输出路径

		<classpath>
        <jar name="../app/lib/*.jar"/>
    </classpath>

classpath是jar依赖的相关jar

    <keep-names>
            <class access="protected+">
                <field access="protected+" />
                <method access="protected+" /> 
            </class>
            <class template="class com.aaaa.sca.config.ServiceDeadlineControlConfiguration"></class>
    </keep-names>

class 指定保持不变的类名,配置类保持,不然springboot加载会有问题

field 指定保持不变的属性名

method 指定保持不变的方法名

  <ignore-classes>
        <!-- 配置启动类不被混淆  保证springBoot可以正常启动 -->
<!--        <class template="class *ServiceDeadlineControlConfiguration*"/>-->
        <class template="class com.aaa.sca.config.ServiceDeadlineControlConfiguration"></class>
        <class template="class com.aaa.sca.model.AuthCodeContent"></class>
        <class template="class com.aaa.sca.model.ServiceCertificate"></class>

        <!-- 第三方的 不需要混淆 -->
        <class template="class *springframework*"/>
        <class template="class *spring*"/>
        <class template="class *framework*"/>
        <class template="class *alibaba*"/>
        <class template="class *persistence*"/>
        <class template="class *apache*"/>
        <!-- 排除如下包下的类-->
    </ignore-classes>

ignore-classes是指定完全不混淆的class

2.3 校验混淆结果

  1. 执行maven指令,进行打包,如果看到一下日志,说明打包成功;
mvn clean install  -Dmaven.test.skip=true

在这里插入图片描述

  1. 使用jd-gui工具反编译jar包,查看代码,看到以下效果就是混淆成功了;

    在这里插入图片描述

  2. 启动项目是否正常,查看日志是否正常,各方面政策则完成混淆可以直接推代码到测试环境运行;

参考博客:

https://blog.youkuaiyun.com/lonelymanontheway/article/details/104574050/

https://blog.youkuaiyun.com/blackoon88/article/details/124630907

Allatori混淆SpringBoot项目代码 Allatori简介 Allatori是一个Java 混淆器,它属于第二代混淆器,因此它能够全方位的保护你的知识产权。 Allatori具有以下几种保护方式:命名混淆,流混淆,调试信息混淆,字符串混淆,以及水印技术。对于教育和非商业项目来说这个混淆器是免费的。支持war和jar文件格式,并且允许对需要混淆代码的应用程序添加有效日期。 有项目需要对代码进行保护,比较初级的方案就是对代码进行混淆,打包之后的文件进行反编译后,就可以看到效果。 Allatori官方文档 ... 阅读详情

相关推荐

【Java】Allatori代码加密

今天给各位分享一个Allatori代码加密实战,这个其实是我这边在做Allatori调研时写出来的操作实例,希望对大家有用

Kida 的躺平小屋 2067

代码混淆工具-Allatori-8.1使用

在工作中,我们写的代码需要开源和需要给团队中的人使用,为了防止代码被轻松反编译,可以通过混淆工具,降低代码的可读性。 文章目录前言一、Allatori介绍二、使用步骤1.引入jar和配置文件2.配置allatori文件3.配置pom.xml总结 前言 本文主要讲解allatori在Java maven工程中的使用方法。 一、Allatori介绍 官方地址: http://www.allatori.com Allatori 是第二代 Java 混淆器,可为您的知识产权提供全方位的保护。 尽.

blackoon88的博客 6145

idea使用Allatori混淆java代码

摘要 我们平时开发的java项目大多是生成一个jar包运行,而jar包可以通过jd-gui进行解析,然后看到我们的源代码,如果我们写了大量的代码别人直接通过这样的方式把我们的辛苦成果直接窃取了那是多么难过的事情,因此我们很有必要对jar包做一些混淆代码的操作,让别人无法直接看懂我们的代码。本文将教会你如果把jar包进行混淆 一.创建java项目,并运行 1.创建并运行工程: 点...

aa787282301的博客 6740

使用Allatori对Spring Boot项目进行代码混淆

Allatori混淆技术介绍 Allatori是一个Java 混淆器,它属于第二代混淆器,因此它能够全方位的保护你的知识产权。 Allatori具有以下几种保护方式:命名混淆,流混淆,调试信息混淆,字符串混淆,以及水印技术。对于教育和非商业项目来说这个混淆器是免费的。支持war和jar文件格式,并且允许对需要混淆代码的应用程序添加有效日期。 有项目需要对代码进行保护,比较初级的方案就是对代码进行...

Lovnx 1万+

使用allatori对SpringBoot多模块代码进行混淆

使用allatori对SpringBoot多模块代码进行混淆参考文档操作步骤1、在包含Controller类的module下(以下简称A)添加jar包2、在A的pom.xml中添加3、在A的resources目录下添加文件allatori.xml,内容如下4、执行mvn clean,然后将A的resources目录下的文件allatori.xml复制到A的target目录下,再执行mvn inst...

weixin_37290284的博客 3139

Allatori混淆后在使用JVMTI加密

文章目录Allatori代码混淆后在对jar进行JVMTI加密保护使用场景AllatoriAllatori简介Allatori使用配置文件配置修改Clean.batconfig.xmlRunAllatori.bat开始混淆混淆前混淆后启动混淆后jarJVMTI加密生成.dll动态链接库java代码加密加密后的jar开始解密jarJVMTI存在的问题混淆demo 0积分下载 Allatori代码混淆后在对jar进行JVMTI加密保护 使用场景 由于使用JVMTI对jar进行加密,防止项目反编译。但是由于JV

骐骥筋力成,志在万里外 1387

代码混淆技术yguard、ProGuard、Allatori

混淆定义、混淆技术、yguard、proguard、allatori、

lonelymanontheway的博客 9628

UDS(三)网络层时间参数

网络层定义了N_Ar、N_As、N_Br、N_Bs、N_Cr、N_Cs六个时间参数。 网络层在检测到错误的时间传递至上层使用者 1.当N_As 超时时,即发送方没有及时发送出N_PDU,系统将放弃信息的接收并传递<N_Result> = <N_TIMEOUT_A>的N_USData.comfirm指示 2.当N_Ar超时时,即接收方没有及时发送出N_PDU,系统将放弃信息的接收并传递<N_Result> = <N_TIMEOUT_A>的N_USData.co

weixin_44522306的博客 1万+

Allatori代码混淆

Allatori代码混淆 *在项目(模块)中添加代码混淆,采用allatori官网提供的allatori.jar,本案例采用SpringBoot搭建,maven私服搭建引入allatori依赖 一、采用pom方式引入 1、pom.xml中引入依赖 在dependencies标签中添加 <!-- 私服allatori --> <dependency> <grou...

cs4380的博客 3489

地瓜机器人RDK Studio使用入门教程

不知道大家在使用AI开发板的时候有没有遇到过板子官方镜像占据空间大难以保存,想要的时候找不到?官方示例项目久而久之便难以找寻?首次登陆开发板连接网络还需要准备显示器键盘鼠标外设繁杂?…为了解决平时开发过程中遇到的种种不便利问题,地瓜机器人创新的推出了RDK Studio这一官方开发者软件,使智能机器人开发迎来新纪元!通过这一软件极大降低了机器人的开发门槛,哪怕是零基础的用户亦可轻松上手RDK系列板卡!

xiongqi123123的博客 3430

【读代码】深入解析Ragas:RAG应用效果评估最好的工具

Ragas是由Exploding Gradients团队开发的专业LLM应用评估框架,通过自动化测试和量化指标帮助开发者构建可靠的AI系统。# 典型架构模块 ├── metrics # 50+评估指标实现 ├── testset # 测试集生成系统 ├── embeddings # 多模态嵌入支持 ├── integrations # 主流框架集成 ├── optimizers # 遗传算法优化器 └── experimental # 前沿功能实验区。

kakaZhui的博客 850

代码混淆神器 Allatori

混淆器的简单实用

charmsongo的博客 2477

一次请求穿过的六道关卡:微服务基础组件的通信与IO、事件驱动、负载均衡、服务路由、API网关与配置协调

微服务的稳定性往往取决于看不见的基础组件。本文跟随一次下单请求,依次穿过API网关、服务路由、负载均衡与服务通信,再沿事件分支扇出,并从控制面审视配置中心。通信层剖析握手成本、连接复用、epoll与主从Reactor、心跳判活、退避抖动、截止时间与重试预算;事件层讲解编舞与编排、事务发件箱和幂等消费;均衡与路由对比静态与动态算法、路由链、全链路灰度与同区保底;网关讨论过滤器链与限流算法;配置部分给出四类配置、长轮询与共识协调,最后归纳五道防线。文中关键数据均来自可在Java8运行的演示程序。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

Java打包混淆之Allatori

111

jy317358306的博客 6345

详细介绍用MATLAB实现基于A*算法的路径规划(附完整的代码,代码逐行进行解释)(一)--------A*算法简介和环境的创建

   本系列文章主要介绍基于A*算法的路径规划的实现,并使用MATLAB进行仿真演示。    一、 A*算法简介       A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。      公式表示为: f(n)=g(n)+h(n),其中, f(n) 是从初始状态经由状态n到目标状态的代价估计,g(n) 是在状态空间中从初始状态到状态n的实际代价,h(n) 是从状态n到目标状态的最佳路径的估计代价。

慕羽★的博客 7万+

092、Python在芯片验证中的应用:从脚本小子到验证架构师

Python在芯片验证中的高效应用 本文通过实际案例展示了Python在芯片验证中的关键作用。凌晨三点的调试场景揭示了传统方法的局限,Python脚本能在20分钟内分析80GB波形数据定位FIFO指针问题。文章重点介绍了两个核心工具: 智能日志分析系统:通过正则表达式和上下文分析,自动分类百万行验证日志中的错误,生成可视化报告,效率远超传统grep方法。 寄存器模型生成器:将Excel表格自动转换为UVM寄存器模型代码,将原本需要两周的手工工作缩短至两小时,同时保证零错误。 文章还展示了Python与Sys

z534437748的博客 72

Allatori混淆器的介绍以及使用方法

Allatori的介绍 1、allatori是第二代的java混淆器; 2、具有命名混淆,流混淆、字符串混淆以及水印技术等等强大的混淆功能, 因此对混淆后的代码进行逆向工程几乎是不可能的; 3、允许对需要混淆代码的应用程序添加有效期; 4、对代码混淆效果非常强,而且操作简单; 5、不足是混淆之后对程序的性能有较大的影响,混淆之后运行速度会有所降低(一般来说只要对代码进行混淆,多多少少都会对性能产生...

Viviha的博客 1万+

如何从 VMware 官网下载最新版本的 VMware Workstation

如何从 VMware 官网下载 VMware Workstation

XiaoqiangClub的博客 5920

Allatori代码混淆springboot

Allatori代码混淆 这个是下载的allatori包 Clean.bat用来清除混淆后生成的jar包和日志文件。 config.xml是主要的配置文件,用来配置代码混淆的格式。 mousegestures-1.2.jar是要混淆的jar包文件。 MouseGesturesObfuscated.bat用来启动混淆后的jar包文件。 MouseGesturesOriginal.bat用来启动混淆前的jar包文件 RunAllatori.bat用来执行混淆的启动工具 test.jar未混淆的jar包 混淆

qq_45005111的博客 2476

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Allatori java代码混淆

有时候处于某种原因,我们需要将自己的代码做一些“处理”,保护一下自己小小的辛苦成果。至于allatori的技术原理以及其他的混淆技术这里不做解释,只是做一些简单记录; 1 从官网下载allatori文件(http://www.allatori.com/),也可以从以下链接获取 链接:https://pan.baidu.com/s/1R6lPvaLNYvC2r-h-Ad--Xw 提取码:cm4...

qxianx的博客 4849

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

springboot+allatori代码混淆技术(踩过的坑)

最最基础的demo只有一个Controller返回字符串,注意!没有数据库!所以基本上网上能够搜索到的教程几乎都是一样的,所以不在此赘述,具体详见参考url:https://github.com/Lovnx/confusion。里面有非常详细的操作步骤。 大多数需要加密或者做混淆的代码肯定都会有数据库操作,而allatori.xml官方参考模板里面是这样: &lt;config&gt; ...

u014795242的博客 2万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring Boot使用Allatori代码混淆

Allatori混淆技术介绍 Allatori是一个Java 混淆器,它属于第二代混淆器,因此它能够全方位地保护你的知识产权。 Allatori具有以下几种保护方式:命名混淆,流混淆,调试信息混淆,字符串混淆,以及水印技术。对于教育和非商业项目来说这个混淆器是免费的。支持war和jar文件格式,并且允许对需要混淆代码的应用程序添加有效日期。 有项目需要对代码进行保护,比较初级的方案就是对代码进行...

做工作不具体化,想问题就会简单化 3703

基于Allatori7.6的Java代码混淆

基于Allatori7.6对Java代码实现代码混淆 第一步:下载Allatori7.6 http://www.allatori.com/ 第二步:解压Allatori-7.6-Demo.zip 解压下来就是这个样子,然后你可以用两种方式实现代码混淆 方式一:就是在你项目中打包的时候进行混洗代码 第一步:Allatori-7.6-Demo下的lib下面的jar包复制到你要打包的项目中去 第二步:配置在你项目下src/main/resources新建一个allatori.xml这个文件 <confi

HParanoid的博客 3921

SpingBoot利用allatori对class混淆输出

在很多企业中,代码管理是非常重要的,每个企业都有自己的私有机制,生产出一好的产品,又不想让别人知道自己的技术是如何实现的(作者在这里吐槽:好东西还是需要分享的),就会让搞编程的人,或者是安全师对代码进行保护,这里就是运用Allatori技术对class文件中的代码进行混淆,继而使得其他人即便获取到程序,反编译程序也是徒劳无功、无功而返,这就保证了自己代码的专利性。在编程界有许多开源的防反编译工具,...

阿叁博客 6348
上一篇: 关于业务库从MySQL迁移到DM8的操作指南
下一篇: 数据开发流程图
CarsonBigData
博客等级 码龄9年 8316粉丝 166原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值