参考
书:《加密与解密》
视频:小甲鱼 解密系列 视频
示例程序下载地址:http://pan.baidu.com/s/1bnmzqov
PDiD下载地址:http://tools.pediy.com/unpack/File_analysers/peid/peid.rar (win7下运行要删除plugins\xInfo.dll,否则会出现 以停止工作)
这个程序安装好会会要求注册,它的密钥是按照你电脑的MAC等唯一的标识来计算的。
我们可以用PEiD来查看这个程序的类型,可以发现这个程序使用VB写的。
图片1
VB程序破解
所有VB程序几乎都依赖于MSVBVM60.dll这个动态链接库。所以程序频繁的在用户领空跟dll领空中跳来跳去。
但是正是因为这样,VB破解可以走捷径。可以直接等对 用来比较API函数 下断点来调试破解。
关键的 用来比较的API函数:
变量比较:
__vbaVarTstEq
__vbaVarCompEq
__vbaVarCompLe
__vbaVarCompLt
__vbaVarCompGe
__vbaVarCompGt
__vbaVarCompNe
字符串比较:
__vbaStrCmp
__vbaStrComp
__vbaStrCompVar
__vbaStrLike
__vbaStrTextComp
__vbaStrTextLike
现在安装好程序后,加载程序。
按 ctrl+N 查看输入输入出表
图片2
直接输入vbavartsteq (直接在这个窗口上输入,窗口标题栏可以显示已输入的内容),
可以看到__vbaVarTstEq,选中它,右键-->在每个参考上设置断点。可以发现设置了88个断点
图片3
回到cpu面板,先按F9,运行到断点处,在按F8单步调试。
运行到此处,可以发现005BBFD9 一串很想注册码的字符串。
005BBFB6 .^\E9 A9FEFFFF jmp 005BBE64 005BBFBB > BA 1C804300 mov edx, 0043801C ; UNICODE "PC 2 Answering Machine 2.0 - Professional Edition" 005BBFC0 . B9 B4805D00 mov ecx, 005D80B4 ; ASCII "Dd0" 005BBFC5 . 8B3D 90124000 mov edi, dword ptr [<&MSVBVM60.__vba>; MSVBVM60.__vbaStrCopy 005BBFCB . FFD7 call edi ; <&MSVBVM60.__vbaStrCopy> 005BBFCD . BA 84804300 mov edx, 00438084 ; UNICODE "2.0.8.2" 005BBFD2 . B9 14845D00 mov ecx, 005D8414 ; ASCII "靌0" 005BBFD7 . FFD7 call edi 005BBFD9 . BA 98804300 mov edx, 00438098 ; UNICODE "oeiu-564-oqei-97" 005BBFDE . B9 18845D00 mov ecx, 005D8418 005BBFE3 . FFD7 call edi ; MSVBVM60.__vbaStrCopy 005BBFE5 . C705 20845D00>mov dword ptr [5D8420], 1E 005BBFEF . 3935 A8995D00 cmp dword ptr [5D99A8], esi 005BBFF5 . 75 10 jnz short 005BC007 005BBFF7 . 68 A8995D00 push 005D99A8 005BBFFC . 68 58E54200 push 0042E558 005BC001 . FF15 7C124000 call dword ptr [<&MSVBVM60.__vbaNew2>>; MSVBVM60.__vbaNew2 005BC007 > 8B3D A8995D00 mov edi, dword ptr [5D99A8] 005BC00D . 8B07 mov eax, dword ptr [edi] 005BC00F . 8D4D 98 lea ecx, dword ptr [ebp-68]
运行程序,直接输入这个字符串,尝试正常,可以发现注册成功。