修改MyBatisCodeHelperpro插件的有效期

查看 155|回复 11
作者:niwajiang   

MyBatisCodeHelperpro 是一款 IntelliJ IDEA 上生成mybatis模版文件的插件。
这里分析下怎么无限使用的思路仅供参考。其实很多客户端软件都可以参考该思路
分析该插件工作原理:   
[ol]
  • 提交激活码到服务端
  • 服务端验证返回验证信息(是加密信息)
  • 本地解密信息,将解析后的json解析为实体类
  • 判断json解析的实体类的字段过期时间
    [/ol]
    处理思路:修改最后实体类代码,直接跳过服务端返回的有效时间。
    修改设置(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
    查看反编译结果


    image-20220603191642043.png (140.92 KB, 下载次数: 0)
    下载附件
    2023-3-15 20:04 上传

    如图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 查看结果,又可以使用到退休了。


    1678881967069.jpg (22.41 KB, 下载次数: 0)
    下载附件
    2023-3-15 20:06 上传

    文件, 插件

  • yiyiwangru   


    niwajiang 发表于 2023-3-16 21:24
    异常日志丢出来看看

    之前一次应该是jdk编译版本不对,这次是对了,插件还是没生效。还是not activated yet
    我再反编译回来,好像没有问题啊。
    [Java] 纯文本查看 复制代码/*
    * Decompiled with CFR 0.152.
    *
    * Could not load the following classes:
    *  com.ccnode.codegenerator.F.c.e
    *  com.google.gson.annotations.SerializedName
    *  kotlin.TypeCastException
    */
    package com.ccnode.codegenerator.F.c;
    import com.ccnode.codegenerator.myconfigurable.DomainObject;
    import com.google.gson.annotations.SerializedName;
    import kotlin.TypeCastException;
    /*
    * Exception performing whole class analysis ignored.
    */
    public class e {
        @SerializedName(value="paidKey")
        private String b;
        @SerializedName(value="valid")
        private Boolean d;
        @SerializedName(value="userMac")
        private String e;
        @SerializedName(value="validTo")
        private Long a;
        private static int[] c;
        private static final String[] bb;
        private static final String[] cb;
        public String a() {
            return this.b;
        }
        public Boolean d() {
            return Boolean.TRUE;
        }
        public String e() {
            return this.e;
        }
        public Long c() {
            return new Long(4797976044000L);
        }
        public void b(String string) {
            this.b = string;
        }
        public void a(Boolean bl) {
            this.d = Boolean.TRUE;
        }
        public void a(String string) {
            this.e = string;
        }
        public void a(Long l2) {
            this.a = new Long(4797976044000L);
        }
    Taker369   


    Taker369 发表于 2023-3-16 22:06
    替换完class后安装插件, 报错:
    java.lang.NoClassDefFoundError: com/ccnode/codegenerator/F/ ...

    终于成功了,都是醉了,问题出在 压缩工具上,坑爹的Bandizip 工具,打开jar包,直接把修改后的class文件替换进去,不知道什么原因,会导致 java识别 class文件路径不对,   代码是com/ccnode/codegenerator/F/c/e.class   替换后java读取到的class路径是 com/ccnode/codegenerator/f/c/e.class 导致了 NoClassDefFoundError异常;  最后还是感谢大佬的分享哈
    秋天   

    感谢大佬的分享哈。
    leiyipeng008   

    谢谢,学习了!
    Isabellaa   

    感谢大佬
    ameiz   

    感谢大佬的分享哈。
    naw   

    感谢分享
    随便去取   

    MyBatisCodeHelper-Pro-obfuss.jar我找不到这个文件 安装的是瞌睡虫的MyBatisCodeHelperPro插件
    随便去取   


    随便去取 发表于 2023-3-16 13:29
    MyBatisCodeHelper-Pro-obfuss.jar我找不到这个文件 安装的是瞌睡虫的MyBatisCodeHelperPro插件

    PyCharm 2022.3.3
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部