分析某智能管理系统加密狗
这是一个停车场软件,用的是宏狗,由于没有原狗,所以只有简单的思路。
PEID检测为Microsoft Visual Basic 5.0 / 6.0,VB程序,无壳。
试用软件,弹出提示:软件未授权!
既然有提示,那就好办。
OD加载程序:
00401234 PR> $ 68 BC1A4000 push PR.00401ABC
00401239 . E8 EEFFFFFF call <jmp.&MSVBVM60.#100>
0040123E . 0000 add byte ptr ds:[eax],al
00401240 . 0000 add byte ptr ds:[eax],al
根据提示找到弹出错误提示的代码处:
01394BA0 8B4424 08 mov eax,dword ptr ss:[esp+0x8]
01394BA4 8B4C24 04 mov ecx,dword ptr ss:[esp+0x4]
01394BA8 50 push eax
01394BA9 68 94723801 push IL.01387294 ; ASCII “IL.dll”
01394BAE 51 push ecx
01394BAF FF15 10233901 call dword ptr ds:[<&USER32.GetActiveWin>; USER32.GetActiveWindow
01394BB5 50 push eax
01394BB6 FF15 0C233901 call dword ptr ds:[<&USER32.MessageBoxA>>; USER32.MessageBoxA
01394BBC C3 retn
由于调用的DLL是VC所写,所以还是直接调用的API,这也使得加密狗破解更加顺手,本人没学过VB,所以更喜欢VC程序了,呵呵。
继续往上查找:
01393EE9 C705 6C8C3801 0>mov dword ptr ds:[0x1388C6C],0x2
01393EF3 66:8125 0470380>and word ptr ds:[0x1387004],0xFFFE
01393EFC 68 10200000 push 0x2010
01393F01 E8 6AF1FFFF call IL.01393070
01393F06 50 push eax
01393F07 E8 940C0000 call IL.01394BA0 //检测加密狗是否存在
01393F0C 83C4 08 add esp,0x8
01393F0F F605 04703801 0>test byte ptr ds:[0x1387004],0x1
01393F16 75 0C jnz short IL.01393F24 //加密狗破解关键点一
01393F18 A1 6C8C3801 mov eax,dword ptr ds:[0x1388C6C]
01393F1D 50 push eax
01393F1E FF15 E8213901 call dword ptr ds:[<&KERNEL32.ExitProces>; kernel32.ExitProcess
此处检测加密狗是否存在,如果加密狗不存在,则弹出错误提示对话框,然后直接调用ExitProcess退出程序。由于没有加密狗,所以这里就得修改代码了。
修改完代码后继续查找:
00403947 . 52 push edx
00403948 . 56 push esi
00403949 . 6A 02 push 0x2
0040394B . FF90 1803000 call dword ptr ds:[eax+0x318]; //读取加密狗
00403951 . 83C4 18 add esp,0x18
00403954 . 66:85DB test bx,bx
00403957 . 0F84 DF010000 je PR.00403B3C //加密狗破解关键点二,跳向ExitProcess
0040395D . A1 D8524000 mov eax,dword ptr ds:[0x4052D8]
00403962 . 85C0 test eax,eax
00403964 . 75 10 jnz short PR.00403976
00403966 . 68 D8524000 push PR.004052D8
0040396B . 68 58234000 push PR.00402358
00403970 . FF15 88104000 call dword ptr ds:[<&MSVBVM60.__vbaNew2>>;
00403BFD . FF51 04 call dword ptr ds:[ecx+0x4] //再一次读取加密狗
00403C00 . A1 D8524000 mov eax,dword ptr ds:[0x4052D8]
00403C05 . 33DB xor ebx,ebx
00403C07 . 3BC3 cmp eax,ebx
00403C09 . 895D E8 mov dword ptr ss:[ebp-0x18],ebx
00403C0C . 895D E4 mov dword ptr ss:[ebp-0x1C],ebx
00403C0F . 895D E0 mov dword ptr ss:[ebp-0x20],ebx
00403C12 . 895D D0 mov dword ptr ss:[ebp-0x30],ebx
00403C15 . 75 10 jnz short PR.00403C27 //加密狗破解关键点三
通过修改几处代码,软件界面出来了,由于没有相应的设备支持,且没有原狗,无法充分测试,所以加密狗破解到这里只能告一段落,不过只要有原狗和设备,这个软件起来也很快可以搞定。