10/26/2011

系統錯誤 01204

資料程式庫錄入系統加密狗破解方法


這是一個資料程式庫錄入系統,用的是某品牌的加密狗。PEID偵測為Borland Delphi 6.0 - 7.0,無殼。試用軟體,即現輔助說明:加密狗讀取錯誤,請與軟體供應商聯繫確認加密狗合法性!很牛乂!點擊確定,又即現一個輔助說明:未找到加密狗,目前為試用狀態。OD加載軟體,找到第個輔助說明處:

01FD4B50 /$ 83C4 DC add esp,-0x24

01FD4B53 . 33C0 xor eax,eax

01FD4B55 . A3 08E75100 mov dword ptr ds:[0x51E708],eax

01FD4B5A . E8 E1A10000 call CS.01E94D40

01FD4B5F . 85C0 test eax,eax

01FD4B61 . 74 17 je short CS.01FD4B7A

01FD4B63 . 6A 10 push 0x10 ; /Style = MB_OK MB_ICONHAND MB_APPLMODAL

01FD4B65 . 68 FCFB4D00 push CS.01FD4BFC ; Title = "錯誤"

01FD4B6A . 68 04FC4D00 push CS.01FD4C04 ; Text = "加密狗讀取錯誤,請與供應商聯繫確認加密狗合法性!"

01FD4B6F . 6A 00 push 0x0 ; hOwner = NULL

01FD4B71 . E8 C278F2FF call ; \MessageBoxA

往上看,01FD4B5A 這一個CALL那肯定是讀取加密狗了,跟入:



01E94D40 $ B8 A4A55100 mov eax,CS.0051A5A4

01E94D45 . 52 push edx

01E94D46 . 51 push ecx

01E94D47 . BA 44944E00 mov edx,CS.01E94444

01E94D4C . 8910 mov dword ptr ds:[eax],edx

01E94D4E . 51 push ecx

01E94D4F . 31C9 xor ecx,ecx

01E94D51 . E3 01 jecxz short CS.01E94D54

01E94D53 DD db DD

01E94D54 . 59 pop ecx

01E94D55 . C740 08 01000>mov dword ptr ds:[eax+0x8],0x1

01E94D5C . B9 01994E00 mov ecx,CS.01E94901

01E94D61 . 8948 04 mov dword ptr ds:[eax+0x4],ecx

01E94D64 . EB 01 jmp short CS.01E94D67

01E94D66 FF db FF

01E94D67 > FF70 08 push dword ptr ds:[eax+0x8]

01E94D6A . FF70 04 push dword ptr ds:[eax+0x4]

01E94D6D . FF30 push dword ptr ds:[eax]

01E94D6F . E8 54030000 call CS.004EA0C8

01E94D74 . 83C4 0C add esp,0xC

01E94D77 . 51 push ecx

01E94D78 . 31C9 xor ecx,ecx

01E94D7A . E3 01 jecxz short CS.01E94D7D

01E94D7C 8A db 8A

01E94D7D . 59 pop ecx

01E94D7E . 59 pop ecx

01E94D7F . 5A pop edx

01E94D80 . C3 retn

由於真正與加密狗進行資料交換的程式碼肯定是非常多的花指令,為了偷懶,我們就直接在此處PATH程式碼,所以此處為加密狗破解的關鍵點之一。

繼續尋找:

01E94D81 $ 52 push edx

01E94D82 . 51 push ecx

01E94D83 . E8 8D000000 call CS.01E94E15 //讀取加密狗中的資料

01E94D88 . 85C0 test eax,eax

01E94D8A . 75 4A jnz short CS.01E94DD6 //加密狗破解關鍵點二

01E94D8C . B8 44944E00 mov eax,CS.01E94444

01E94D91 . A3 A4A55100 mov dword ptr ds:[0x51A5A4],eax

01E94D96 . 51 push ecx

01E94D97 . 31C9 xor ecx,ecx

01E94D99 . E3 01 jecxz short CS.01E94D9C

01E94D9B . 3F aas

01E94D9C > 59 pop ecx

01E94D9D . C705 ACA55100>mov dword ptr ds:[0x51A5AC],0x2

01E94DA7 . BA 01994E00 mov edx,CS.01E94901

01E94DAC . 8915 A8A55100 mov dword ptr ds:[0x51A5A8],edx

01E94DB2 . EB 01 jmp short CS.01E94DB5

01E94DB4 EA db EA

01E94DB5 > FF35 ACA55100 push dword ptr ds:[0x51A5AC]

01E94DBB . FF35 A8A55100 push dword ptr ds:[0x51A5A8] ; CS.01E94901

01E94DC1 . FF35 A4A55100 push dword ptr ds:[0x51A5A4] ; CS.01E94444

01E94DC7 . E8 FC020000 call CS.004EA0C8 //如果前面讀取加密狗資料不規則,則再次偵測加密狗是否存在,

01E94DCC . 83C4 0C add esp,0xC

01E94DCF . 51 push ecx

01E94DD0 . 31C9 xor ecx,ecx

01E94DD2 . E3 01 jecxz short CS.01E94DD5

