当前位置: 首页 > news >正文

IDEA MyBatisCodeHelper Pro插件高版本解密

声明,该方法仅仅作为个人研究学习使用,请勿传播

版本说明

  1. 系统:macOS(Windows同理)
  2. IDE:IntelliJ IDEA 2024.4
  3. MyBatisCodeHelper Pro 3.4

    环境准备

  4. 从插件市场下载MyBatisCodeHelper Pro 

  5. 找到MyBatisCodeHelper Pro的jar包

  6. Windows:在地址栏输入%appdata%\JetBrains\找到idea安装目录,里面有个plugins文件夹,然后里面有个文件夹MyBatisCodeHelper-Pro
  7. MacOS:/Users/用户名/Library/Application Support/JetBrains/IntelliJIdea2023.1/plugins/MyBatisCodeHelper-Pro

MacOS的有一点特殊,注意用户名目录和你的idea版本号

然后进入到lib文件夹,找到instrumented-MyBatisCodeHelper-Pro241-3.4.0+2321.jar。(以后升级版本,估计应该同名,变更的只是版本号)

instrumented-MyBatisCodeHelper-Pro241-3.4.0+2321.jar复制出来,解压得到class文件夹,打开

此时,你去点击离线激活

会弹出如下报错信息

java.lang.RuntimeException: java.lang.IllegalArgumentException: Illegal base64 character 7b at java.base/java.util.Base64$Decoder.decode0(Base64.java:852) at java.base/java.util.Base64$Decoder.decode(Base64.java:570) at java.base/java.util.Base64$Decoder.decode(Base64.java:593) at com.ccnode.codegenerator.af.f.e.a(SourceFile:17) at com.ccnode.codegenerator.af.b.a.a(SourceFile:412) at com.ccnode.codegenerator.af.c.a(SourceFile:65) at com.ccnode.codegenerator.b.a.doOKAction(SourceFile:208)...

确认报错信息在class中如图地方,分析是在208行报错,往上分析到com.ccnode.codegenerator.af.f.e.a(SourceFile:17) 则个class的a方法出现问题,定位class文件

发现是gson解析字符模版报错

解决办法,跳过插件的一系列算法,直接返回f对象

  1. 导入Javassist依赖,导入gson依赖

        <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.13.0</version></dependency><!-- javassist --><dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.28.0-GA</version></dependency>
  1. 修改com.ccnode.codegenerator.af.f.e.a方法

import org.apache.ibatis.javassist.*;import java.io.IOException;public class PJNew {public static void main(String[] args) throws NotFoundException, CannotCompileException, IOException {ClassPool classPool = ClassPool.getDefault();classPool.appendClassPath("YOUR_PATH/instrumented-MyBatisCodeHelper-Pro241-3.4.0+2321.jar");CtClass ctClass = classPool.get("com.ccnode.codegenerator.af.f.e");CtMethod parseLicenseMethod = ctClass.getDeclaredMethod("a", new CtClass[] { classPool.get("java.lang.String") });StringBuffer bodyBuff = new StringBuffer();bodyBuff.append("{").append("  com.google.gson.Gson gson = new com.google.gson.Gson();").append("  com.ccnode.codegenerator.af.d.f e = (com.ccnode.codegenerator.af.d.f)gson.fromJson($1,com.ccnode.codegenerator.af.d.f.class);").append("  return e;").append("}");parseLicenseMethod.setBody(bodyBuff.toString());//         对修改的文件,写出到一个新文件ctClass.writeFile("YOUR_PATH");}
}

会得到改写后的class文件

直接跳过其他逻辑,解码

{
    "paidKey": "XXX",
    "valid": true,
    "userMac": "XX-XX-XX-XX-XX-XX",
    "validTo": 4859711999000
}这个字符串信息(为什么是这个对象,可以从刚才的doAction方法中自己找找)

#下一步 替换Class文件

jar uvf instrumented-MyBatisCodeHelper-Pro241-3.4.0+2321.jar com/ccnode/codegenerator/af/f/e.class

# 最后一步

  1. 将修改后的jar包放回MyBatisCodeHelper-Pro/lib目录下,建议先删除原来的那个jar包,再把新的jar包放入
  2. 重启IDEA
  3. IDEA中打开设置——其他设置——MyBatisCodeHelperPro——翻到最后,点离线激活,输入
  4. {
        "paidKey": "XXX",
        "valid": true,
        "userMac": "XX-XX-XX-XX-XX-XX",
        "validTo": 4859711999000
    },paidKey:你的名字,userMac是你的唯一码,validTo是时间戳,这个时间到2123年,够用了点击激活,你就会发现,哇,成功了,恭喜你,完成了根据报错信息反编译源码,查找问题,解决问题的这一伟大工程。

题外话,在写这篇文章的时候,本来已经激活,

我退出激活之后再走一遍流程,发现版本又从3.4.0升级到了3.4.1,我又重新走了一遍流程,当我输入激活码的时候,提示

这个时候不要慌,所有的提示都在前面的doAction中可以找到错误逻辑

这里的逻辑就是,从你的输入框中获取信息,如果你的验证信息解绑过,那么会判断以前是否使用过这个验证信息,如果是,就会弹出激活码不正经的提示。那么解决办法就是,把过期时间加一点就可以了

至此,大功告成

如果还有任何不懂的地方,欢迎私信交流

http://www.xdnf.cn/news/16291.html

相关文章:

  • docker 部署服务工具记录
  • ChatGPT-o3辅助学术大纲效果如何?
  • helloword 1(安卓逆向工具简单利用)
  • vue中textarea标签高度自适应文本高度(解决方案)
  • 6.8.最小生成树
  • 中华传承-医山命相卜-易经
  • 如何批量在多个 Word 文档末尾添加广告页面
  • 6.6.图的广度优先遍历(英文缩写BFS)
  • 在ubuntu中VsCode使用python docker容器
  • 工厂方法模式详解及c++代码实现(以自动驾驶感知模块中的应用为例)
  • 三维点拟合平面ransac c++
  • JAVA设计模式:注解+模板+接口
  • 解锁健康生活:养生新主张
  • 【AI飞】AutoIT入门七(实战):python操控autoit解决csf视频批量转换(有点难,AI都不会)
  • 汽车行驶工况特征参数:从“速度曲线”到“驾驶DNA”的硬核解码
  • Linux:命令行参数、环境变量
  • ES6 Object.values 特定字段处理
  • IntelliJ IDEA clean git password
  • 每日一题(小白)暴力娱乐篇33
  • ObjectOutputStream 深度解析
  • 关于RK3588cpu多线程速度慢的问题
  • vLLM V1:性能优化与集群扩展的深度解析
  • LabVIEW 项目开发:需求引导与系统统筹
  • DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_自定义单元格大小示例(CalendarView01_07)
  • 基于CNN与VGG16的图像识别快速实现指南
  • 职坐标IT培训热门技术实战精讲
  • 跟我学C++中级篇——内存异常的分析
  • 在排序数组中查找元素的第一个和最后一个位置--LeetCode
  • 【SAP ME 43】RESRCE表操作导致HANA中表锁定解决方案
  • Netlink套接字