网站首页 > java教程 正文
很多人可能对Java混淆器可能都不太了解,包括我之前都不太了解,公司突然让用这个Java混淆器来对代码进行一点保护,我就这几天一直在摸索这个东西,我发现国内的网站对这个东西的用法真的不多,当时我是很绝望的,现在有了一点心得,所以才想分享出来,大家有什么好的方法可以给点建议哈
Allatori:Allatori是一款很不错的混淆器,可以混淆java写的java程序或者android程序。今天主要分享一下我用Allatori v6.2 DEMO的经验
环境:Windows 10 + ubuntu,下载好Java混淆器
下面开始正文,全干货
先提一下我建的Java程序员交流群632119504,欢迎喜欢Java的各位大神小神前来学习交流,每天群里面也会有大佬在线答疑,也有各种项目案例供你自己学习哦
因为allatori里所有文件都是IIIiiiIII此类进行混淆的,并且长度一样,所以不能在Windows下进行解包,拖到ubuntu下使用cfr进行反编译,完成后拖到ide中进行分析,
demo版本没有功能上的限制,但是会显示很多demo字样,比如会在部分方法下打印如下标志:
点击查看大图
其次部分方法名和变量名可能会被混淆成ALLATORIXDEMO字样,这里主要是针对以上两个如何破除掉限制。
点击查看大图
这里可以看到一个规律就是
字符串解密都是调用一个名为THIS_IS_DEMO_VERSION_NOT_FOR_COMMERCIAL_USE的解密方法,并且解密参数只有一个,但是分析后发现解密方法并不只有一个,大概有十几个,并且解密算法也不一样,出于这一点就能直接写脚本对字符串进行还原,好在java里有agent机制,这里还是使用javaagent进行动态打印
使用工具依然还是javassist,(Java学习交流群632119504)
这里每加载一个类都会对所有方法进行编译,判断当前方法名,返回值类型和参数类型,过滤掉其他不相关的方法,然后直接在结尾插入system.out.print方法,网上对于javassist的教程简直一塌糊涂,不如直接翻教程,返回值的表示为$_ ,如果是参数的即为$1,$2这样,拿到返回值就可以看出规律,这里运行一下的话会看到很多ALLATORIXDEMO的字样,判断就是这些字段会影响方法名和变量名,直接这里修改方法对返回值进行筛选,判断为我们想改的字段直接修改掉
这里我改成了自己的id,自己写个demo混淆测试下
这里logo还在
Java学习群632119504
不过ALLATORIXDEMO的字样已经没有了,然后想着怎么去处理这个logo,测试过程中发现上面的解密时出现了Obfuscation by 的字样,所以这里想着直接连参数也一起打印出来,找到这个字样解密前的状态 发现混淆前Obfucation by包含了^zE}*QS3的字眼,直接去ide里搜索,仅找到一处声明
看来这个地方就是生成logo的地方就行了,直接把返回值改成其它任何的
这里可以发现我并没有直接去指定方法去修改,感觉那样局限性会比较大,混淆器一更新就不行了,所以这里的指定比较模糊,效果
最后还是留下一个问题就是如何直接去掉那个插入的system.out.println,这个暂时还没有解决,大家有什么好的建议可以评论区讨论一下,我会留意的,尽量保住我的饭碗啊
- 上一篇: 代码安全之代码混淆(代码混淆后怎么运行)
- 下一篇: 许可证lisence校验和代码混淆的实现原理
猜你喜欢
- 2024-11-08 Java 程序员排行前 10 的错误,你有没有中?
- 2024-11-08 常见面试题之java系列(面试题目java)
- 2024-11-08 Android混淆相关(apk混淆)
- 2024-11-08 Java零基础知识必备「分层概念」(java分层领域模型 太麻烦)
- 2024-11-08 Java面试题分享(java面试题精选)
- 2024-11-08 Java开发必会的反编译知识(附支持对Lambda进行反编译的工具)
- 2024-11-08 JS加密:JavaScript代码加密混淆(js代码加密原理)
- 2024-11-08 Java一键授权方案 离线授权 日期授权 代码授权 代码混淆
- 2024-11-08 Java 基础 - 类与对象(java中类和对象)
- 2024-11-08 Java开发者易犯错误Top10(java: 错误: 不支持发行版本 7)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)