javassist使用教程
javassist使用教程(jar破解)
Javassist是一個開源的java字節碼操做工具,主要是對已經編譯好的class文件進行修改和處理,這裏我寫了一個簡單的說明,複雜的請去看www.javassist.com的官方文檔。
首先說明的是我不是不尊重做者的成果,有時候須要給客戶選擇的時候不可能用戶沒看就要花錢買,能夠先破解了讓用戶看效果,效果好天然會買的.
1. 首先下載開源的代碼,或者直接使用它的jar,開源的代碼裏有simple,能夠構建工程運行。
下載回來的文件結構以下,若是你想構造工程的話,先查看你的windows的classpath是否引入了java的tools.jar,沒有的話你須要在工程裏引入,這個jar在JDK的lib目錄下面,主要做用是提供JDI的使用。
2. Javassist下面有不少例子,包括的方法名字的修改,權限的修改和參數的修改等等,能夠本身看,我主要說明一下jar破解方面的。
(1) 首先準備你要破解的jar,我如今要破解的是chart.ext.jar
(2) 先用反編譯工具,查看一下你須要修改代碼的位置,反編譯出來可能有錯誤,可是類名和方法名通常能夠反編譯正確,若是jar的加密混淆達到了類名和方法名都混淆掉的話,這個方法就不能用了(通常不會出現這麼牛的混淆工具)。
(3) 通過分析反編譯的jar文件,咱們找到a.class這個類,這個類是在圖上繪製版權的,去掉他就能夠了(有的jar的受權是時間的,原理差很少,找到判斷時間的關鍵跳轉就能夠了)
(4) 開始寫代碼,很簡單的幾句話
///////入口啓動函數
publicstaticvoid main(String[] args) throws Exception {
//這個是獲得反編譯的池
ClassPool pool = ClassPool.getDefault();
//取得須要反編譯的jar文件,設定路徑
pool.insertClassPath("E:""crack""chart.ext.jar");
//取得須要反編譯修改的文件,注意是完整路徑
CtClass cc1 = pool.get("com.objectplanet.chart.a");
try {
//取得須要修改的方法
CtMethod method = cc1.getDeclaredMethod("a");
//插入修改項,咱們讓他直接返回(注意:根據方法的具體返回值返回,由於這個方法返回值是void,因此直接return;)
method.insertBefore("{if(true) return ;}");
//寫入保存
cc1.writeFile();
} catch (NotFoundException e) {
e.printStackTrace();
}
}
執行後會在工程下生成一個新的class文件,反編譯打開查看,會發現
if (1 != 0)
return;
這個就不會執行繪製了
(6) 把原有的用winrar解壓開
(7) 把修改的class覆蓋原有的class
(8) 用winrar把解壓出來的從新壓縮,主要要選擇壓縮格式爲zip
![](http://static.javashuo.com/static/loading.gif)
(10) 把生成的壓縮文件chart.ext.zip修改成chart.ext.jar,完工。