修改class文件


http://yucaifu1989.iteye.com/blog/1850500

http://blog.csdn.net/hexin373/article/details/6669813

 

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 



 



(10) 把生成的壓縮文件chart.ext.zip修改為chart.ext.jar,完工。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM