声明:本文仅记录学习过程,已对关键位置脱敏处理,未提供任何工具,请支持正版。
反编译jar包
使用cfr进行对插件核心jar包MyBxxxxxx-obfuss.jar进行反编译,在本地生成a.txt。
java -jar cfr-0.152.jar MyBxxxx-obfuss.jar --renamedupmembers true --hideutf false >> a.txt
查看反编译结果
找到关键部分,只需要修改两处getter方法即可。
public Boolean e() {
return Boolean.TRUE;
}
public Long a() {
return new Long(4797976044000L);
}
修改class文件
建一个项目,在pom引用javassist
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.25.0-GA</version>
</dependency>
修改上一步骤中的getter方法,输出修改后的class文件。java代码:
public static void main(String[] args) throws Exception {
ClassPool classPool = ClassPool.getDefault();
// 直接使用 jar 路径
classPool.appendClassPath("D:\\test\\new\\xxxx.jar");
// 获取指定类
CtClass ctClass = classPool.get("com.ccnode.codegenerator.Y.e.e");
CtMethod method = ctClass.getDeclaredMethod("e");
CtMethod method2 = ctClass.getDeclaredMethod("a");
method.setBody("return Boolean.TRUE;");
method2.setBody("return new Long(4797976044000L);");
// 输出修改后的class
ctClass.writeFile("D:\\test\\new");
}
执行以上java代码后,即可在D:\test\new目录写入class文件所在的包和class文件。
替换jar包中的class
这一步骤需要用java命令操作,不能使用压缩软件去操作。
jar uvf xxxxxxxx.jar com\ccnode\codegenerator\Y\e\e.class
将新的jar包替换进插件zip文件中,安装该插件,code随便输入即可。