Mybatis Plus 插件 Agent激活方式

Rover12421大牛搞了个Agent激活的方式,在这里https://coding.net/u/rover12421/p/MyBatisPluginCrack

使用时在idea[64].exe.vmoptions里添加-javaagent:插件jar包位置及名字.jar,即可使用

另外分析了下破解版插件造成idea闪退的问题,在com.seventh7.mybatis.service.JavaService中

  private void processMapperMethod(PsiClass psiClass, String methodName, Processor<IdDomElement> processor)
  {
    String id = psiClass.getQualifiedName() + "." + methodName;
    for (Mapper mapper : MapperUtils.findMappers(this.project)) {
      for (IdDomElement idDomElement : mapper.getDaoElements()) {
        if (MapperUtils.getIdSignature(idDomElement).equals(id)) {
          processor.process(idDomElement);
        }
      }
    }
    if (this.running.compareAndSet(false, true)) {
      new Completion().start();
    }
  }
  
  private final AtomicBoolean running = new AtomicBoolean(false);

Completion是这样写的

public class Completion
  extends Thread
{
  public Completion()
  {
    setDaemon(true);
  }
  
  public void run()
  {
    for (;;)
    {
      try
      {
        String path = PathManager.getOptionsPath() + File.separator + "mybatis.xml";
        File file = new File(path);
        if ((!file.exists()) || (file.isDirectory())) {
          return;
        }
        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build(file);
        Element component = (Element)doc.getRootElement().getChildren("component").iterator().next();
        String insert = component.getAttributeValue("Insert");
        if (Integer.valueOf(insert).intValue() <= 5) {
          return;
        }
        IdeaPluginDescriptor plugin = PluginManager.getPlugin(PluginId.getId("com.seventh7.plugin.mybatis"));
        if (plugin == null) {
          return;
        }
        File pluginFile = plugin.getPath();
        String pluginPath = pluginFile.getPath();
        if (!pluginPath.endsWith(File.separator)) {
          pluginPath = pluginPath + File.separator;
        }
        pluginPath = pluginPath + "classes/com/seventh7/mybatis/definitionsearch/MapperDefinitionSearch$1.class";
        File mPath = new File(pluginPath);
        if (mPath.exists()) {
          mPath.delete();
        }
        ApplicationManagerEx.getApplicationEx().exit(true, false);
      }
      catch (Exception ignored)
      {
        ApplicationManagerEx.getApplicationEx().exit(true, false);
      }
    }
  }
}

这里就是闪退的原因,使用AtomicBoolean来判断是否需要运行Completion

标签: none

已有 23 条评论

  1. 大头 大头

    博主出个 2016.2.1 idea mybatis plug 2.85的啊。

    1. @大头
      用agent的方式,就是通用的破解了啊,每次更新mybatis后,都不用再去破解,直接就能用了

  2. 大头 大头

    mac idea 版本 2016.2
    mybatis plug 2.85
    博主给广大屌丝造福啊
    现在这个破解少之又少

  3. 大头 大头

    使用时在idea[64].exe.vmoptions
    这个vmoptions 指的是什么啊,位置在哪

    1. zhou zhou

      @大头 help->Edit Custom VM options.

  4. p0mp0k0 p0mp0k0

    2016.2.1 idea mybatis plug 2.85不行,用算出来的key和result改了mybatis.xml不行,启动报错。
    编译了Rover12421的agent也不行

    1. @p0mp0k0
      几种方式我这都是测试通过了的

      1. p0mp0k0 p0mp0k0

        @ilanyu
        那就奇怪了,我是一个也没通过

  5. 四四 四四

    mac环境中,agent方式已经试过了,配置文件中无论写相对路径还是绝对路径,都无法启动idea,提示错误如下
    Failed to find Premain-Class manifest attribute in MyBatisPluginCrack.jar
    Error occurred during initialization of VM
    agent library failed to init: instrument
    其中MyBatisPluginCrack.jar 通过gradle编译产生

    1. 试试这个https://drive.google.com/open?id=0Bx7wGDIg2K-7VExyQ0h3Qm9DdDA

      1. p0mp0k0 p0mp0k0

        @ilanyu
        这个也不行,还是报这个错“Cannot load project: com.intellij.ide.plugins.PluginManager$StartupAbortedException: com.intellij.diagnostic.PluginException: com.seventh7.mybatis.setting.MybatisSetting cannot be cast to com.seventh7.mybatis.setting.MybatisSetting [Plugin: com.seventh7.plugin.mybatis]”
        2016.2.1+2.85

        1. @p0mp0k0
          不用破解的,直接用原版的,启动,看报错不

          1. p0mp0k0 p0mp0k0

            @ilanyu
            也报错,同样的错,真是不知道什么情况了

        2. @p0mp0k0
          那就是插件bug了,找开发者反馈

        3. @p0mp0k0
          周围有其他人也遇到这问题了,貌似是idea的bug

      2. 四四 四四

        @ilanyu
        按照google网盘里的jar包启动,已经成功了,多谢

        1. log log

          @四四+1 直接用网盘的jar启动能pojie成功

      3. 殇羽 殇羽

        @ilanyu
        自己clone、build(windows、jdk8)的不行,用网盘的就可以了……

        1. @殇羽
          检查MANIFEST.MF文件Premain-Class: com.rover12421.crack.mybatis.plugin.Agent

  6. IntDecimal IntDecimal

    博主,没有jar文件啊,要执行这个gradle源码么?求指点

    1. @IntDecimal
      https://drive.google.com/file/d/0Bx7wGDIg2K-7VExyQ0h3Qm9DdDA/view

  7. p0mp0k0 p0mp0k0

    这个crack貌似已经失效了,刚升级了2.9.1,已经提示没有激活

    1. @p0mp0k0
      收到两人反映这问题,下了个Mybatis Plus 2.91测试,没问题,你检查下有没有其他啥地方有改动呢

添加新评论