软件名称:winrar 2.71
软件说明: 著名的windows平台压缩工具
软件大小:589 KB
下载地址:ftp://zdftp.zdnet.com/pub/private/sWlIB/utilities/file_utilities/winrar.exe
我个人认为winrar比winzip好用,打开一个压缩包时,里面的目录结构一目了然;而且选extract to进行解压时,路径默认为压缩包的文件名,所以一般不用自己输入路径。保护方法为keyfile保护。2.71版有40天的时间限制,主窗体标题中有(evaluation
copy)字样,about框中有40 days trial copy的字样,老是出现注册对话框要你注册。该版本的保护非常弱,破解非常简单,在此给出一种方法(肯定有更多的破解方法,但我的目的是能用就行,懒得想太多)。
用w32dasm调入winrar.exe,用search菜单中的find text项找evaluation copy,只找到一处,就是下面这一段
:0041BA0D E8820B0400 call
0045C594
:0041BA12 83C40C
add esp, 0000000C
:0041BA15 803DCC6C460000 cmp byte ptr [00466CCC],
00 ;注意
:0041BA1C 752E
jne 0041BA4C
* Possible Reference to String Resource ID=00873: "evaluation copy"
|
:0041BA1E 6869030000 push
00000369
:0041BA23 E894C6FEFF call
004080BC
:0041BA28 50
push eax
关闭w32dasm,打开trw2000,装入winrar.exe,下bpx 41ba15,g,trw很快弹出。看看[466ccc]的值是多少...答对了,是0。按F10到下一句,让我们输入rfl
z跳过下面对SR id=873(十进制的369): "evaluation copy"的引用,然后g全速运行。程序界面出来了,怎么样,标题中的evaluation
copy字样不见了吧。但about框中还是有40 days trial copy,注册框也还是经常跳出来。不要着急,回想刚才的程序,凭经验几乎可以断定[466ccc]这个全局变量中放的就是注册标志,0代表没有注册,非零代表注册。现在用trw重新装入winrar,bc清中断,然后下bpx
167:466ccc w,看看哪句话修改了[466ccc]的值,g吧。trw弹出时可以看到
426353 e8905d0100 call 43c0e8
426e58 a2cc6c4600 mov [466ccc],al
426e5d 53 push ebx
现在al=0,[466ccc]中已经是0了,把它改为1(下e 466ccc,敲1)。g,trw第二次弹出
41af44 e89f110200 call 43c0e8
41af49 a2cc6c4600 mov [466ccc],al
[466ccc]中又是0,再把它改回1。g,程序界面出来,怎么样,天下太平了吧,about框中的40 day trial copy也变成了register
to。
这两段程序都调用了子程序43c0e8,然后把al赋给466ccc。al怎么变成0的呢?进去看看吧。用trw重新装入winrar,bc清中断,然后下bpx
167:43c0e8,g。trw弹出后按F10往下走,走不多远就看见:
43c11c e8ab030000 call 43c4cc
43c121 84c0 test al,al
43c123 7511 jnz 43c136
; no jump
43c125 33c0 xor eax,eax
; eax清零了
43c127 8b55c8 mov edx,[ebp-38]
43c12a 64891500000000 mov [fs:00],edx
43c131 e950030000 jmp 43c486 ; 跳这么远,估计没戏了吧。
跟到43c486,果然pop几下就返回了。这下该怎么改就清楚了,只需要改两个字节,把43c125的33c0换成b001就行了(mov al,1)。
对于暴破的信心和偏爱来自这样一个假定:9x%的程序都是通过比较来判断使用者的合法性的,可以通过改变比较转移的方向或目的地址来暴破。另外有y%的程序是通过散转的方式确定转移的正确地址,未必不能破解。
下面是我个人对于暴破的一点经验:
1.首先使用程序,看看未注册的程序有哪些表现,如标题、about框中的未注册字样若有未注册字样,就用w32dasm找一找,若找到的语句上面有条件比较可以跳过未注册字样,那离成功就不远了。就像上面的例子。
2.若第一步不行,就看看弹出来的提示框、注册框。如果你能看出这个框是个messagebox,可以下bpx messageboxa。若是一个(非)模态对话框,可以下bpx
createdialog,bpx dialogbox等等。不行就下bpx lockmytask,比较稳。然后关闭注册框,一般trw都会弹出(delphi编的程序除外),按F12直到回到程序的天空,看看是那句话弹出的注册框(一般是messageboxa,或),能不能跳过。若你能找到条件转移语句能跳过注册框,那就差不多了。
3.若还是中断不了,还有一招笨办法,就是用trw装入程序,按F10一步一步从头跟起(当然加壳的要先脱壳)。若带过一个call后弹除了注册框,那就记下位置,下次用F8进入call中再来,如disketer
1.0。经验多了以后就会知道什么编的程序大体是什么结构,怎样做可以提高跟踪效率...
4.不少程序是通过读取系统日期来判断是否过期的,所以下bpx getsystemtime 或bpx getlocaltime,也有可能找到比较的关键点。如Snagit
5.1.0。
5.若程序是用序列号注册的,那就可以与注册号破解相结合。看看程序是怎样判断你输入的注册号的合法性。能找到序列号或算出序列号当然好了,找不到也没关系。程序员都是很懒的(嘘!不要让他们听到),这段程序通常也会放在程序的开头,判断用户的合法性,没注册的就弹出一个注册框给你看。所以这也经常帮助我们找到关键点,去掉开始的注册框,甚至把程序变成注册版。我就是这样破解the
bat 1.51的。
6.还有一招,就是比较一下程序注册前和注册后,在某些关键点的运行有何差别,是跳呢还是不跳。条件是你有一个正确的注册码(废话,有了注册码还用破解吗?否,对于一个狂热的暴破分子来说,最重要的不是注册,而是破解)。当然也可以比较程序过期前后的差别。BugTrapper
3.0.97我就是这样破的,还有Ulead Photo Impact 6.0 trial。不过要小心,有不少程序一旦注册或过期,就很难恢复到原来的状态了。所以一定要看好你的注册表,备份好你的系统,要是有两台计算机供你使用,那就太幸福了。
写了这么多,好累,比破解还累。
- 标 题:winrar2.71的破解和对暴破的一点想法 (4千字)
- 作 者:kingtall
- 时 间:2001-4-16 16:19:05
- 链 接:http://bbs.pediy.com