OllyDbg 使用教程 (九)


 

参考

书:《加密与解密》

视频:小甲鱼 解密系列 视频

 

示例程序下载地址: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]

 

 

运行程序,直接输入这个字符串,尝试正常,可以发现注册成功。