Mover98 V3.1 暴力破解 + 注册码破解(有实时检验、自校验,还有一个非常捉弄人的地方,小心 :D)
作者:PaulYoung
时间:2001.05.06凌晨
软件简介:是一种搬移软件的工具,你可以利用它将已经安装的软件,从一个磁碟机(资料夹)整个搬动到另外一个磁碟机(资料夹)下,而且还可以正常的执行。连所有和该软件相关的资料夹、捷径、动态连结档等等,通通会一并的搬动。所以在软件搬移之后,不需要修改原来程序集或桌面上的程序捷径,一样还是可以开启软件。在使用方式上,Mover98提供一个精灵,你只要简单的回答几个问题,他就会帮你移动软件。你可以从程序集中选择要移动的软件,也可以直接到磁碟机中指定要搬动的软件资料夹。接下来,你只要指定储存软件的位置,Mover98就会把整个软件通通搬到新的位置下。还可以移动整个windows目录喔!但是Mover98在还没有注册之前,只能让你使用5次而已!
下载:http://www.yadown.com/longfei/patch/pmover9831-f.zip (汉化修改版)
破解工具:TRW 2000 V1.03,HIEW V6.55,W32DASM V8.93
______________________________________________________________________________________________________________
一、暴力篇
Mover98 V3.1 注册方式采用实时校验方式,即只有用户名和注册码完全正确时,注册键才会被激活。不过我这回采用另外一种办法,巧妙地破解了它。
首先反汇编它。在“串式参考”处找到"Thank you for registering Mover98. "(注册成功的信息),双击后往上看:
:0047B27F 53
push ebx
:0047B280 8BD8
mov ebx, eax
:0047B282 33C0
xor eax, eax
:0047B284 55
push ebp
:0047B285 681DB34700 push 0047B31D
:0047B28A 64FF30
push dword ptr fs:[eax]
:0047B28D 648920
mov dword ptr fs:[eax], esp
:0047B290 8D55FC
lea edx, dword ptr [ebp-04]
:0047B293 8B83F8010000 mov eax, dword
ptr [ebx+000001F8]
:0047B299 E8FE61FAFF call 0042149C
:0047B29E 8B45FC
mov eax, dword ptr [ebp-04]
:0047B2A1 50
push eax
:0047B2A2 8D55F8
lea edx, dword ptr [ebp-08]
:0047B2A5 8B83F4010000 mov eax, dword
ptr [ebx+000001F4]
:0047B2AB E8EC61FAFF call 0042149C
:0047B2B0 8B45F8
mov eax, dword ptr [ebp-08]
:0047B2B3 5A
pop edx
:0047B2B4 E8BF42FEFF call 0045F578
//无疑,这一定是验证注册码的了,进入看看(按菜单中有CALL字样的小图标)
:0047B2B9 84C0
test al, al
:0047B2BB 7445
je 0047B302
:0047B2BD 6A00
push 00000000
:0047B2BF 668B0D2CB34700 mov cx, word ptr
[0047B32C]
:0047B2C6 B203
mov dl, 03
* Possible StringData Ref from Code Obj ->"Thank you for registering Mover98.
"
->"Happy moving
..."
**************************************************************************************************************
来到这里...这里肯定是验证注册码的关键了
* Referenced by a CALL at Addresses:
|:0045F6CA , :0047B2B4 , :0047B3A8 //哇噻,共有三处验证注册码耶!
|
:0045F578 55
push ebp
:0045F579 8BEC
mov ebp, esp
:0045F57B 83C4F4
add esp, FFFFFFF4
:0045F57E 53
push ebx
:0045F57F 33C9
xor ecx, ecx
:0045F581 894DF4
mov dword ptr [ebp-0C], ecx
:0045F584 8955F8
mov dword ptr [ebp-08], edx
:0045F587 8945FC
mov dword ptr [ebp-04], eax
:0045F58A 8B45FC
mov eax, dword ptr [ebp-04]
:0045F58D E82248FAFF call 00403DB4
:0045F592 8B45F8
mov eax, dword ptr [ebp-08]
:0045F595 E81A48FAFF call 00403DB4
:0045F59A 33C0
xor eax, eax
:0045F59C 55
push ebp
:0045F59D 6808F64500 push 0045F608
:0045F5A2 64FF30
push dword ptr fs:[eax]
:0045F5A5 648920
mov dword ptr fs:[eax], esp
:0045F5A8 8B45FC
mov eax, dword ptr [ebp-04]
:0045F5AB E85046FAFF call 00403C00
:0045F5B0 83F805
cmp eax, 00000005
:0045F5B3 7C11
jl 0045F5C6
:0045F5B5 8B55FC
mov edx, dword ptr [ebp-04]
:0045F5B8 B820F64500 mov eax,
0045F620
:0045F5BD E8CA48FAFF call 00403E8C
:0045F5C2 85C0
test eax, eax
:0045F5C4 7504
jne 0045F5CA
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0045F5B3(C)
|
:0045F5C6 33DB
xor ebx, ebx
:0045F5C8 EB23
jmp 0045F5ED
______________________________________________________________________________________________________________
现在,可以暴力修改了
:0045F6CA E8A9FEFFFF call 0045F578
//NOP 掉(@Offset0005eacah)
:0047B2B4 E8BF42FEFF call 0045F578
//NOP 掉(@Offset0007a6b4h)
:0047B3A8 E8CB41FEFF call 0045F578
//NOP 掉(@Offset0007a7a8h)
另外,需要说明的是,英文原版是有自校验功能的,但这个汉化修改版已去除了自检验,所以不用理会。
之前曾有位大哥发贴说过一种办法,其实可以有两种办法:
//******************** Program Entry Point ********
.
.
.
:0047DC53 E80843FBFF call 00431F60
:0047DC58 84C0
test al, al
:0047DC5A EB05
jmp 0047DC61 //方法一:英文原版为 jne 0047DC61,改为jmp 0047DC61.
:0047DC5C E86F5BF8FF call 004037D0
//方法二:可以NOP掉此Call (@Offset 7d05c)
经过修改后,随便填一个用户名,注册名有无均可以注册成功了!!YEAH...
**************************************************************************************************************
二、注册码篇
虽然暴力破解成功了,但我又心血来潮想解它的注册码,毕竟注册码方便得多啦。
经检查发现,刚才胡乱填的注册信息存入在C:\WINDOWS\WIN.INI中,格式如下:
[Mover98]
Name=?????
ID=??????
好,动手破了它!先填好假的用户名和注册码。
[Mover98]
Name=Paul Young (注意注意!!!用户名必须不少于5个字节并且必须包含1个空格以上,Why?Come on,let me tell
you!)
ID=78787878
上面我们已经分析过了,0045F6CA,0047B2B4,0047B3A8三处都是验证注册码的,但不知为什么,我只能在0045F6CA处设断,其余两个不行,不过不要紧,破解继续。
由于该软件是在启动时读取WIN.INI的信息来判断你是否为注册用户的,当然是在上面这三处判断啦,所以先用TRW 2000 下bpx 0045f6ca,g,退出,运行Mover98,中断在:0045F6CA
call 0045F578处(D EAX or D EDX 可以发现它你填的用户名和注册码),F8进入,F10单步跟踪...
:0045F578 55
push ebp
:0045F579 8BEC
mov ebp, esp
:0045F57B 83C4F4
add esp, FFFFFFF4
:0045F57E 53
push ebx
:0045F57F 33C9
xor ecx, ecx
:0045F581 894DF4
mov dword ptr [ebp-0C], ecx
:0045F584 8955F8
mov dword ptr [ebp-08], edx
:0045F587 8945FC
mov dword ptr [ebp-04], eax
:0045F58A 8B45FC
mov eax, dword ptr [ebp-04]
:0045F58D E82248FAFF call 00403DB4
:0045F592 8B45F8
mov eax, dword ptr [ebp-08]
:0045F595 E81A48FAFF call 00403DB4
:0045F59A 33C0
xor eax, eax
:0045F59C 55
push ebp
:0045F59D 6808F64500 push 0045F608
:0045F5A2 64FF30
push dword ptr fs:[eax]
:0045F5A5 648920
mov dword ptr fs:[eax], esp
:0045F5A8 8B45FC
mov eax, dword ptr [ebp-04]
:0045F5AB E85046FAFF call 00403C00
//验证用户名
:0045F5B0 83F805
cmp eax, 00000005 //不能小于5位
:0045F5B3 7C11
jl 0045F5C6
:0045F5B5 8B55FC
mov edx, dword ptr [ebp-04]
:0045F5B8 B820F64500 mov eax,
0045F620
:0045F5BD E8CA48FAFF call 00403E8C
//D EDX =用户名,D EAX= (空格!!!)
:0045F5C2 85C0
test eax, eax
:0045F5C4 7504
jne 0045F5CA //用户名不包含空格则跳(没有空格时显示no jump,有空格则jump)
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0045F5B3(C)
|
:0045F5C6 33DB
xor ebx, ebx //没有空格跳到此玩完
:0045F5C8 EB23
jmp 0045F5ED
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0045F5C4(C)
|
:0045F5CA 8B45FC
mov eax, dword ptr [ebp-04]
:0045F5CD E85AFFFFFF call 0045F52C
:0045F5D2 8D55F4
lea edx, dword ptr [ebp-0C]
:0045F5D5 E81A81FAFF call 004076F4
:0045F5DA 8B45F4
mov eax, dword ptr [ebp-0C] //D EAX=真注册码(下面几处也可以)
:0045F5DD 8B55F8
mov edx, dword ptr [ebp-08]
:0045F5E0 E82B47FAFF call 00403D10
:0045F5E5 7504
jne 0045F5EB
:0045F5E7 B301
mov bl, 01
:0045F5E9 EB02
jmp 0045F5ED
看来,做一名 Cracker 有时真需要比女孩子更细心才行呀!!!!!
______________________________________________________________________________________________________________
欢迎光临我的网络小屋
"Cracker 初体验"
http://paulyoung.yeah.net