前幾天得到一個用JAVA編寫的壓縮軟件iavaZip
用了
軟件的注冊碼
一
要破解JAVA軟件
其中
這三個軟件各有優缺點
目錄編譯
二
在分析iavaZIP
com
可以知道
我用
main方法的全部代碼如下
public static void main(String args[])
{
iavaZIP
if(iavazip
{
System
for(_cls
{
try
{
Thread
}
catch(InterruptedException _ex) { }
}
if(_cls
{
iavazip
iavazip
iavazip
} else
{
iavazip
System
}
}
iavazip
}
很明顯
由於isExpired()的方法的代碼如下
public boolean isExpired()
{
return !_cls
}
看了com\sfs\app\iavazip20的所有文件,由於該文件夾中的文件都是從1-66之間的整數問文件名,“class”為擴展名的類文件,分析“!_cls66.isSerialRegcode”的方法是破解的關鍵類應該就是66.class文件
。Tw.wINgwiT.cOm試圖用iavaj反編譯該文件,居然不能反編譯得到。改用JAD命令
“ jad -p 66.class >
public class _cls
{
public _cls
{
}
public static boolean isSerialRegcode(String s)
{
if(s == null)
return false;
boolean flag = true;
if(s
flag = false;
if(flag)
{
long l = Integer
if(l ==
flag = false;
if(flag)
{
flag = false;
for(int i =
if(_fld0[i * 2] <= l && _fld0[i * 2 + 1] >= l)
flag = true;
}
}
return flag;
}
private static long _fld0[];
private static final long _fld1 = 10L;
static
{
_fld0 = new long[20];
_fld0[0] = 0xd3f3471L;
_fld0[1] = 0xd3f34d4L;
_fld0[2] = 0x1653939L;
_fld0[3] = 0x165399cL;
_fld0[4] = 0x313abcc9L;
_fld0[5] = 0x313abd2cL;
_fld0[6] = 0x320aa371L;
_fld0[7] = 0x320aa3d4L;
_fld0[8] = 0x11761f91L;
_fld0[9] = 0x11761ff4L;
_fld0[10] = 0xd52b0b9L;
_fld0[11] = 0xd52b11cL;
_fld0[12] = 0x391d5681L;
_fld0[13] = 0x391d56e4L;
_fld0[14] = 0x196c9351L;
_fld0[15] = 0x196c93b4L;
_fld0[16] = 0x185a2d39L;
_fld0[17] = 0x185a2d9cL;
_fld0[18] = 0xc0053a1L;
_fld0[19] = 0xc005404L;
}
}
代碼if(s.length() != 9),表明sn的長度必須是九位。
代碼 long l = Integer.parseInt(s);
if(l == -1L)
表明sn必須是數字,而且是九位數字。
代碼:for(int i = 0; (long)i <= 9L; i++)
if(_fld0[i * 2] <= l && _fld0[i * 2 + 1] >= l)
flag = true;
表明,sn必須是小於—fld0[]數組中相鄰數組的值,sn共有10組。
我們注意到
_fld0[0] = 0xd3f3471L;
_fld0[1] = 0xd3f34d4L;
用計算器計算_fld0[0]和_fld0[1]的十進制,得到
_fld0[0]=22246001
_fld0[1]=22246100
也就是你把SN輸入為22246001 - 22246100 中的任何一個數字都是合法的序列號。
4。經驗總結
1。要選擇不同的工具進行反編譯,
2。破解軟件的目的是為了學習軟件編寫的思想和方法以及個人使用,而不是用於達到商業目的。
3。有好的見解和方法可以和我聯系
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19278.html