01E94DD4 7E db 7E ; CHAR '~'

01E94DD5 . 59 pop ecx

01E94DD6 > 59 pop ecx

01E94DD7 . 5A pop edx

01E94DD8 . C3 retn

01204D54 /$ 53 push ebx

01204D55 . 56 push esi

01204D56 . 51 push ecx

01204D57 . 89CE mov esi,ecx

01204D59 . C1EE 02 shr esi,0x2

01204D5C . 74 26 je short CS.01204D84

01204D5E > 8B08 /mov ecx,dword ptr ds:[eax]

01204D60 . 8B1A mov ebx,dword ptr ds:[edx]

01204D62 . 39D9 cmp ecx,ebx

01204D64 . 75 45 jnz short CS.01204DAB

01204D66 . 4E dec esi

01204D67 . 74 15 je short CS.01204D7E

01204D69 . 8B48 04 mov ecx,dword ptr ds:[eax+0x4]

01204D6C . 8B5A 04 mov ebx,dword ptr ds:[edx+0x4]

01204D6F . 39D9 cmp ecx,ebx

01204D71 . 75 38 jnz short CS.01204DAB

01204D73 . 83C0 08 add eax,0x8

01204D76 . 83C2 08 add edx,0x8

01204D79 . 4E dec esi

01204D7A .^ 75 E2 \jnz short CS.01204D5E

01204D7C . EB 06 jmp short CS.01204D84

01204D7E > 83C0 04 add eax,0x4

01204D81 . 83C2 04 add edx,0x4

01204D84 > 5E pop esi

01204D85 . 83E6 03 and esi,0x3

01204D88 . 74 36 je short CS.01204DC0

01204D8A . 8A08 mov cl,byte ptr ds:[eax]

01204D8C . 3A0A cmp cl,byte ptr ds:[edx]

01204D8E . 75 30 jnz short CS.01204DC0

01204D90 . 4E dec esi

01204D91 . 74 13 je short CS.01204DA6

01204D93 . 8A48 01 mov cl,byte ptr ds:[eax+0x1]

01204D96 . 3A4A 01 cmp cl,byte ptr ds:[edx+0x1]

01204D99 . 75 25 jnz short CS.01204DC0

01204D9B . 4E dec esi

01204D9C . 74 08 je short CS.01204DA6

01204D9E . 8A48 02 mov cl,byte ptr ds:[eax+0x2]

01204DA1 . 3A4A 02 cmp cl,byte ptr ds:[edx+0x2]

01204DA4 . 75 1A jnz short CS.01204DC0

01204DA6 > 31C0 xor eax,eax

01204DA8 . 5E pop esi

01204DA9 . 5B pop ebx

01204DAA . C3 retn



此函數驗證從加密狗中讀取的資料是否正常,加密狗破解第三處關鍵點。

繼續尋找:

01B649E5 . 8945 E4 mov [local.7],eax

01B649E8 . 8B45 FC mov eax,[local.1]

01B649EB . E8 38EEFFFF call CS.0046A828 //再一次讀取加密狗資料

01B649F0 . 84C0 test al,al

01B649F2 . 74 06 je short CS.01B64AFA//加密狗破解關鍵點四

01B649F4 . 81CB 00001000 or ebx,0x100000

01B649FA > 33C9 xor ecx,ecx

01B649FC . 55 push ebp

01B649FD . 68 81BA4600 push CS.01B64A81

01B64A02 . 64:FF31 push dword ptr fs:[ecx]

01B64A05 . 64:8921 mov dword ptr fs:[ecx],esp

01B64A08 . 53 push ebx ; /Style

01B64A09 . 57 push edi ; Title

01B64A0A . 56 push esi ; Text

01B64A0B . 8B45 FC mov eax,[local.1] ;

01B64A0E . 8B40 30 mov eax,dword ptr ds:[eax+0x30] ;

01B64A11 . 50 push eax ; hOwner

01B64A12 . E8 21BAF9FF call ; \MessageBoxA



經過數次的PATCH程式碼與驗證,錄入終於可以正常使用了,至此,加密狗破解完美成功!



01E94E99 . B8 01994E00 mov eax,CS.01E94901

01E94E9E . 8943 04 mov dword ptr ds:[ebx+0x4],eax

01E94EA1 . FF73 08 push dword ptr ds:[ebx+0x8]

01E94EA4 . 50 push eax

01E94EA5 . FF33 push dword ptr ds:[ebx]

01E94EA7 . E8 1C020000 call CS.004EA0C8 //再一次讀取加密狗

01E94EAC . 83C4 0C add esp,0xC

01E94EAF . 85C0 test eax,eax

01E94EB1 . 75 07 jnz short CS.01E94EBA //加密狗破解關鍵點五

01E94EB3 . C605 E96D5100>mov byte ptr ds:[0x516DE9],0x2

01E94EBA > 59 pop ecx

01E94EBB . 5A pop edx

01E94EBC . 5B pop ebx

01E94EBD . C3 retn

(編輯:加密狗)
分享本篇文章

沒有留言:

LinkWithin

Related Posts Plugin for WordPress, Blogger...