• 标 题:Add Remove Plus! 2000 v2.0破解手记 附:Windows 优化大师 3.3的破解方法 (4千字)
  • 作 者:TAE!
  • 时 间:2001-2-2 14:11:08
  • 链 接:http://bbs.pediy.com

Add Remove Plus! 2000 v2.0破解手记 附:Windows 优化大师 3.3的破解方法
目标软件:Add Remove Plus! 2000 v2.0
破 解 人:TAE!
保护机制:Nag窗口
破解方法:暴力破解
下载地址:http://www.aurelitec.com/ 
 

  先运行程序,出现了一个类似Vbox的Nag,着实吓了我一跳.心想:一个几百K的软件
也用Vbox封装?
  用FileInfo检测发现是一个delphi程序,顿时松了口气.
  用Trw加载程序.
 
:0046B440 55                      push ebp

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0046B3F9(C)
|
:0046B441 8BEC                    mov ebp, esp
:0046B443 83C4F4                  add esp, FFFFFFF4
:0046B446 B818B24600              mov eax, 0046B218
:0046B44B E8A8ADF9FF              call 004061F8

* Possible StringData Ref from Code Obj ->"INSTALL.DA2"
                                  |
:0046B450 B9B8B44600              mov ecx, 0046B4B8

* Possible StringData Ref from Code Obj ->"INSTALL.DA1"
                                  |
:0046B455 BACCB44600              mov edx, 0046B4CC

* Possible StringData Ref from Code Obj ->"INSTALL.DA0"
                                  |
:0046B45A B8E0B44600              mov eax, 0046B4E0
:0046B45F E83C90FFFF              call 004644A0    //这句运行后便出现Nag
:0046B464 84C0                    test al, al      //选择 "Try"后回到了这里
:0046B466 7441                    je 0046B4A9      //此时不跳转;若选了Quit,这里便会跳走
:0046B468 A160D04600              mov eax, dword ptr [0046D060]
:0046B46D 8B00                    mov eax, dword ptr [eax]
:0046B46F E81409FEFF              call 0044BD88
:0046B474 A160D04600              mov eax, dword ptr [0046D060]
:0046B479 8B00                    mov eax, dword ptr [eax]

* Possible StringData Ref from Code Obj ->"Add/Remove Plus! 2000"

既然知道了产生Nag的call,那我就用 tKC常用的Return大法来超度它!
进入那个产生Nag的call,便到了这里:
* Referenced by a CALL at Address:
|:0046B45F 
|
:004644A0 55                      push ebp  //就在这一行做做手脚吧
:004644A1 8BEC                    mov ebp, esp
:004644A3 83C4E0                  add esp, FFFFFFE0
:004644A6 53                      push ebx
:004644A7 56                      push esi
:004644A8 57                      push edi
:004644A9 33DB                    xor ebx, ebx
:004644AB 895DF0                  mov dword ptr [ebp-10], ebx
:004644AE 895DF8                  mov dword ptr [ebp-08], ebx
:004644B1 8BD8                    mov ebx, eax
:004644B3 33C0                    xor eax, eax
:004644B5 55                      push ebp
:004644B6 68EA464600              push 004646EA
:004644BB 64FF30                  push dword ptr fs:[eax]
:004644BE 648920                  mov dword ptr fs:[eax], esp
:004644C1 C645FF00                mov [ebp-01], 00
:004644C5 33C0                    xor eax, eax
:004644C7 55                      push ebp
:004644C8 68AF464600              push 004646AF
:004644CD 64FF30                  push dword ptr fs:[eax]
:004644D0 648920                  mov dword ptr fs:[eax], esp
:004644D3 8D55F0                  lea edx, dword ptr [ebp-10]
:004644D6 33C0                    xor eax, eax
:004644D8 E8C7E3F9FF              call 004028A4
:004644DD 8B45F0                  mov eax, dword ptr [ebp-10]

在004644A0这行,将55改为C3即Ret
这样程序运行到这里后,就会立即返回调用它的地方,也就是0046B464,程序就不会出现Nag了.
然后再将  0046B466 处的 7441
  改为:                9090
  程序已经被破解啦!
其实 tKC 的这种Ret大法非常适合于以下这种情况:
有许多地方调用这个call.
比如:        00000000:Call 11111111
              00000001:test al,1
             
              11111111:push
              XXXXXXXX: ...
可以改为:     
              00000000:Call 11111111
              00000001:test al,1
             
              11111111:mov al,1
              XXXXXXXX:ret
    这样所有调用这里的地方,返回的al值都是1了!cool吧?
    当然这儿可以充分发挥你的想象力,让我们改的更好!
    已经3点多了,该睡了!


      Windows 优化大师 3.3的破解方法
Aspack 2.11加的壳,先脱壳,都会吧?
然后...

查找:83f8147407bb01000000
改为:      EB   

查找:83f8147423bba1860100
改为:      EB             

成为随意注册版!