分享
 
 
 

反编译、破解JAVA软件的方法、实例与经验

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

前几天得到一个用JAVA编写的压缩软件iavaZip2.0,虽然好用可惜是个试用版本,限定的时间一到就不能

用了。能不能把这个软件据为己有呢?本人试图破解它,在不到半个小时的时间里,成功破解了这个JAVA

软件的注册码,下面现把这个破解的方法和过程向大家做个详细的介绍。

一.破解工具准备

要破解JAVA软件,必须要反编译用JAVA编写的类文件。由于网上大虾们的支持,许多反编译软件被研制出来

其中,我经常使用的是:

1. cavaj Java Decompile 1.11

2.Java源代码反编译专家(该软件支持目录编译)

3.JAD

这三个软件各有优缺点:前二个软件是GUI界面,使用起来很方便。尤其是"Java源代码反编译专家",支持

目录编译,用起来很得心应手;第三个软件JAD功能最强,由于是字符界面,但是相对初学者比较难一点。

二.破解步骤

1.首先分析批处理文件,找到第一个调用的CLASS。

在分析iavaZIP20软件的iavaZIP2.bat,我把最重要的一句COPY到下行:

com.sfs.app.iavazip20.iavaZIP20 %1 %2 %3 %4 %5 %6 %7 %8 %9

可以知道,在com\sfs\app\iavazip20的目录下的iavaZIP20.CLASS就是被调用的第一个CLASS.

2.反编译第一个CLASS,分析MAIN方法,寻找版本控制的代码段

我用“cavaj Java Decompile 1.11”编译iavaZIP20.class文件,很快就可以得到该软件的JAVA代码,

main方法的全部代码如下:

public static void main(String args[])

{

iavaZIP20 iavazip20 = new iavaZIP20(args);

if(iavazip20.isExpired())

{

System.out.println("iavaZIP20 trial time has expired. Please purchase and enter licence key.");

for(_cls13 _lcls13 = new _cls13(iavazip20, true); _lcls13.expirationFrame.isShowing();)

{

try

{

Thread.sleep(1000L);

}

catch(InterruptedException _ex) { }

}

if(_cls66.isSerialRegcode(((_cls1) (iavazip20)).res.getProperty("user.id")))

{

iavazip20._fld6.remove(iavazip20._fld4);

iavazip20._fld6.add("Right", iavazip20._fld4 = iavazip20._fld0 = new _cls13(iavazip20));

iavazip20._fld6.validate();

} else

{

iavazip20.dispose();

System.exit(0);

}

}

iavazip20.show();

}

很明显,iavazip20.isExpired()就是版本控制的代码。

3.分析版本控制的语句,找到破解的方法

由于isExpired()的方法的代码如下:

public boolean isExpired()

{

return !_cls66.isSerialRegcode(super.res.getProperty("user.id", "0")) && Long.parseLong(super.res.getProperty("magic")) + magicTime

}

看了com\sfs\app\iavazip20的所有文件,由于该文件夹中的文件都是从1-66之间的整数问文件名,“class”为扩展名的类文件,分析“!_cls66.isSerialRegcode”的方法是破解的关键类应该就是66.class文件

。试图用iavaj反编译该文件,居然不能反编译得到。改用JAD命令

“ jad -p 66.class 66.java”,得到部分编译后代码,摘录如下:

public class _cls66

{

public _cls66()

{

}

public static boolean isSerialRegcode(String s)

{

if(s == null)

return false;

boolean flag = true;

if(s.length() != 9)

flag = false;

if(flag)

{

long l = Integer.parseInt(s);

if(l == -1L)

flag = false;

if(flag)

{

flag = false;

for(int i = 0; (long)i

if(_fld0[i * 2] = 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

if(_fld0[i * 2] = 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。有好的见解和方法可以和我联系

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有