书接上回
承蒙厚爱,论坛有 hxd 找到了我发在博客上的文章分享在了论坛,而且一直在用始皇的 agent 玩 JetBrains 全家桶,于是我加入了论坛,最近听说某括号升级了,我的脚本那是嘎嘎不行,好了升级的话那就都升级吧。(感谢始皇创建了这么好的论坛,嘎嘎喜欢)
打开 jadx
我们发现在判断是不是 cracked 的时候多了一个函数(上篇文章的时候只有前面两个)
跟进去发现,把这个判断给前置了,我记得之前是在后面的(两个变量名的方式获取就是 debug,如何 debug 博客文章中说了,这儿直接给出源码)
private static boolean ۊథ() {
try {
Field field = Class.forName("jdk.internal.org.objectweb.asm.Type").getDeclaredField("VOID");
field.setAccessible(true);
return field.getInt(null) == 0;
} catch (Exception var1) {
return false;
}
}
尝试破解
做法是依旧暴力哈,直接在 Class.forName
调用处,如果发现传了一个 jdk.internal.org.objectweb.asm.Type
直接抛出异常不让这个函数正常运行。
agentBuilder.type(ElementMatchers.named("java.lang.Class"))
.transform(((builder, typeDescription, classLoader, module, protectionDomain) ->
builder.visit(Advice.to(ClassForNameInterceptor.class).on(ElementMatchers.named("forName")))))
.installOn(inst);
public static class ClassForNameInterceptor {
@Advice.OnMethodEnter
public static void interceptorBefore(@Advice.AllArguments Object[] args,
@Advice.Origin("#m") String methodName) {
if ("jdk.internal.org.objectweb.asm.Type".equals(args[0])) {
throw new RuntimeException("asm 用来修改字节码的");
}
}
}
打包地址:Release rainbow-brackets-2024.2.3 · JAgentSphere/bytebuddy-agent-demo · GitHub
使用方式:像挂载 ja-netfilter 一样挂载当前包,不过需要注意得放在它的上边,不能放下面
-javaagent:/Users/reajason/ReaJason/jetbra/rainbow-brackets-cracked.jar
-javaagent:/Users/reajason/ReaJason/jetbra/ja-netfilter.jar=jetbrains
欢迎学习交流