hasp加密狗破解实例解析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

hasp加密狗破解实例解析

hasp 系列加密狗破解有的朋友认为很难,其实不然,只要有足够的耐心和技术基础。是没有问题的。

--------------------------------------------------------------------------------------------------------

004015FF |. 8D95 ACFBFFFF lea edx,[local.277]

00401605 |. 52 push edx

00401606 |. 8B85 F8FBFFFF mov eax,[local.258]

0040160C |. 50 push eax

0040160D |. 8B8D A8FBFFFF mov ecx,[local.278]

00401613 |. 51 push ecx

00401614 |. 68 D4E54000 push APP.0040E5D4 ; ASCII "EN"

00401619 |. 8B55 E8 mov edx,[local.6]

0040161C |. 52 push edx

0040161D |. E8 8E230000 call ;这个CALL只要一执行,就死掉,

所以必须跟进

00401622 |. 8945 EC mov [local.5],eax

00401625 |. 8B45 EC mov eax,[local.5]

00401628 |> 8B4D F4 mov ecx,[local.3]

0040162B |. 64:890D 00000000 mov fs:[0],ecx

00401632 |. 8B4D E4 mov ecx,[local.7]

00401635 |. E8 C72D0000 call APP.00404401

0040163A |. 8BE5 mov esp,ebp

0040163C |. 5D pop ebp

0040163D \. C3 retn

--------------------------------------------------------------------------------------------------------

6、跟进后出现一下代码,看第一行,就是0040161D 处调用的函数,再看右面的注释,心跳加快,InitSystem,从名字上你都能猜想它会干什么,对,读狗的相关代码就应该在这儿初始化(当然还要初始

化其他信息),继续跟进

--------------------------------------------------------------------------------------------------------

004039B0 $- FF25 C8554000 jmp ds:[<&user_In>] ; InitSystem

004039B6 $- FF25 C4554000 jmp ds:[<&user_Star>] ; StartProgram

004039BC $- FF25 C0554000 jmp ds:[<&user_Mai>]

004039C2 $- FF25 AC544000 jmp ds:[<&XXX_DLL.#3>]

004039C8 $- FF25 A8544000 jmp ds:[<&XXX_DLL.#47>]

--------------------------------------------------------------------------------------------------------

7、跟进后,代码是一系列的IsBadReadPtr,由此判断该处是初始化内存工作,离读狗还用有一段距离。

部分代码如下,还有更多的IsBadReadPtr,没必要就不贴了,贴一点提示思路即可。

一直按F8,痛苦的是这段代码中有个循环,要循环20多次,稍不留神就结束循环,立刻进入另一个关键CALL,程序又死掉。所以在这儿又费了我很多时间。

--------------------------------------------------------------------------------------------------------

00EF5940 > 55 push ebp ;InitSystem函数

00EF5941 8BEC mov ebp,esp

00EF5943 81EC 280C0000 sub esp,0C28

00EF5949 A1 6C2EF100 mov eax,ds:[F12E6C]

00EF594E 8945 E0 mov ss:[ebp-20],eax

00EF5951 57 push edi

00EF5952 8B45 0C mov eax,ss:[ebp+C]

00EF5955 50 push eax

00EF5956 68 6848F100 push user_dll.00F14868

00EF595B E8 34F70000 call

00EF5960 83C4 08 add esp,8

00EF5963 B9 583AF100 mov ecx,user_dll.00F13A58

00EF5968 85C9 test ecx,ecx

00EF596A 74 46 je short user_dll.00EF59B2

00EF596C 6A 01 push 1

00EF596E 68 583AF100 push user_dll.00F13A58

00EF5973 FF15 1072F000 call ds:[<&KERNEL32.IsBadWritePtr>] ;

kernel32.IsBadWritePtr

00EF5979 85C0 test eax,eax

00EF597B 75 35 jnz short user_dll.00EF59B2

00EF597D 837D 10 00 cmp dword ptr ss:[ebp+10],0

00EF5981 74 26 je short user_dll.00EF59A9

00EF5983 6A 01 push 1

00EF5985 8B55 10 mov edx,ss:[ebp+10]

00EF5988 52 push edx

00EF5989 FF15 1472F000 call ds:[<&KERNEL32.IsBadReadPtr>] ;

kernel32.IsBadReadPtr

00EF598F 85C0 test eax,eax

00EF5991 75 16 jnz short user_dll.00EF59A9

00EF5993 68 04010000 push 104

00EF5998 8B45 10 mov eax,ss:[ebp+10]

00EF599B 50 push eax

00EF599C 68 583AF100 push user_dll.00F13A58

00EF59A1 FF15 1872F000 call ds:[<&KERNEL32.lstrcpynW>] ; kernel32.lstrcpynW --------------------------------------------------------------------------------------------------------

8、上面代码执行结束后迅速来到下面代码,注释处的CALL执行就死,跟进

--------------------------------------------------------------------------------------------------------

00EF5D8A 6A 03 push 3

00EF5D8C 68 10000100 push 10010

00EF5D91 8B15 9C3EF100 mov edx,ds:[F13E9C]

00EF5D97 83C2 12 add edx,12

00EF5D9A 52 push edx

00EF5D9B 68 D80CF100 push user_dll.00F10CD8

00EF5DA0 A1 9C3EF100 mov eax,ds:[F13E9C]

00EF5DA5 8B88 2C0F0000 mov ecx,ds:[eax+F2C]

00EF5DAB 51 push ecx

00EF5DAC E8 45E70000 call

00EF5DB1 EB 15 jmp short user_dll.00EF5DC8

相关文档
最新文档