完美解除安裝 V7.0

看雪資料發表於2002-12-11

目標軟體:  完美解除安裝 V7.0

軟體簡介:
 軟體共有3個小程式,分別是:磁碟垃圾清理軟體、軟體安裝監視器、軟體解除安裝工具,是一套功能比較強大的安裝/解除安裝/清理工具,新版更加全面的系統監視,讓軟體安裝的一舉一動歷歷在目,二次清理技術,軟體解除安裝後將不留任何垃圾,磁碟垃圾清理的數量更多,軟體執行更加穩定。註冊費為20元人名幣。

使用工具:  W32Dasm中文版(GOLD)、TRW2000 v1.22。

破解過程:

W32Dasm中文版(GOLD) 反彙編,串式參考:"序列號輸入錯誤!"

:00408602 E841BA0100              call 00424048       <===獲得你輸入的序列號。
:00408607 83C414                  add esp, 00000014  
:0040860A 85C0                    test eax, eax       <====測試eax.
:0040860C 7E3B                    jle 00408649        <====沒輸或不是數字則跳向出錯點A.
:0040860E 3DC8000000              cmp eax, 000000C8   <====序列號的第5組數字和C8h比較.(5)
:00408613 7F34                    jg 00408649         <====否則跳向出錯點A.
:00408615 8B542414                mov edx, dword ptr [esp+14]
:00408619 8D4C2410                lea ecx, dword ptr [esp+10]
:0040861D 51                      push ecx            <====ecx入棧。
:0040861E 50                      push eax            <====第5組序列號入棧。
:0040861F 52                      push edx            <====第4組序列號入棧。
:00408620 55                      push ebp            <====第3組序列號入棧。
:00408621 53                      push ebx            <====第2組序列號入棧。
:00408622 57                      push edi            <====第1組序列號入棧。
:00408623 E8080B0100              call 00419130       <=========關鍵CALL。
:00408628 83C418                  add esp, 00000018
:0040862B 84C0                    test al, al         <====測試al.
:0040862D 6A30                    push 00000030
:0040862F 740C                    je 0040863D         <====不跳註冊成功。

* Possible Reference to Dialog:                      
                                 |
: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

進入 408623 處的關鍵CALL,直到:

:0041B82E E8EDD2FFFF              call 00418B20
:0041B833 8B8424C4020000          mov eax, dword ptr [esp+000002C4]<===將第5組序列號送入eax.
:0041B83A 8B8C24B4020000          mov ecx, dword ptr [esp+000002B4]<===將第1組序列號送入ecx.
:0041B841 8B6C242C                mov ebp, dword ptr [esp+2C]      <===將比較碼X1送入ebp.*
:0041B845 83C410                  add esp, 00000010                <====esp+10H.
:0041B848 8B148588464500          mov edx, dword ptr [4*eax+00454688]<===將比較碼X2送入edx.*
:0041B84F 2BCD                    sub ecx, ebp                     <====ecx-ebp.
:0041B851 3BD1                    cmp edx, ecx                     <====ecx和edx比較.(1)
:0041B853 0F851B020000            jne 0041BA74                     <====不等跳向出錯點B.
:0041B859 8B9424A8020000          mov edx, dword ptr [esp+000002A8]<===將第2組序列號送入edx.
:0041B860 8B742418                mov esi, dword ptr [esp+18]      <===將比較碼X3送入esi.*
:0041B864 8B0C8554434500          mov ecx, dword ptr [4*eax+00454354]<===將比較碼X4送入ecx.*
:0041B86B 2BD6                    sub edx, esi                     <===edx-esi.
:0041B86D 3BCA                    cmp ecx, edx                     <===edx和ecx比較.(2)
:0041B86F 0F85FF010000            jne 0041BA74                     <====不等跳向出錯點B.
:0041B875 8B8C24AC020000          mov ecx, dword ptr [esp+000002AC]<===將第3組序列號送入ecx.
:0041B87C 8B742410                mov esi, dword ptr [esp+10]      <===將比較碼X5送入esi.*
:0041B880 8B148520404500          mov edx, dword ptr [4*eax+00454020]<===將比較碼X6送入edx.*
:0041B887 2BCE                    sub ecx, esi                     <===ecx-esi.
:0041B889 3BD1                    cmp edx, ecx                     <====ecx和edx比較.(3)
:0041B88B 0F85E3010000            jne 0041BA74                     <====不等跳向出錯點B.
:0041B891 8B9424B0020000          mov edx, dword ptr [esp+000002B0]<===將第4組序列號送入edx.
:0041B898 8B742414                mov esi, dword ptr [esp+14]      <===將比較碼X7送入esi.*
:0041B89C 8B0C85EC3C4500          mov ecx, dword ptr [4*eax+00453CEC]<===將比較碼X8送入ecxi.*
:0041B8A3 2BD6                    sub edx, esi                      <====edx-esi.
:0041B8A5 3BCA                    cmp ecx, edx                      <====edx和ecx比較.(4)
:0041B8A7 0F85C7010000            jne 0041BA74                      <====不等跳向出錯點B.
...............................................................<====下面是漫長處理過程,略。
                                                               (註冊資訊放在"\AGPDRV.386")

 OK,用 TRW2000 分別設斷獲得上面"*"處的比較碼,然後透過計算獲得正確的序列號。

 例:輸入序列號:10000-20000-30000-40000-52 ,X1=2015,X2=10905
                (1):ecx=edx=ecx-X1=X2 =>ecx=12920
                (2)、(3)、(4),略
                (5):不大於200.

 成功註冊之後,完美解除安裝 V7.0 將在你的系統目錄的"SYSTEM"資料夾中產生一個名為"AGPDRV.386"的隱藏檔案(一般在C:\WINDOWS\SYSTEM\AGPDRV.386),將其刪除之後又變為未註冊版本。

 
整理:
 使用者名稱:fengma
 序列號:12770-8388-30077-31046-7


風馬 於  21:08 2002-8-18

相關文章