文档章节

Idea的mybatis插件破解

liuzhengyang
 liuzhengyang
发布于 2016/09/16 18:59
字数 440
阅读 610
收藏 2

博客地址

背景

一些java软件要进行收费,很多采用远程认证的方式,jar包代码中肯定有一个地方处理是否已经认证。 我们通过一些手段,如本地建立一个认证服务器、修改jar包class文件修改认证逻辑等等。

分析

本地采取idea插件[mybatis pluin]进行实验,因为这个比较简单。 在JavaUtils类中有一个refValid方法验证key和result是否有效 在一个ActivationDriver类的activate方式 是进行激活验证。

环境

MAC Intellj 15 (16也是类似的)

步骤

下载插件找到对应的存储jar包的位置,如在我的机器上是~/Library/Application Support/IntelliJIdea15/mybatis_plus/lib 下载后新建一个工程,将这个jar包加入到项目的依赖Libary。 将javassist加入到依赖中,用于修改class文件。 编写一个简单的Main类和Main方法。

package javaassist;

import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.NotFoundException;

import java.io.IOException;

/**
 * Description:
 *
 * @author liuzhengyang
 * @version 1.0
 * @since 2016-09-16
 */
public class Main {
	public static void main(String[] args) throws NotFoundException {
		ClassPool pool = ClassPool.getDefault();
		CtClass driverClass = pool.get("com.seventh7.mybatis.ref.license.ActivationDriver");
		CtClass javaUtil = pool.get("com.seventh7.mybatis.util.JavaUtils");
		CtMethod activate = driverClass.getMethod("activate", "(Ljava/lang/String;)Lcom/seventh7/mybatis/ref/license/ActivationResult;");
		CtMethod refValid = javaUtil.getDeclaredMethod("refValid");
		try {
			refValid.setBody("{return true;}");
		} catch (CannotCompileException e) {
			e.printStackTrace();
		}
		System.out.println(activate);
		try {
			activate.setBody("{com.seventh7.mybatis.ref.license.LicenseData licenseData = new com.seventh7.mybatis.ref.license.LicenseData(\"1\", \"2\");com.seventh7.mybatis.ref.license.ActivationResult res =com.seventh7.mybatis.ref.license.ActivationResult.success(licenseData); return res;}");
		} catch (CannotCompileException e) {
			e.printStackTrace();
		}
		try {
			driverClass.writeFile("hello");
			javaUtil.writeFile("hello");
		} catch (CannotCompileException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


这样会在执行java命令的目录(在Idea里是project下面的目录)生成一个hello文件夹,下面有ActivationResult这个类。 将com文件夹和mybatis_plus.jar文件夹放到一个目录,执行

jar uvf mybatis_plus.jar com 

这样就把修改的class文件替换了。 重启Idea即可生效

© 著作权归作者所有

liuzhengyang

liuzhengyang

粉丝 54
博文 18
码字总数 16157
作品 3
海淀
程序员
私信 提问
加载中

评论(1)

i
itxx2016
呵呵,写的很好啊.
推荐一个很不错的mybatis代码生成网站: fwjava.com
很流行的专门网站,很多知名的互联网企业都在用这个网站.
我也用过,绝对的好用.
怎么分析java进程的网络请求callStack的来源类

最近打开idea发现有一个奇怪的网络请求,由于无法连接,导致每次打开idea要2分钟(正好是http连接超时的时间) 指向211.103.147.6(百度说是北京市 鹏博士宽带,真搞不明白是怎么回事,感觉像是后门...

布尔值
2017/09/22
114
0
一些加快开发效率的idea插件

在Java开发中,idea是当之无愧的最好用的IDE,它也鼓舞了很多开发者开发了许多idea的插件,其中一些插件极大的加快了我们的开发效率。这里介绍一些用过的不错的插件。记录下来,后面再去找这...

艾贺
2017/11/28
0
0
springBoot 整合mybatis

springBoot 整合mybatis s使用IDEA开发,为了提高效率,推荐使用插件: 说明:上述插件可以在低版本的IDEA中找到破解版 项目结构 说明: mapper/UserMapper.xml 是与接口 对应的mapper文件 UserMa...

黄威
2018/07/06
0
0
小螺号滴滴吹/mybatis-generator

mybatis-generate 项目介绍 自定义生成mybatis ,可以自己控制模板 db目录下的main文件运行即可 借鉴 Mybatis-generator的思想 insert、update、query生成 主键查询生成XXXById 自由控制sql...

小螺号滴滴吹
2018/08/29
0
0
推荐几个牛逼的 IDEA 插件

这里只是推荐一下好用的插件,具体的使用方法不一一详细介绍。 JRebel for IntelliJ 一款热部署插件,只要不是修改了项目的配置文件,用它都可以实现热部署。收费的,破解比较麻烦。不过功能...

rock912
03/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

热点图heatMap.js V2.0 研究笔记 及应用

https://blog.csdn.net/rongchaoliu/article/details/47830799 调用方法 function init() { $.ajax({ url: "${request.contextPath}/refresh?type=1", type: "get",......

yan_liu
30分钟前
3
0
Kubernetes 支持 OpenAPI 的新功能

Open API 让 API 提供者可以定义自己的操作和模型,并让开发者可以自动化的生成喜欢语言的客户端,用以和 API 服务器通信。Kubernetes 已经支持 Swagger 1.2(OpenAPI 规范的前身)有一段时间...

xiangyunyan
33分钟前
0
0
深入分析Zookeeper原理

本章重点: 1.了解zookeeper 及zookeeper 的设计猜想 2. zookeeper集群角色 3. 深入分析ZAB协议 4. 从源码层面分析leader选举的实现过程 5. 关于zookeeper的数据存储  Zookeeper的由...

须臾之余
36分钟前
2
0
Spring Cloud Eureka 常用配置详解,建议收藏!

前几天,栈长分享了 《Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!》,今天来分享下 Spring Cloud Eureka 常用的一些参数配置及说明。 Spring Boot 的配置参考Java技术栈微信...

Java技术栈
54分钟前
3
0
分布式项目(七)consul 服务注册与发现

说到分布式自然就离不开分布式和微服务的话题,简单聊一下。 微服务是一种软件架构方式,或者说一个一种结构设计风格,它并不是标准,它的逻辑是把一个整体服务按业务拆分成不同独立的服务,...

lelinked
55分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部