<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

     

      1package com.incors.plaf.alloy;
      2
      3import java.io.*;
      4import java.util.GregorianCalendar;
      5import java.util.zip.CRC32;
      6import java.util.*;
      7
      8public class ch{
      9  public ch(){
     10  }

     11
     12  private static void a(){
     13    if(a)
     14      return;
     15    bi.a("alloy.licenseCode",cr()); // feed serial automatically
     16    String s=bi.a("alloy.licenseCode");
     17    if(s == null)
     18      try{
     19        InputStream inputstream=(com.incors.plaf.alloy.ch.class).getClassLoader().
     20                                getResourceAsStream("alloylnf.lic");
     21        if(inputstream != null){
     22          InputStreamReader inputstreamreader=new InputStreamReader(inputstream,
     23                                              "ISO-8859-1");
     24          BufferedReader bufferedreader=new BufferedReader(inputstreamreader);
     25          s=bufferedreader.readLine();
     26          System.out.println(s);
     27          bi.a("alloy.licenseCode",s);
     28          bufferedreader.close();
     29          inputstream.close();
     30        }

     31      }

     32      catch(Exception exception){}
     33    if(s != null){
     34      int l=s.indexOf('#');
     35      int i1=s.indexOf('#',l + 1);
     36      int j1=s.indexOf('#',i1 + 1);
     37      f=s.substring(0,l);
     38      if(f.length() > 1)
     39        j=a(f);
     40      e=s.substring(l + 1,i1);
     41      d=s.substring(0,i1);
     42      g=Long.parseLong(s.substring(i1 + 1,j1),36);
     43      h=Long.parseLong(s.substring(j1 + 1),36);
     44      b();
     45    }

     46    a=true;
     47  }

     48
     49  private static void b(){
     50    i.update((h % 127L + d).getBytes());
     51    if(i.getValue() != g){
     52      b=false;
     53      return;
     54    }

     55    if(j != null && (new GregorianCalendar()).after(j))// 試用號過期
     56      b=false;
     57      return;
     58    }

     59    b=true;
     60    if(j != null && (new GregorianCalendar()).after(new GregorianCalendar(2003,7,12)))// 如果使用期大于1年
     61      GregorianCalendar gregoriancalendar=new GregorianCalendar();
     62      gregoriancalendar.add(1,1);
     63      if(j.after(gregoriancalendar)){
     64        c=false;
     65        return;
     66      }

     67    }

     68    c=true;
     69  }

     70
     71  private static GregorianCalendar a(String s){
     72    int l=Integer.parseInt(s.substring(0,4));
     73    int i1=Integer.parseInt(s.substring(5,7));
     74    int j1=Integer.parseInt(s.substring(8,10));
     75    return new GregorianCalendar(l,i1 - 1,j1 + 1);
     76  }

     77
     78  public static boolean c(){
     79    if(!a)
     80      a();
     81    return bi.a("alloy.licenseCode"!= null;
     82  }

     83
     84  public static boolean d(){
     85    if(!a)
     86      a();
     87    return b;
     88  }

     89
     90  public static boolean e(){
     91    if(!a)
     92      a();
     93    return c;
     94  }

     95
     96  private static boolean a=false;
     97  private static boolean b=false;
     98  private static boolean c=false;
     99  private static String d;
    100  public static String e;
    101  public static String f;
    102  public static long g=0L;
    103  public static long h=0L;
    104  private static CRC32 i=new CRC32();
    105  public static GregorianCalendar j;
    106
    107  private static String cr()// 自動生成序列號,比當前時間晚一個月
    108    Calendar cal=new GregorianCalendar();
    109    cal.add(cal.MONTH,1);
    110
    111    String s="";
    112    int year=cal.get(cal.YEAR);
    113    int month=cal.get(cal.MONTH);
    114    int day=cal.get(cal.DAY_OF_MONTH);
    115
    116    s+=year + "/" + (month < 10 ? "0" + month : month) + "/" + (day < 10 ? "0" + day
    117        : day);
    118    s+="#oop@vip.163.com#128cw93#1a193l";
    119
    120    int l=s.indexOf('#');
    121    int i1=s.indexOf('#',l + 1);
    122    int j1=s.indexOf('#',i1 + 1);
    123
    124    String e=s.substring(l + 1,i1);
    125    String d=s.substring(0,i1);
    126    String sg=s.substring(i1 + 1,j1);
    127    Long g=Long.parseLong(sg,36);
    128    Long h=Long.parseLong(s.substring(j1 + 1),36);
    129
    130    CRC32 crc=new CRC32();
    131    crc.update((h % 127L + d).getBytes());
    132    Long ii=crc.getValue();
    133    StringBuffer sn=new StringBuffer(s).replace(i1 + 1,j1,Long.toString(ii,36));
    134    return sn.toString();
    135  }

    136}

    137

    關(guān)鍵代碼處有注釋,我就詳細講一下cr()。
    由于Alloy的序列號的時間比當前時間晚一年以上也視作invalid,因此我在cr()中動態(tài)生成一個序列號,該序列號比當前時間晚一個月,使用bi.a()注入程序中(15行)。
    111行到133行是具體的算號過程,可見“128cw93”和“1a1931”其實是兩個36進制的數(shù)。
    第133行把算得的校驗值替換118行生成的字符串中的相應(yīng)位置上的字符串,生成新的序列號。
    posted on 2005-08-09 15:42 ^ Mustang ^ 閱讀(1312) 評論(2)  編輯  收藏 所屬分類: 破解

    FeedBack:
    # re: Alloy破解過程
    2005-08-10 17:07 | fastpace
    這樣破解好像不完全,看看這張圖:
    http://blog.csdn.net/images/blog_csdn_net/fastpace/140339/r_alloy00-11.gif
    后面的滾動條顏色丟失(安上面破解過的)  回復(fù)  更多評論
      
    # re: Alloy破解過程
    2005-08-10 19:57 | ^ Mustang ^
    的確有這個問題,但現(xiàn)在還沒找到原因:)  回復(fù)  更多評論
      

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

    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲国产成人精品91久久久| 亚洲熟妇AV日韩熟妇在线| 在线免费观看色片| 亚洲va无码va在线va天堂| 国产精品va无码免费麻豆| 1000部羞羞禁止免费观看视频| 一个人看的免费观看日本视频www| 亚洲一区中文字幕| 亚洲国产人成在线观看69网站 | 德国女人一级毛片免费| 95老司机免费福利| 成全视频在线观看免费| 国产一级a毛一级a看免费人娇| 最新亚洲人成无码网站| 亚洲午夜精品久久久久久app| 亚洲黄网在线观看| 一级黄色毛片免费看| 亚洲欧洲日韩极速播放| 亚洲成a人片毛片在线| 久久久无码精品亚洲日韩蜜桃 | 久久精品国产亚洲av品善| 亚洲一区精彩视频| 亚洲手机中文字幕| 亚洲色图校园春色| 91久久亚洲国产成人精品性色| 亚洲国产精品va在线播放| 在线日韩日本国产亚洲| 亚洲午夜久久久影院| 亚洲综合另类小说色区| 亚洲一区无码精品色| 亚洲午夜无码AV毛片久久| 亚洲国产精品尤物yw在线 | 国产真人无码作爱免费视频 | 国产亚洲精品一品区99热| 在线看片免费不卡人成视频| 最近免费中文字幕大全免费| 69免费视频大片| 在线视频观看免费视频18| 最近中文字幕免费mv视频8| 香蕉视频在线观看免费国产婷婷| 成人免费无码大片A毛片抽搐色欲 成人免费无码大片a毛片 |