java混淆技术
Java-Thinker
这个作者很懒,什么都没留下…
展开
-
一步一步学习Allatori解密 (四)如何还原jar包中的加密字符串
我们把执行方法封装到一个工具类里面MethodExecutor.execute调用这个方法,可以获取执行结果,然后修改ldc.cst的值,这样就可以替换成解密后的字符了,替换完还要把调用解密方法移除。前面已经可以批量解密加密字符串,但是有一个问题,那就是解密完字符串之后,不知道是在什么位置的,可以把加密的字符串替换成解密之后的吗?上一讲,我们用反射去解密的加密字符串,这里会有一个问题,就是要把我们要解密的jar包,要加到我们项目的classpath里面,不然没办法调用反射方法。原创 2022-10-29 18:45:44 · 1312 阅读 · 1 评论 -
一步一步学习Allatori解密 (三)如何找到加密字符串解密
的静态方法,然后结合之前判断是否是加密方法的程序就可以找到这个被加密的字符串,然后我们执行解密方法就可以获取到原始字符串了。接着之前的,我们今天学习如何找到被加密的字符串,打开混淆的类的字节码,我们发现被加密的字符串是这样的,LDC是加密的字符串,之后INVOKESTATIC是执行解密的方法调用。可以看到解密多个字符串没问题了,但是问题又来了,这么多字符串解密完,我怎么知道这是解密什么地方的字符串?执行一下,我们找到了加密的字符串,调用解密方法获得了原始字符串。我们编写如下代码,获取加密的字符串。原创 2022-10-28 13:16:22 · 532 阅读 · 0 评论 -
一步一步学习Allatori解密 (二)如何找到字符串加密方法
分析一下这个加密方法,我们可以看到方法参数是String返回值是String,然后方法内部有些特殊的方法,比如charAt length还有^操作符等等这些特征。那我们就可以利用asm在字节码中找到这个加密方法。自己手工解密字符串很麻烦,要一个一个去执行,那么有没有方法可以用程序去解密呢?执行方法,在控制台输出了方法名称,今天先讲到这里,下次我们讲一下获取到方法,那么如何去解密字符串呢。要实现自动解密,我们首先要先找到哪些方法是字符串解密方法。方法写完,我们测试一下,看看是否能找到加密方法。原创 2022-10-27 09:54:41 · 540 阅读 · 0 评论 -
一步一步学习Allatori解密 (一)手工解密字符串
看到了吧,加密和解密方法用的是同一个方法。跟我们的源码一模一样的,为了保护我们的知识不被别人剽窃,我们进行了混淆操作,混淆后反编译代码看起来是这个样子的,感觉好像是别人没办法读的样子。其实不然,想解密这个加密字符串很容易,只要这个方法在运行的时候能够解密,我们自己执行一下,是不是就能获取到结果呢,我们来验证一下吧。我们获得了我们想要解密的字符串,其实这个解密方法是可逆的,只是对字节进行了异或操作,形成新的字节,我们修改一下代码,验证一下。把反编译的方法拷贝到一个新建的类里面,然后执行一下,在控制台输出。原创 2022-10-27 09:49:33 · 747 阅读 · 0 评论 -
把任意java方法转成C语言代码,交叉编译成.DLL.SO或.DYLIB文件供JNI调用
MYJ2C将编译的Java的Class字节码转换为C语言代码。交叉编译(您不用自己配置编译环境,MYJ2C自动完成)可以生成Windows,Linux,Mac系统X86,ARM平台的动态链接库文件后,通过Java Native Interface 重新链接到原始程序。在此过程结束时,包含原始方法的.class文件的字节码中不会保留原始方法的信息。原创 2022-10-14 19:45:54 · 645 阅读 · 0 评论 -
MYJ2C一款java2c混淆工具 java代码转C代码 交叉编译windows,linux,mac系统动态链接库
MYJ2C将编译的Java方法转换为C语言。编译生成的文件后,生成的二进制文件通过Java Native Interface 重新链接到原始程序。在此过程结束时,包含原始方法的.class文件中不会保留原始方法的信息。运行命令后会把java转换成c代码,生成myj2c.c文件,程序自动下载交叉编译工具,按照配置文件中支持的平台,编译出具体平台需要的运行文件。可以在配置文件config.xml中配置需要编译的平台,需要编译或不编译的类。jar在不同平台运行时,会自动解压需要的库文件。MYJ2C支持如下平台。.原创 2022-08-20 15:54:49 · 1730 阅读 · 0 评论 -
MagicLicense破解记录
MagicLicense 运行时自动生成生成如下类,用于加载应用包内的dll或so动态文件用于验证授权package pku.yim.magiclicense.authlib;public class AuthLib implements IAuthLib { public void load(String name) { System.load(name); } public native String authenticate(ClassLoader var原创 2022-04-29 07:42:55 · 959 阅读 · 1 评论 -
allatori8.1
1.修改ALLATORIxDEMO重命名方法:类com.allatori.iIIIIIIIIipublic StringTHIS_IS_DEMO_VERSION_NOT_FOR_COMMERCIAL_USE ()修改方法返回值,替换ALLATORIxDEMO字符串2.去除运行main方法时打印Allatori Demo信息:类com.allatori.iiIIiIIIIi在THIS_IS_DEMO_VERSION_NOT_FOR_COMMERCIAL_USE 方法中增加method.inser原创 2022-04-08 17:14:55 · 555 阅读 · 0 评论 -
allatori入门
需要去官网下载allatori jar。1、下载的jar可以放到项目可以读到的地方。2、编写混淆配置allatori.xml示例配置:<?xml version="1.0" encoding="utf-8"?> <!--方法参数名称保持不变,避免公共api接口等出现异常 --><property name="local-variables-nami原创 2022-04-07 13:56:43 · 1312 阅读 · 0 评论 -
ALLATORIxDEMO 反编译心得
allatori混淆代码如何解密:1.使用http://www.benf.org/other/cfr/工具反编译获取java代码,在获得的代码中会有ALLATORIxDEMO("=%|:\u007f{a0~:e0R7r;w:}0w\u0001z8v:f!")类似这种加密的字符串,使得代码可读性很差。2.通过java反射机制,获得反编译代码中ALLATORIxDEMO("=%|:\u007f{a0~:e0R7r;w:}0w\u0001z8v:f!")这种格式的字符串,调用原始方法获得ALLATORIxDE原创 2020-07-18 15:13:34 · 4230 阅读 · 0 评论 -
反编译Allatori7.7 ALLATORIxDEMO破解
在使用Allatori进行混淆代码时,如果没有授权时会在main方法中增加如下输出会给使用带来不便 ,那么要如何去掉这个内容呢?找到对应的打印方法后在方法中用javassist在该方法中增加 insertAfter 返回$_=\"\";这样混淆后的代码main方法中就不会打印上面的消息了。如果想修改默认ALLATORIxDEMO的加密名称,请加群1097845310 一起学习...原创 2021-03-04 23:02:06 · 2797 阅读 · 1 评论 -
Allatori代码混淆
*在项目(模块)中添加代码混淆,采用allatori官网提供的allatori.jar放到项目lib目录下本案例采用SpringBoot搭建一、采用pom标签中添加<!-- Allatori plugin start --><plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version&原创 2020-08-03 22:05:15 · 737 阅读 · 0 评论 -
如何去除Allatori-7.4混淆代码main方法中添加的打印信息
使用Allatori混淆代码之后,会自动在main方法中增加打印信息,执行后会在控制台输出:那么要如何去掉这个内容呢?反编译代码最终找到com.allatori.iIiIIiiiii的THIS_IS_DEMO_VERSION_NOT_FOR_COMMERCIAL_USE方法反编译后的代码如下:public void THIS_IS_DEMO_VERSION_NOT_FOR_COMMERCIAL_USE(iiiiiiiiii IIiIIiiiii)…用javassist在该方法中增加insertB原创 2020-08-03 09:39:40 · 976 阅读 · 0 评论