Idea的mybatis外掛破解
阿新 • • 發佈:2019-02-12
背景
一些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即可生效。