PEID检测为Microsoft Visual C++ 5.0,无壳

试用软件,提示未找到加密狗。

用OD加载软件,根据提示找到第一次读取加密狗的函数:

0074D29E    E8 8D0A0000     call SHT_2.0074DD30

0074D2A3    E8 08110000     call SHT_2.0074E3B0   //读取加密狗函数

0074D2A8    833D 00A07500 0>cmp dword ptr ds:[0x75A000],0x0

0074D2AF    74 2D           je short SHT_2.0074D2DE  //加密狗破解关键点一继续查找读取加密狗代码:

0074D69A    85C0            test eax,eax  //再一次检测加密狗是否存在

0074D69C   /EB 20           je short SHT_2.0074D6BA  //加密狗破解关键点二

0074D69E    8D4424 24       lea eax,dword ptr ss:[esp+0x24]

0074D6A2    6A 00           push 0x0

0074D6A4    68 A8A07500     push SHT_2.0075A0A8         ; ASCII "Warning"

0074D6A9    50              push eax

0074D6AA    6A 00           push 0x0

0074D6AC    FF15 00017600   call dword ptr ds:[0x760100]  ; USER32.MessageBoxA

0074D6B2    6A 00           push 0x0

0074D6B4    FF15 E4007600   call dword ptr ds:[0x7600E4]  ; kernel32.ExitProcess

0074D6BA  ^ E9 39FFFFFF     jmp SHT_2.0074D5F8 

此处如果检测不到加密狗,弹出消息框并退出程序。

00750803    55              push ebp

00750804    8BE9            mov ebp,ecx

00750806    896C24 18       mov dword ptr ss:[esp+0x18],ebp

0075080A    8A45 04         mov al,byte ptr ss:[ebp+0x4]  //检测从加密狗中读取的数据是否正常

0075080D    84C0            test al,al

0075080F    75 1D           jnz short SHT_2.0075082E//加密狗破解关键点三

00750811    68 E0A17500     push SHT_2.0075A1E0

00750816    8D4C24 20       lea ecx,dword ptr ss:[esp+0x20]

0075081A    E8 DB120000     call <jmp.&MSVCRT.exception::exception> 

用相同的方法继续查找并PATCH,经过多次的试用与调试,软件终于可以正常使用,加密狗破解完美成功。