加密狗软件破解复制T-GOU工作室
RSS
当前位置 : > 经典案例 >

某商业软件加密狗破解简介

来源:未知 作者:admin 时间:2010-12-26 23:01 浏览:

这是一个调查表录入系统,用的是某品牌的加密狗。

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 <jmp.&user32.MessageBoxA>           ; \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 &nb, sp;     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 <jmp.&user32.MessageBoxA>           ; \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

 


Tags: