- 浏览: 39269 次
- 性别:
- 来自: 北京
文章分类
最新评论
Alloy破解过程
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
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
关键代码处有注释,我就详细讲一下cr()。
由于Alloy的序列号的时间比当前时间晚一年以上也视作invalid,因此我在cr()中动态生成一个序列号,该序列号比当前时间晚一个月,使用bi.a()注入程序中(15行)。
111行到133行是具体的算号过程,可见“128cw93”和“1a1931”其实是两个36进制的数。
第133行把算得的校验值替换118行生成的字符串中的相应位置上的字符串,生成新的序列号。
发表评论
-
在Java中使用Oracle blob
2005-02-13 22:27 773Oracle中的lob (Large Object)可以存储非 ... -
java.util.StringTokenization
2005-02-13 22:29 642今天室友老七做数据库大作业,其中要实现一个功能,就是输入一个以 ... -
JBuilder 2005中的Servlet mapping
2005-02-13 22:30 698使用JB进行Servlet好像很方便的样子,但是servlet ... -
static与final变量
2005-08-04 12:27 744一、illegal forward refrence 前天写一 ... -
使用策略模式(Strategy)实现多关键字排序
2005-08-04 12:37 790“策略模式”的出现,是为了提供一套相互之间可灵活替换的算法, ... -
Alloy
2005-08-04 13:09 655Alloy look and feel(http:// ... -
IDEA
2005-08-04 13:11 923今天在TSS上看到IntelliJ的IDEA 5.0终于rel ... -
原型模式(Prototype)
2005-08-05 10:54 742一、概述 原型模式属于对象创建模式,通过给出一个原型对象来指明 ... -
IDEA破解过程
2005-08-05 19:11 1803开场白就不说了,直接切入正题吧。本破解的前提是安装了IDEA ... -
适配器模式(Adapter)
2005-08-06 19:39 619一、概述 类的适配器模式把被适配的类的API转换成为目标类的A ... -
A beginners guide to Dependency Injection [转载自TSS]
2005-08-08 22:30 816Scope This article presents a h ... -
接口与Object类的关系?
2005-08-19 13:53 1108今天凌晨coding的时候发现一个很有趣的现象。“Object ... -
缺省适配器模式(Default Adapter)
2005-09-06 12:01 778一、概述 当不需要全部实现适配器接口提供的方法时,可先设计一个 ... -
Object Modeling Strategies (I)
2005-09-08 10:12 590Activities and model components ... -
Joshua Bloch咏Tiger诗八首
2005-09-08 16:59 839“Ease of Development”是J2SE 1.5的 ... -
James Gosling
2005-09-14 22:01 770今天是Java China 2005的最后一天,下午没有去各个 ... -
Object Modeling Strategies (II)
2005-09-19 15:23 622Str#1d. "Invest an Hour&qu ... -
Object Modeling Strategies (III)
2005-09-19 15:26 563Identifying system purpose and ... -
Tomcat 5.5.9 不支持switch(<enum>)?
2005-09-19 18:51 810ServiceExceptionType: package p ... -
“软件危机”时总结的坏的编程习惯——我们是否依旧守着古风?
2005-10-09 14:23 7301、乱用GOTO语句(上下跳转看起来非常方便) 2、大量使用 ...
相关推荐
### 逻辑建模工具Alloy用户手册知识点解析 #### 一、引言 逻辑建模工具Alloy是一款专为软件设计而开发的语言及配套分析...通过学习和掌握Alloy,开发者不仅可以提高软件设计的质量,还可以加速软件开发的整个过程。
### 形式化建模Alloy最佳参考书知识点解析 #### 一、Alloy简介与应用 Alloy是一种轻量级的形式化建模语言,它主要用于软件系统的抽象、逻辑表达及分析。通过Alloy,开发者可以清晰地定义系统的行为、状态以及约束...
alloy语言学习资料(英文版) alloy-language-reference.pdf Alloy2Tutorial.pdf 工具(需要安装JDK1.8) alloy4.2.jar alloy例子
alloy.jar 是一个界面类,可以结合java生成类似于XP的图形界面,美观实用!
Alloy是Titanium Mobile SDK的一个核心部分,它是一个基于模型-视图-控制器(MVC)架构的轻量级JavaScript框架,旨在简化iOS、Android和Web应用的开发过程。 Alloy框架的核心特点包括: 1. MVC架构:MVC模式将应用...
形式化方法的小工具一个
本文将深入探讨AUI YUI Alloy2.0的核心特性和使用方法。 首先,AUI(Alloy UI)是基于YUI(Yahoo User Interface Library)的一个扩展,它提供了更多的组件和设计模式,旨在简化和加速Web应用的开发。AUI YUI Alloy...
alloy.jar 是一个界面类,可以结合java生成类似于XP的图形界面,美观实用!
Charge polarization and quantum trapping in AgPd and CuPd bimetallic alloy catalysts,孙长庆,,AgPd and CuPd alloys are important catalysts that perform very differently with physical origins being ...
GMW 15340-2011 Polyolefin Alloy - Talc Filled, High Stiffness,.
Light Alloy是一款支持高清播放的视频播放器,虽然是免费的,但是功能却很强大,支持常见格式 ,内置了解码器,支持更换皮肤等。,几乎支持所有视频格式,也提供多款皮肤应用,是一款潜力巨大的多媒体播放器软件,...
《Unity3D中的Alloy Physical Shader Framework 3.2:打造逼真材质与贴图的艺术》 Unity3D是一款广泛应用于游戏开发、虚拟现实、增强现实等领域的强大引擎,其核心优势之一就是丰富的图形渲染能力。在这款引擎中,...
4. **文档**:可能有 `README.md` 文件,介绍项目背景、安装指南、使用方法等;`API.md` 或者 `docs` 文件夹可能包含详细的技术文档。 5. **资源文件**:如 `assets` 文件夹,可能包含图片、字体、音频等资源。 ...
Alloy是用于的MVC应用程序框架。 可以在以下位置找到更多高级详细信息: : 入门 涵盖了从安装到使用Alloy创建第一个应用程序的所有内容。 完整集合 在实践中显示合金各个方面。 安装 来自npm: # install the ...
本文将详细解析Alloy_Liferay的核心概念、主要特点以及使用方法,同时涵盖其提供的使用文档,帮助开发者更好地理解和应用这个框架。 首先,让我们来了解一下YUI。YUI是Yahoo开发的一套开源JavaScript库,它提供了...
GMW 16826-2013 Polyolefin Alloy - 1700 MPa Flexural.pdf
采用相场方法,计算合金中枝晶生长,标记为相场模型C_alloy。
Swing 主题包 Alloy。使用方法请见http://blog.csdn.net/levelmini/article/details/25063401中的invokeApp()或自行百度