使用javassist破解IntelliJ IDEA sencha extjs插件

用extjs開發(fā)內(nèi)部管理系統(tǒng)真的是非常方便,搭配idea(15.0.3)+extjs插件(6.0.8)就更高效了。不過sencha jetbrain plugin是收費(fèi),只能試用30天。
這里研究下插件源碼,并進(jìn)行破解,作為學(xué)習(xí)試用。

通常來說破解java程序有兩種方法:

  • 反編譯字節(jié)碼,修改源碼,重新編譯成字節(jié)碼,然后替換jar包
  • 直接修改字節(jié)碼

第一張方法最通用,反編譯很簡單,修改源碼后重新編譯一般可能比較麻煩,因?yàn)樾薷囊惶幋a需要把所有依賴都導(dǎo)入才能再次成功編譯,非常麻煩。

我這里用第二種方法,使用javassist提供的字節(jié)碼修改功能直接修改字節(jié)碼文件:

先安裝sencha plugin試用版;

在新建maven項(xiàng)目,在pom中加入依賴:

<dependency>    
    <groupId>javassist</groupId>        
    <artifactId>javassist</artifactId>        
    <version>3.12.1.GA</version>
</dependency>

新建class,內(nèi)容如下:

package com.test;

import javassist.*;
import java.io.IOException;

public class DeCompile {    
    public static void main(String args[]) {        
        ClassPool pool = ClassPool.getDefault();        
      try {                      
           pool.insertClassPath("50228e4ed1034dfe.jar");                
           CtClass cc = pool.get("com.sencha.idea.LicenseValidator");            
           CtMethod cm = cc.getDeclaredMethod("validateLicense", null);            
          cm.setBody("return true;");            
          cc.writeFile();        
        } catch (NotFoundException e) {            
             e.printStackTrace();        
        } catch (CannotCompileException e) {            
              e.printStackTrace();        
        } catch (IOException e) {            
              e.printStackTrace();        
        }    
    }    
}

原理很簡單,50228e4ed1034dfe.jar是插件里核心的jar包,一般在idea安裝目錄下的plugins目錄,或者Application Support(對mac)目錄,可能這個(gè)文件的名字不一樣,但很容易就和其他jar包區(qū)分開,可以先用反編譯工具把這個(gè)jar包打開,瀏覽下里面的代碼,很容易找到與license相關(guān)的類文件和驗(yàn)證方法,找到之后就是怎么修改的問題。

上面的代碼就是直接拿到validateLicense方法,非常暴力地把方法體直接改為return true, 然后再寫入class文件。

這里writeFile不是寫回原jar文件,而是在工程的根目錄下,以com.sencha.idea.LicenseValidator的package路徑新建了一系列文件夾,然后在目錄com/sencha/idea下新建了LicenseValidator.class文件。再次用反編譯軟件打開,發(fā)現(xiàn)里面的validateLicense方法已經(jīng)被修改了。

把原來的jar包解壓縮,然后替換這個(gè)class文件,重新打包新的jar文件,用新的jar文件替換原來的jar文件,重啟IDEA,破解成功。

unzip 50228e4ed1034dfe.jar
### replace class file
jar cvf 50228e4ed1034dfe.jar ./*
### replace jar file

這里是我生成好的jar包,僅供懶人免費(fèi)學(xué)習(xí)使用,切勿用于商業(yè)用途。
https://pan.baidu.com/s/1nvCmsT7
uip4

<blockquote>
【注意】 本文內(nèi)容僅供學(xué)習(xí),切勿用于商業(yè)用途,否則后果自負(fù)
</blockquote>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,268評論 6 342
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,652評論 18 399
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,983評論 25 709
  • 幾天前,由于課程需要,我要在電腦上安裝一個(gè)3DsMAX,在貼吧上找到資源后,我本以為最困難的環(huán)節(jié)已經(jīng)度過,沒想到在...
    祈囍閱讀 753評論 0 2
  • 夜里九點(diǎn),客廳沒有開燈,四下黑幽幽一片,墻上的電視機(jī)忽明忽暗地閃爍著。 手機(jī)再次響起?!拔艺f你這人聽不懂人話是吧?...
    未可夫閱讀 523評論 1 2

友情鏈接更多精彩內(nèi)容