锣机控制管理系统加密狗无狗运作
这是一个PCB锣机的控制管理系统,用的是软件加密狗。 试用软件,弹出提示:找不到加密狗,请检测。 PEID检测为Microsoft Visual C++ 5.0 [Debug],这个程序应该有一定的年代了。 用OD加载程序: 004A4210 /$ 55 push ebp 004A4211 |. 8BEC mov ebp,esp
这是一个PCB锣机的控制管理系统,用的是软件加密狗。
试用软件,弹出提示:找不到加密狗,请检测。
PEID检测为Microsoft Visual C++ 5.0 [Debug],这个程序应该有一定的年代了,呵呵。
用OD加载程序:
004A4210 >/$ 55 push ebp
004A4211 |. 8BEC mov ebp,esp
004A4213 |. 6A FF push -0x1
004A4215 |. 68 D8555100 push YK-0.005155D8
004A421A |. 68 10444A00 push ; SE 处理程序安装
004A421F |. 64:A1 0000000>mov eax,dword ptr fs:[0]
004A4225 |. 50 push eax
004A4226 |. 64:8925 00000>mov dword ptr fs:[0],esp
004A422D |. 83C4 94 add esp,-0x6C
由于有错误提示,找到对应读取加密狗的函数就相当简单了。
01C39610 |. E8 DD9E0700 call
01C39615 |. 6A 00 push 0x0
01C39617 |. E8 8EB00700 call
01C3961C |. 83C4 04 add esp,0x4
01C3961F |. B9 601C5200 mov ecx,YK-0.00521C60
01C39624 |. E8 38A5FDFF call YK-0.00403B61
01C39629 |. B9 A0185200 mov ecx,YK-0.005218A0
01C3962E |. E8 E093FDFF call YK-0.00402A13
01C39633 |. C745 C8 00000>mov [local.14],0x0
01C3963A |. B9 C81B5200 mov ecx,YK-0.00521BC8
01C3963F |. E8 9181FDFF call YK-0.004017D5 //读取加密狗函数
01C39644 |. 85C0 test eax,eax
01C39646 |. 75 24 jnz short YK-0.01C3966C //加密狗破解关键点一,不跳则挂
01C39648 |. 8BF4 mov esi,esp //弹出错误提示对话框
01C3964A |. 6A 30 push 0x30 ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
01C3964C |. 68 20B95000 push YK-0.0050B920 ; |Title = "出错"
01C39651 |. 68 5C075100 push YK-0.0051075C ; |Text = "找不到加密狗,请检测!"
01C39656 |. 6A 00 push 0x0 ; |hOwner = NULL
01C39658 |. FF15 B05B5200 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA
01C3965E |. 3BF4 cmp esi,esp
01C39660 |. E8 05A80700 call
01C39665 |. 33C0 xor eax,eax
01C39667 |. E9 BC050000 jmp YK-0.01C39C28
01C3966C |> 33D2 xor edx,edx
01C3966E |. 66:8B15 D01B5>mov dx,word ptr ds:[0x521BD0]
01C39675 |. 83FA 01 cmp edx,0x1
01C39678 |. 74 33 je short YK-0.01C396AD
01C3967A |. 33C0 xor eax,eax
01C3967C |. 66:A1 061C520>mov ax,word ptr ds:[0x521C06]
01C39682 |. 83E0 03 and eax,0x3
01C39685 |. 85C0 test eax,eax //第二次检测加密狗是否存在
01C39687 |. 75 24 jnz short YK-0.01C396AD //加密狗破解关键点二,不跳则挂
01C39689 |. 8BF4 mov esi,esp //弹出错误提示对话框
01C3968B |. 6A 30 push 0x30 ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
01C3968D |. 68 20B95000 push YK-0.0050B920 ; |Title = "出错"
01C39692 |. 68 30075100 push YK-0.00510730 ; |Text = "加密狗未经正式授权,请联系设备厂商!"
01C39697 |. 6A 00 push 0x0 ; |hOwner = NULL
01C39699 |. FF15 B05B5200 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA
程序肯定不止一处读取加密狗的,继续查找:
0AC1FB4C |. 8915 08095200 mov dword ptr ds:[0x520908],edx
0AC1FB52 |. 833D 08095200>cmp dword ptr ds:[0x520908],0x0
0AC1FB59 |. 75 51 jnz short YK-0.0AC1FBAC
0AC1FB5B |. 833D DC175200>cmp dword ptr ds:[0x5217DC],0x0
0AC1FB62 |. 75 1A jnz short YK-0.0AC1FB7E
0AC1FB64 |. E8 793CFEFF call YK-0.004037E2 //读取加密狗数据
0AC1FB69 |. 85C0 test eax,eax
0AC1FB6B |. 75 11 jnz short YK-0.0AC1FB7E //加密狗破解关键点三,如果读取到的数量不正确,程序会直接退出,不会有任何错误提示
0AC1FB6D |. 8BF4 mov esi,esp
0AC1FB6F |. 6A 00 push 0x0 ; /ExitCode = 0
0AC1FB71 |. FF15 605C5200 call dword ptr ds:[<&USER32.PostQuitMess>; \PostQuitMessage
0AC1FB77 |. 3BF4 cmp esi,esp
0AC1FB79 |. E8 EC420800 call
0AC1FB7E |> 833D D8175200>cmp dword ptr ds:[0x5217D8],0x0
0AC1FB85 |. 75 25 jnz short YK-0.0AC1FBAC
0AC1FB87 |. 833D DC175200>cmp dword ptr ds:[0x5217DC],0x0
0AC1FB8E |. 74 1C je short YK-0.0AC1FBAC
0AC1FB90 |. 8B15 64185200 mov edx,dword ptr ds:[0x521864]
0AC1FB96 |. 83C2 01 add edx,0x1
继续查找:
0B5556A0 |. 894D FC mov [local.1],ecx
0B5556A3 |. B9 C81B5200 mov ecx,YK-0.00521BC8
0B5556A8 |. E8 28C1F8FF call YK-0.004017D5 //再一次读取加密狗数据
0B5556AD |. 85C0 test eax,eax
0B5556AF |. 75 24 jnz short YK-0.0B5556D5 //加密狗破解关键点四,不跳则挂
0B5556B1 |. 8BF4 mov esi,esp
0B5556B3 |. 6A 30 push 0x30 ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0B5556B5 |. 68 20B95000 push YK-0.0050B920 ; |Title = "出错"
0B5556BA |. 68 5C075100 push YK-0.0051075C ; |Text = "找不到加密狗,请检测!"
0B5556BF |. 6A 00 push 0x0 ; |hOwner = NULL
0B5556C1 |. FF15 B05B5200 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA
0B5556C7 |. 3BF4 cmp esi,esp
0B5556C9 |. E8 9CE70200 call
经过数次的修改代码与检测,软件终于可以正常使用了,加密狗破解成功!