做不來序號產生器,只好暴破Windows優化大師V4.3 (4千字)

看雪資料發表於2001-11-02

Windows 優化大師 V4.3 破解

經 FI V2.45 偵查得知安裝得到的所有可執行檔案都是用 Aapack V2.11 加的殼
分別用 unaspack V2.11c 給 OctoDll.dll 和 Windows優化大師.exe 脫殼
再用 w32dasm V8.93 反彙編脫殼後的可執行檔案

在 Windows優化大師.exe 中

:004E4D79 E8B6FCFFFF              Call 004E4A34        //進 OctoDll.dll 檢查註冊碼
:004E4D7E 83F814                  cmp eax, 00000014    //返回值為 eax=14H 則正確
:004E4D81 7417                    je 004E4D9A          //標題欄變為"已註冊"

因為跟蹤發現退出後重新執行 Windows優化大師.exe 又會執行到上面的程式碼, 故考慮修改
OctoDll.dll 中得出返回值的程式碼:

:004043DC 85C0                    test eax, eax        //若 eax=0H        //若 eax<>0H
:004043DE 7504                    jne 004043E4        //這裡不跳        //這裡跳
:004043E0 33DB                    xor ebx, ebx        //置 ebx=0H
:004043E2 EB04                    jmp 004043E8        //ebx 賦給 eax 作為返回值
:004043E4 0FB75DF6                movzx ebx, word ptr [ebp-0A]            //把檢查結果通過 ebx 賦給 eax 作為返回值
:004043E8 33C0                    xor eax, eax

在註冊碼錯誤的情況下,上面的執行過程都是錯誤的,乾脆直接置 ebx=14H 再賦給 eax 作為返回值

:004043DC 90                      nop
:004043DD BB14000000              mov ebx, 00000014
:004043E2 EB04                    jmp 004043E8

OctoDll.dll 中的程式碼應作如下修改:
85C0750433DBEB04 ==> 90BB14000000EB04

在 Windows優化大師.exe 執行時程式碼修改地址為 005F43DC
由於 Windows優化大師.exe 主程式對加殼的 OctoDll.dll 進行CRC校驗,不能直接修改 OctoDll.dll 檔案
故考慮通過 Windows優化大師.exe 中在加殼程式碼還原後用SMC技術完成這項操作

用 topo V1.2 在加殼的 Windows優化大師.exe 中擴充30個位元組的空間,位於 Offset=7CE19H 處
注意選上重定向入口點(即將入口點改為 Offset=7CE19H 對應的絕對地址 00577019)及使程式碼可寫
然後修改加殼的 Windows優化大師.exe 中自 Offset=7CE19H 始的程式碼:

:00577019 66C705DC435F0090BB      mov word ptr [005F43DC], BB90
:00577022 C705DE435F0014000000    mov dword ptr [005F43DE], 00000014
:0057702C E913E40600              jmp 005E5444
:00577031 90

由此得到的 Windows優化大師.exe 之徹底破解版可接受任意註冊碼,並可網上升級
另外未註冊或註冊失敗時,登錄檔存在如下字串鍵值
HKEY_LOCAL_MACHINE\Software\Wom\Masters = "0F0F0F0F"
註冊成功則此鍵值不存在
Sysdoctor.exe 會根據該鍵值存在與否決定 Windows優化大師 是否正常註冊過

---------------------------------------------------------------------------------------
深入內層的破解方法

OctoDll.dll

:00404301 E8B2FDFFFF              call 004040B8

:00404306 83E802                  sub eax, 00000002
:00404309 8945E0                  mov dword ptr [ebp-20], eax
:0040430C C165DC02                shl dword ptr [ebp-24], 02
/005F4306 6810435F00              push 005F4310                  //置返回地址
/005F430B E92B2DF8FF              jmp 0057703B

:00404310 8D4DDC                  lea ecx, dword ptr [ebp-24]
:00404313 8B01                    mov eax, dword ptr [ecx]
:00404315 8B5104                  mov edx, dword ptr [ecx+04]
:00404318 0FACD002                shrd eax, edx, 02              //雙精度右移
:0040431C C1EA02                  shr edx, 02
:0040431F 8901                    mov dword ptr [ecx], eax
:00404321 895104                  mov dword ptr [ecx+04], edx
:00404324 8B45DC                  mov eax, dword ptr [ebp-24]
:00404327 3B45E4                  cmp eax, dword ptr [ebp-1C]
:0040432A 7404                    je 00404330

設法在 00404310 之前提取註冊使用者的正確校驗碼[ebp-1C],作校驗過程的逆運算,用所得結果覆蓋
通過偽註冊碼計算得到的中間校驗碼[ebp-24]及[ebp-20]
用SMC技術可這樣實現:
先用 topo V1.2 在加殼的 Windows優化大師.exe 中擴充61個位元組的空間,位於 Offset=7CE19H 處

:00577019 66C70506435F006810      mov word ptr [005F4306], 1068  //修改程式碼,改變走向
:00577022 C70508435F00435F00E9    mov dword ptr [005F4308], E9005F43
:0057702C C7050C435F002B2DF8FF    mov dword ptr [005F430C], FFF82D2B
:00577036 E909E40600              jmp 005E5444      //回到原加殼的 Windows優化大師.exe 的入口點
:0057703B 8B55E4                  mov edx, dword ptr [ebp-1C]    //註冊使用者的正確校驗碼
:0057703E C1EA1E                  shr edx, 1E
:00577041 83C250                  add edx, 00000050              //儲存進位以備雙精度右移
:00577044 8955E0                  mov dword ptr [ebp-20], edx
:00577047 8B55E4                  mov edx, dword ptr [ebp-1C]
:0057704A C1E202                  shl edx, 02                    //雙精度右移的反向操作
:0057704D 8955DC                  mov dword ptr [ebp-24], edx
:00577050 C3                      ret


相關資訊: 麻煩,省點力改兩位元組:83F8147417改作83F8147517; 83F8147407改作83F8147507 (空)(cray 閱讀 0)

相關文章