MyBatisCodeHelperpro 是一款 IntelliJ IDEA 上生成mybatis模版文件的插件。
这里分析下怎么无限使用的思路仅供参考。其实很多客户端软件都可以参考该思路
分析该插件工作原理:
- 提交激活码到服务端
- 服务端验证返回验证信息(是加密信息)
- 本地解密信息,将解析后的json解析为实体类
- 判断json解析的实体类的字段过期时间
处理思路:修改最后实体类代码,直接跳过服务端返回的有效时间。
修改设置(setXXX),获取(getXXX)方法。不使用解析后的json字段设置,固定为一个无限长的时间达到破解的结果。
反编译jar包
该插件核心jar包为MyBatisCodeHelper-Pro-obfuss.jar,这是一个混淆后的jar包,所以需要借助CRF 工具。
java -jar cfr-1.5.jar MyBatisCodeHelper-Pro-obfuss.jar --renamedupmembers true --hideutf false >> a.txt
关于 CRF 的使用就不多描述了,可以在这里查看其使用说明:
cfr GitHub地址
https://github.com/leibnitz27/cfr
官网地址
https://www.benf.org/other/cfr
查看反编译结果
如图a.txt为反编译的结果,jar包中所有的类都在该文件中。打开该文件,根据抓包获取到的字段信息,查到目标类为
com.ccnode.codegenerator.S.a.b.class
即我们要修改的方法为
public Long e() {
return this.d;
}
public void a(Long l2) {
this.d = l2;
}
生成需要的class文件
这里借助 javassist 生成修改后的class文件,这里仅贴出部分代码。
// 修改 get方法
StringBuilder builder = new StringBuilder();
builder.append("{")
.append(" return new Long(4797976044000L);")
.append("}");
getValidToMethod.setBody(builder.toString());
// 修改set方法
StringBuilder builder1 = new StringBuilder();
builder1.append("{")
.append(" this.e = new Long(4797976044000L);")
.append("}");
setValidToMethod.setBody(builder1.toString());
String getValidMethodBuilder = "{" +
" return Boolean.TRUE;" +
"}";
getValidMethod.setBody(getValidMethodBuilder);
// 修改boolean属性
String setValidMethodBuilder = "{" +
"this.b=Boolean.TRUE;" +
"}";
setValidMethod.setBody(setValidMethodBuilder);
使用修改后的class文件替换jar包中对应的class文件
打开 IntelliJ IDEA 查看结果,又可以使用到退休了。
|