<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    午夜拍鍵驚奇
    子夜 編程 代碼與我同在
    posts - 48,comments - 118,trackbacks - 79
    開場白就不說了,直接切入正題吧。
    本破解的前提是安裝了IDEA 5.0并獲得了30天的評估序列號,即IDEA可以啟動但有30天的時間限制。
    首先根據bin目錄下idea.bat的內容確定入口類:



    SET CLASS_PATH
    =%IDEA_HOME%\lib\idea.jar
    SET CLASS_PATH
    =%CLASS_PATH%;%IDEA_HOME%\lib\openapi.jar
    SET CLASS_PATH
    =%CLASS_PATH%;%IDEA_HOME%\lib\jdom.jar
    SET CLASS_PATH
    =%CLASS_PATH%;%IDEA_HOME%\lib\log4j.jar
    SET CLASS_PATH
    =%CLASS_PATH%;%IDEA_HOME%\lib\extensions.jar
    SET CLASS_PATH
    =%CLASS_PATH%;%IDEA_JDK%\lib\tools.jar


    第一行中的idea.jar即是啟動jar包。
    用Win RAR打開idea.jar,依次進入com、intellij目錄,可發現intellij下包甚多,應該就是IDEA的核心。接下來就是憑運氣和“天賦”了,序列號的校驗模塊就在這些包中,找出來只是時間問題。
    最終我把焦點定在com.intellij.licensecommon.license.LicenseDataImpl(LicenseData是個抽象類)。使用DJ Java Decompiler對LicenseDataImpl.class進行反編譯,得到的源代碼如下:

      1package com.intellij.licensecommon.license;
      2
      3import com.intellij.licensecommon.util.*;
      4import java.util.*;
      5
      6public class LicenseDataImpl
      7    extends AbstractLicenseData{
      8  static Date makeDate(int i,int j,int k){
      9    Calendar calendar = GregorianCalendar.getInstance(TimeZone.getTimeZone("Europe/Prague"));
     10    calendar.clear();
     11    calendar.set(i,j,k);
     12    return calendar.getTime();
     13  }

     14
     15  public LicenseDataImpl(String s,String s1){
     16    super(s,s1);
     17    g = null;
     18  }

     19
     20  public LicenseDataImpl(String s,String s1,long l){
     21    super(s,s1,l);
     22    g = null;
     23  }

     24
     25  public String toString(){
     26    return getUserName() + ":" + getKey();
     27  }

     28
     29  public boolean willNeedUpgrade(){
     30    a();
     31    if(g.majorVersion >= 5)
     32      return false;
     33    if(g.generationDate == null)
     34      return true;
     35    else
     36      return a(g.generationDate,FREE_UPGRADE_DATE);
     37  }

     38
     39  private boolean a(Date date,Date date1){
     40    long l = date.getTime();
     41    long l1 = date1.getTime();
     42    return l < l1 - 0xa4cb80L;
     43  }

     44
     45  public boolean needsUpgrade(Date date){
     46    if(date == null)
     47      return false;
     48    if(date.before(DEAD_LINE_DATE))
     49      return false;
     50    else
     51      return willNeedUpgrade();
     52  }

     53
     54  public boolean isEvaluationExpired(Date date){
     55    if(date == null)
     56      return false;
     57    if(!willExpire())
     58      return false;
     59    else
     60      //return date.after(g.expirationDate);
     61      return false;
     62  }

     63
     64  public boolean isValid(){
     65    a();
     66    //return b();
     67
     68    return true;
     69  }

     70
     71  private void a(){
     72    if(b())
     73      return;
     74    try{
     75      g = LicenseDecoder.decodeLicenseKey(getUserName(),getKey());
     76    }

     77    catch(InvalidLicenseKeyException invalidlicensekeyexception){}
     78  }

     79
     80  private boolean b(){
     81    return g != null;
     82  }

     83
     84  public boolean willExpire(){
     85    return getExpirationDate() != null;
     86  }

     87
     88  public Date getExpirationDate(){
     89    a();
     90    return g.expirationDate;
     91  }

     92
     93  public boolean isNonCommercial(){
     94    a();
     95    return g.licenseType == 1;
     96  }

     97
     98  public boolean isCommercial(){
     99    a();
    100    return g.licenseType == 0;
    101  }

    102
    103  public boolean isSite(){
    104    a();
    105    return g.licenseType == 2;
    106  }

    107
    108  public boolean isOpenSource(){
    109    a();
    110    return g.licenseType == 3;
    111  }

    112
    113  public boolean isYearAcademic(){
    114    a();
    115    return g.licenseType == 5;
    116  }

    117
    118  public boolean shouldDetectDuplicates(){
    119    return!isSite() && !willExpire();
    120  }

    121
    122  public Date getUpgradeDeadline(){
    123    return DEAD_LINE_DATE;
    124  }

    125
    126  public boolean isPersonal(){
    127    a();
    128    return g.licenseType == 4;
    129  }

    130
    131  public Date getGenerationDate(){
    132    a();
    133    return g.generationDate;
    134  }

    135
    136  public int getMajorVersion(){
    137    a();
    138    return g.majorVersion;
    139  }

    140
    141  public int getMinorVersion(){
    142    a();
    143    return g.minorVersion;
    144  }

    145
    146  public static LicenseDataImpl create(String s,String s1){
    147    return new LicenseDataImpl(s,s1);
    148  }

    149
    150  public static LicenseDataImpl createFromUser(String s,String s1){
    151    LicenseDataImpl licensedataimpl = new LicenseDataImpl(s,s1);
    152    licensedataimpl.setFromUser(true);
    153    licensedataimpl.setAccepted(false);
    154    return licensedataimpl;
    155  }

    156a
    157  public static LicenseDataImpl create(String s,String s1,long l){
    158    return new LicenseDataImpl(s,s1,l);
    159  }

    160
    161  public static final int CURRENT_MAJOR_VERSION = 5;
    162  public static final int CURRENT_MINOR_VERSION = 0;
    163  public static final Date DEAD_LINE_DATE = makeDate(2005,8,1);
    164  public static final Date FREE_UPGRADE_DATE = makeDate(2005,4,1);
    165  private static final long f = 0xa4cb80L;
    166  public static final String IDEA_VERSION = "IntelliJ IDEA 5";
    167  private LicenseInfo g;
    168}

    169


    順便說一句,對于Alloy來說,IDEA基本沒有做混淆(可能是公共方法太多的原因),因此反編譯后源代碼的可讀性很好,而且反編譯后的源代碼基本可以正確編譯。
    見第60行和66行,原先是調用了兩個方法進行驗證。根據方法名推測isEvaluationExpired()應該是校驗評估序列號是否到期,isValid()則是驗證授權的合法性,這樣只要直接使用boolean常量繞開檢查就行了(第61行和68行)。這樣修改后重新編譯生成新的LicenseDataImpl.class,放回jar包覆蓋原先的class文件就行了。
    最后是驗證。我在我的機器上將時間調到2006年8月,啟動IDEA,雖然界面仍顯示“Expiration date: September, 1, 2005”,但是IDE依然正常工作,破解成功
    補充一句,在驗證時需要了解操作系統中的其它軟件是否對系統時間更改有保護性措施。像在我的機器上將時間調后1年后,卡巴斯基就過期了,將時間調回來后卡巴斯基被鎖死,保持過期狀態,最后只能重裝。所以大家在調系統時間的時候可要考慮周到啊。

    posted on 2005-08-05 19:11 ^ Mustang ^ 閱讀(6161) 評論(13)  編輯  收藏 所屬分類: 破解

    FeedBack:
    # re: IDEA破解過程
    2005-08-05 19:38 | Cinderella
    總是 子夜 編程 代碼與我同在
    會老得很快的
    身體才是革命的本錢  回復  更多評論
      
    # re: IDEA破解過程
    2005-08-05 19:44 | ^ Mustang ^
    我白天睡到很晚啊:)嘿嘿  回復  更多評論
      
    # re: IDEA破解過程
    2005-08-05 19:52 | Cinderella
    那可羨慕ing,竟然不用上班  回復  更多評論
      
    # re: IDEA破解過程
    2005-08-05 20:14 | ^ Mustang ^
    還在讀書:)  回復  更多評論
      
    # re: IDEA破解過程
    2005-08-05 21:11 | anders0913
    不錯,不過有注冊機的說。  回復  更多評論
      
    # re: IDEA破解過程
    2005-08-06 22:30 | 呆呆向前沖的blog
    注冊機在哪?
    給個地址。
    或者 ^ Mustang ^ 兄可不可以做個補丁啊。^_^
      回復  更多評論
      
    # re: IDEA破解過程
    2005-08-06 22:47 | ^ Mustang ^
    我這兒有破解了的class文件(jar太大了,38M),誰要的留個email,我發過去。  回復  更多評論
      
    # re: IDEA破解過程
    2005-08-13 16:09 | 水尤寒
    ^ Mustang ^ 給個破解的CLASS文件
    謝謝了
    我EMAIL:lpp333444@yahoo.com.cn  回復  更多評論
      
    # re: IDEA破解過程
    2005-08-14 02:08 | kkkjjjxxx
    不用這么煩,用idea4.5x版的注冊機就行。  回復  更多評論
      
    # re: IDEA破解過程
    2005-08-22 01:25 | 李超群
    能不能把破解后的class給我呀?另外我想問一下,就是破解后的java文件怎樣再用javac指令編譯,我的會提示找不到所依賴的包。謝謝。
    achilles.lee@gmail.com  回復  更多評論
      
    # re: IDEA破解過程
    2005-11-03 12:02 | 阿里巴巴
    破解了的class文件

    給我也發一個吧

    謝謝了!

    我的email: albb_2223@163.com  回復  更多評論
      
    # re: IDEA破解過程
    2006-11-07 17:19 | CCT
    破解了的class文件
    給我也發一個吧
    謝謝了!

    我的email: s9027059@gmail.com  回復  更多評論
      
    # re: IDEA破解過程
    2007-01-17 17:58 | huhaitao
    破解了的class文件
    給我也發一個吧
    謝謝了!

    email:huhaitao1231@gmail.com  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。

    網站導航:
     
    主站蜘蛛池模板: 4hu四虎最新免费地址| 亚洲第一福利视频| 免费h片在线观看网址最新| 一级看片免费视频囗交| 亚洲欧美日韩国产成人| 亚洲午夜视频在线观看| 亚洲综合最新无码专区| 国产精品免费看久久久无码| 91频在线观看免费大全| 国产一精品一av一免费爽爽 | 最新黄色免费网站| 国产一级a毛一级a看免费人娇| 精品国产亚洲一区二区三区在线观看| 亚洲精品亚洲人成在线麻豆| 亚洲精品无码不卡在线播放HE| 亚洲精品色婷婷在线影院| 国产成人精品123区免费视频| 成年私人影院免费视频网站| 一边摸一边爽一边叫床免费视频| 国产成人亚洲精品91专区高清| 亚洲综合色区中文字幕| 亚洲日本在线播放| 亚洲人成在线影院| 久久久久亚洲精品美女| 国产成人亚洲综合色影视| 区久久AAA片69亚洲| 国产亚洲精品不卡在线| 在线观看亚洲天天一三视| 亚洲国产精品无码久久久久久曰| 成人免费激情视频| 91免费播放人人爽人人快乐| 1000部拍拍拍18勿入免费视频下载 | 亚洲七久久之综合七久久| 国产亚洲精品影视在线| 亚洲一级视频在线观看| 亚洲免费视频观看| 亚洲国产精品一区二区三区在线观看| 中文字幕在线观看亚洲视频| 亚洲性色AV日韩在线观看| 亚洲youwu永久无码精品| 国产精品亚洲专区无码WEB|