目标:完美卸载7.00版破解
工具:trw2000 , pw32dasm8.93
破文作者:zwlzwl(信箱:tsgmx@21cn.com)
软件主要功能简介:本软件主要两大功能,
一是安装/卸载软件,可以做到软件安装卸载无垃圾;
二是电脑垃圾清理,可以清理数十种垃圾保持系统清洁。
本软件包含三个执行文件:SetupMonitor.exe 软件安装监视器;SoftUninstall.exe 软件卸载工具;WjfClean.exe 垃圾清理工具。
未注册用户将可以卸载60个软件和100次垃圾清理。
安装好程序后启动软件卸载工具(SoftUninstall.exe),点“关于”按钮:有关本软件的版权说明,注册用户可以从此处输入注册码进行注册。
我输入了
name: zwlzwl
code: 11111-22222-33333-44444-1
(第5个注册栏即最后的一个注册栏填入的数字这里一定不能大于200,否则出错,后面我们会在程序里说明)
点注册,提示注册码错误或一码多用
“或一码多用”这句话说明软件注册码是和硬件有关的,是一机一码的。
我们退出程序,运行pw32dasm8.93把SoftUninstall.exe反汇编
从串式参考中我们可看到:“序列号输入错误或试图一码多用”
用鼠标对着这句话双击,来到
* Possible StringData Ref from Data Obj ->"序列号输入错误或试图一码多用!"
|
:00408642 6880064500 push 00450680
:00408647 EB09
jmp 00408652
从这里我们向上看看是哪个关键的跳能跳过这个出错提示
很容易找到下面代码,下面就和我一起来分析这个些代码吧
:00408601 52
push edx
:00408602 E841BA0100 call 00424048
:00408607 83C414
add esp, 00000014
:0040860A 85C0
test eax, eax <-比较最后一个注册栏填入的数字,如小于等于0就跳到出错
:0040860C 7E3B
jle 00408649 <-不能跳,一跳就错
:0040860E 3DC8000000 cmp eax,
000000C8<-比较最后一个注册栏填入的数字,大于200就跳到出错
:00408613 7F34
jg 00408649<-不能跳,一跳就错
:00408615 8B542414 mov
edx, dword ptr [esp+14]
:00408619 8D4C2410 lea
ecx, dword ptr [esp+10]
:0040861D 51
push ecx <-以下几条命令是把我们填入的注册码压入堆,在下面的CALL里比较
:0040861E 50
push eax
:0040861F 52
push edx
:00408620 55
push ebp
:00408621 53
push ebx
:00408622 57
push edi
:00408623 E8080B0100 call 00419130
<-比较注册码的呼叫
:00408628 83C418
add esp, 00000018
:0040862B 84C0
test al, al <-上面的CALL的出口参数,如注册码正确那么al不等于0
:0040862D 6A30
push 00000030
:0040862F 740C
je 0040863D <-如al等于0就跳到出错提示
* Possible StringData Ref from Data Obj ->"注册成功"
|
:00408631 6888074500 push 00450788
* Possible StringData Ref from Data Obj ->"感谢您的支持与厚爱,在您的支持下我会开发出更好?
->"娜砑?
如软件变动造成您的注册码不能注册,您"
->"可以凭您的姓名、申请码、详细资料来免费升级本软"
->"件!
软件自动升级功能:只需下载最新版本,软件"
->"自动识别注册信息!
请新启动本软件!"
|
:00408636 68A8064500 push 004506A8
:0040863B EB15
jmp 00408652
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040862F(C)
|
* Possible StringData Ref from Data Obj ->"错误"
|
:0040863D 68A0064500 push 004506A0
* Possible StringData Ref from Data Obj ->"序列号输入错误或试图一码多用!"
|
:00408642 6880064500 push 00450680
:00408647 EB09
jmp 00408652
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040860C(C), :00408613(C)
|
:00408649 6A00
push 00000000
:0040864B 6A00
push 00000000
* Possible StringData Ref from Data Obj ->"序列号输入错误!"
|
:0040864D 6870064500 push 00450670
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040863B(U), :00408647(U)
|
:00408652 8BCE
mov ecx, esi
:00408654 E83ACF0200 call 00435593
:00408659 8D4C2410 lea
ecx, dword ptr [esp+10]
:0040865D C78424C0000000FFFFFFFF mov dword ptr [esp+000000C0], FFFFFFFF
:00408668 E82CEB0200 call 00437199
从上面知道比较注册码是在00408623 E8080B0100
call 00419130 里面
所以我们进入这个CALL看看
来到下面的关键比较跳跃中
请大家跟我一起来分析程序检测注册码的核心
:0041B810 C7054043450034090000 mov dword ptr [00454340], 00000934
:0041B81A C7050C404500FD430000 mov dword ptr [0045400C], 000043FD
:0041B824 C705D83C4500C8000000 mov dword ptr [00453CD8], 000000C8
:0041B82E E8EDD2FFFF call 00418B20
:0041B833 8B8424C4020000 mov eax, dword ptr
[esp+000002C4]
:0041B83A 8B8C24B4020000 mov ecx, dword ptr
[esp+000002B4]<-把第一个注册栏的值送到ECX(我的为10进制的11111)
:0041B841 8B6C242C mov
ebp, dword ptr [esp+2C]<-把第一个硬件号的值送到EBP(我的为10进制的1999,每台机都不同的)
:0041B845 83C410
add esp, 00000010
:0041B848 8B148588464500 mov edx, dword ptr
[4*eax+00454688]<-取出根据硬件号算出的代码下面用到的比较值(我的为十进制的10735)
:0041B84F 2BCD
sub ecx, ebp <-把我们输入的第一个注册码减去第一硬件号并送会给ECX
:0041B851 3BD1
cmp edx, ecx <-比较 上面取出的和硬件有关的EDX值,和上面相减后得到的代码
:0041B853 0F851B020000 jne 0041BA74
<-不相等就跳到错误的代码里面去。
从上面分析我们可得到第一个注册码只需要等于(edx+ebp)就正确了
我的第一个注册码为:(10735+1999)=12734
下面是第二个注册码到第四个注册码的计算过程,大致上和上面第一个的差不多我就不再写了
:0041B859 8B9424A8020000 mov edx, dword ptr
[esp+000002A8]
:0041B860 8B742418 mov
esi, dword ptr [esp+18]
:0041B864 8B0C8554434500 mov ecx, dword ptr
[4*eax+00454354]
:0041B86B 2BD6
sub edx, esi
:0041B86D 3BCA
cmp ecx, edx<--第二个注册码比较核心
:0041B86F 0F85FF010000 jne 0041BA74
:0041B875 8B8C24AC020000 mov ecx, dword ptr
[esp+000002AC]
:0041B87C 8B742410 mov
esi, dword ptr [esp+10]
:0041B880 8B148520404500 mov edx, dword ptr
[4*eax+00454020]
:0041B887 2BCE
sub ecx, esi
:0041B889 3BD1
cmp edx, ecx
:0041B88B 0F85E3010000 jne 0041BA74<--第三个注册码比较核心
:0041B891 8B9424B0020000 mov edx, dword ptr
[esp+000002B0]
:0041B898 8B742414 mov
esi, dword ptr [esp+14]
:0041B89C 8B0C85EC3C4500 mov ecx, dword ptr
[4*eax+00453CEC]
:0041B8A3 2BD6
sub edx, esi
:0041B8A5 3BCA
cmp ecx, edx<--第四个注册码比较核心
:0041B8A7 0F85C7010000 jne 0041BA74
:0041B8AD 8B8424B8020000 mov eax, dword ptr
[esp+000002B8]
:0041B8B4 83C9FF
or ecx, FFFFFFFF
:0041B8B7 8D542420 lea
edx, dword ptr [esp+20]
:0041B8BB B363
mov bl, 63
:0041B8BD 8B38
mov edi, dword ptr [eax]
:0041B8BF 33C0
xor eax, eax
:0041B8C1 F2
repnz
:0041B8C2 AE
scasb
:0041B8C3 F7D1
not ecx
:0041B8C5 2BF9
sub edi, ecx
我的申请注册码为:4461/1996/622/48353(这个是要象作者报告的号码)
经过以上分析我们可找到正确的注册码了
我的为
name: zwlzwl(姓名名可任意填)
code: 12734-12753-37318-17657-1(这个注册码只有我的机器好用的,每台机器不同的,请大家不要使用)
欢迎大家来信和我交流,转载请保持完整。
我的信箱:tsgmx@21cn.com
- 标 题:完美卸载7.00版破解 (7千字)
- 作 者:zwlzwl
- 时 间:2002-3-18 17:07:14
- 链 接:http://bbs.pediy.com