完美解除安裝7.00版破解 (7千字)

看雪資料發表於2002-03-18

目標:完美解除安裝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

相關文章