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

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

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

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

[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!
最后于 2025-11-30 13:58
被ciallo_dev编辑
,原因: 为什么会吞代码?