javassist 直接修改jar包
阿新 • • 發佈:2019-01-03
下面程式為一個破解jar包license驗證的javassist 使用
package DesCompile; import javassist.ClassPool; import javassist.CtClass; import javassist.CtMethod; import javassist.NotFoundException; public class Test { /** * Description: * @author Administrator DateTime 2014-7-10 下午3:15:42 * @param args */ ///////入口啟動函式 public static void main(String[] args) throws Exception { //這個是得到反編譯的池 ClassPool pool = ClassPool.getDefault(); //取得需要反編譯的jar檔案,設定路徑 pool.insertClassPath("D:xxxx_bootstrap.jar"); //取得需要反編譯修改的檔案,注意是完整路徑 CtClass cc1 = pool.get("org.xxxx.bootstrap.LocalSystemInfo"); try { //取得需要修改的方法 CtMethod method = cc1.getDeclaredMethod("validate"); //插入修改項,我們讓他直接返回(注意:根據方法的具體返回值返回,因為這個方法返回值是void,所以直接return;) method.insertBefore("{if(true) return false;}"); //取得需要修改的方法 CtMethod method2 = cc1.getDeclaredMethod("impregnate"); //插入修改項,我們讓他直接返回(注意:根據方法的具體返回值返回,因為這個方法返回值是void,所以直接return;) method2.insertBefore("{if(true) return false;}"); //寫入儲存 cc1.writeFile(); } catch (NotFoundException e) { e.printStackTrace(); } } }