排行榜 统计
  • 文章总数:1224 篇
  • 评论总数:5 条
  • 分类总数:8 个
  • 最后更新:一小时前

Java SDK标签和Allatori混淆工具共同使用

本文阅读 5 分钟
首页 安全资讯 正文

使用场景

图片

Allatori 是一款强大的 Java 代码混淆工具,属于第二代混淆器,它具有名称混淆、代码控制流混淆和字符串加密等功能,它可以将类名、方法名和变量名替换为无意义的字符串,增加代码的可读性难度。

Virbox Protector 工具是一种强大的代码保护工具,它具有代码虚拟化、字符串加密、调试器检测等功能,可以防止反编译工具直接还原出原始代码。

但 Virbox Protector 工具的 Java VME 保护方式无法保护类名和方法名,而 Allatori 工具具有混淆类名和方法名的功能,所以可以将两者工具直接结合使用,既可以保证代码安全也可以混淆类名。

因此本文描述下 Java vme 方式使用 sdk 标签和 Allatori 混淆工具共同使用的操作流程。




使用流程

图片


#01

步骤描述

图片

1.先对 java 代码添加虚拟化标签;

2.编译成 jar 包后,使用 Allatori 混淆工具(比如Allatori-8.5-Demo)对 jar 包进行混淆;

3.加壳工具解析混淆后的 jar 包,界面可以显示标记的标签;

4.对该 jar 包加壳保护,程序可正常运行;


#02

步骤操作

图片

添加虚拟化标签

1.创建一个VBVirtualize.java,调用Allatori-8.5-Demo\lib\allatori-annotations.jar 包中的 DoNotRename 类

图片

该 jar 包中有个 DoNotRename 的类,对指定类或方法标记后不会混淆名称,内容如下:

图片

2.在 java 代码中调用 VBVirtualize.java 里的内容,比如:

import virbox.VBVirtualize;@VBVirtualize //可添加到类上面,所有的方法都会默认保护public class Main {    public static void main(String[] args) {        System.out.println("hello");        test_vir();    }@VBVirtualize //可添加到方法上面,只保护该方法public static void test_vir(){    System.out.println("test_vir");}}

3.在所需要的 java 文件中的类或方法上面添加完虚拟化标签,然后打包成 jar 包;

4.将该 jar 包拖入到加壳工具中进行解析,界面上可显示标记的函数。

图片


Allatori 工具对 jar 包进行混淆

1.将添加标签后的 jar 包(比如Main.jar) 放到 Allatori-8.5-Demo\tutorial\step01\files 目录下:

图片

2.修改 congfig.xml 文件里的输入文件名称和输出文件名称;

3.在config.xml 里 keep-names 节点中添加包名,让包名不被混淆;

<config>    <input>        <jar in="Main.jar" out="obf-Main.jar"/>        <jar in="mousegestures-1.2.jar" out="obf-mousegestures-1.2.jar"/>    </input><keep-names><class template="class com.aladdin.hasp.test.Test"/></keep-names><property name="log-file" value="log.xml"/></config>

4.执行 RunAllatori.bat 脚本,生成混淆后的 jar 包(比如 obf-Main.jar);


加壳工具解析混淆后的 jar 包

1.将混淆后的 jar 包拖入到加壳工具中解析,则可以看到标记的函数,而且显示的类和方法名都是混淆过的;

图片


保护 jar 包

1.选中 jar 包,使用默认显示的标签,点击`选中保护项目`,默认在 protector 目录下生成保护后 jar 包;

2.保护后的 jar 包可正常运行。


#03

问题现象

图片

问题1:为什么要调用 Allatori-8.5-Demo\lib\allatori-annotations.jar 包中的 DoNotRename 类?比如以下写法会出现什么现象?

图片

解答1:如果不调用 DoNotRename 类,则 Allatori 工具把 Virbox 和 VBVirtualize 也给混淆了,导致加壳工具界面无法解析出来,如图所示:

图片


问题2:为什么在 config.xml 里 keep-names 节点中添加包名,让包名不被混淆?

解答2:如果包名也混淆,则程序运行会提示`错误: 找不到或无法加载主类`。

问题3:可以对未标记的函数进行选择保护么?

解答3:目前不能对未标记的函数进行虚拟化保护,如果选择未标记的函数进行虚拟化保护,则保护后程序会运行失败,错误如下:

## A fatal error has been detected by the Java Runtime Environment:##  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000067b0a233, pid=29168, tid=0x0000000000006600## JRE version: Java(TM) SE Runtime Environment (8.0_301-b09) (build 1.8.0_301-b09)# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.301-b09 mixed mode windows-amd64 compressed oops)# Problematic frame:# V  [jvm.dll+0x14a233]## Failed to write core dump. Minidumps are not enabled by default on client versions of Windows## An error report file with more information is saved as:# D:\download\Allatori-8.5-Demo\tutorial\step01\files\hs_err_pid29168.log## If you would like to submit a bug report, please visit:#   http://bugreport.java.com/bugreport/crash.jsp



END






👇点击关注,🌟星标深盾,了解更多精彩内容!



本文来自投稿,不代表本站立场,如若转载,请注明出处:https://typecho.firshare.cn/archives/6083.html
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。避免网络欺诈,本站不倡导任何交易行为。如您私自与本站转载自公开互联网中的资讯内容中提及到的个人或平台产生交易,则需自行承担后果。本站在注明来源的前提下推荐原文至此,仅作为优良公众、公开信息分享阅读,不进行商业发布、发表及从事营利性活动。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。
-- 展开阅读全文 --
鸿蒙应用上架流程及安全防范措施
« 上一篇 06-23
CodeMeter 在虚拟环境中的授权保护指南(上)
下一篇 » 06-23