-
-
[原创]更简单的去除Zelix KlassMaster次数限制方法
-
发表于:
2025-11-30 13:33
13209
-
[原创]更简单的去除Zelix KlassMaster次数限制方法
翻到的老帖,因为ZKM版本变更每个版本的混淆名称都会发生改变。
我也挺感兴趣的,于是有了下面的这篇旷世大石
[分享]Zelix KlassMaster去除调试限制-软件逆向-看雪论坛-安全社区|非营利性质技术交流社区
1. 我们可以先通过编写一个自定义的ClassLoader,重写findClass,根据类名获得指定类的字节数据
中间我们得到的字节数据拿来修改,修改成功后,调用 defineClass , 将修改完成的转为Class。
代码:
2. 在Idea编写自定义 类加载器 加载Jar ,利用反射启动,ZKM.jar
如此一来,我们就可以直接通过 Idea环境的字节码修改,来批量修改字节码了
3. 那么如何定位呢??
通过研究发现 ZKM.jar 里的 整数型 长整数型 字符串 还有各种调用都会变成一个叫 invokedynamic 的指令,那么我们如果,把他的数据拦截并修改,
是不是也能调试,甚至是破解他呢?

如上图,有大量的 rjj.a ,这个就是这个版本的 invokedynamic 混淆, 最前面的 "s" 字符串参数表示对应的 invokexxxx 。

根据线索找到该函数,后续我们编写修改字节码,重写了该函数,将其参数传递到我们工作环境,我们就更方便进行修改,和拦截 输出了。

在做完以上这些,感觉似乎是没什么用啊,没有 字符串 整数这些关键定位的。
很容易发现,每个类中如果有加密的字符串 整型,会在该类下生成一个方法,用于解密获得的结果

如上图的 b(MethodHandles.Lookup lookup, MutableCallSite mutableCallSite, String string, Object[] objectArray),就是解密字符串得到的。
我们匹配他的 desc ,让他走我们工作环境的处理即可。。。
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2026-4-15 20:09
被ciallo_dev编辑
,原因: 11