前边,我们的例子中既有VC++开发的程序,也有Delphi开发的程序,今天我们给大家分析一个VB程序的加密和解密思路。
Virtual BASIC是由早期DOS时代的BASIC语言发展而来的可视化编程语言。
VB是由事件驱动的编程语言:就是在可视化编程环境下我们可以绘制一些窗体,按钮,编辑框等控件,然后为这些控件所可能引发的事件如按钮被单击或者被双击编写对应的处理代码。
所有的VB程序几乎都是依赖于一个外部的动态链接库。这个动态链接库的名字是:MSVBVM60.dll(可能有多个版本,但名字都差不多~) 然而正是因为VB中所有的API函数都在DLL中去实现,所以导致我们在跟踪程序的执行代码时灰常频繁地在DLL领空和程序领空跳来跳去。。。 API函数的作用有很多,例如作为中介让我们的程序和指定设备进行沟通。
试验软件:PC 2 Answering Machine Pro
用查壳工具PEID查看后,信息如下图:
显示出了该软件的编写语言是Virtual BASIC。
Virtual BASIC编写的软件用OD调试时,由于VB的一些特性,会很麻烦。但是也会有捷径可寻,如下。
VB破解的关键:
针对变量: __vbaVarTstEq __vbaVarTstNe __vbaVarCompEq __vbaVarCompLe __vbaVarCompLt __vbaVarCompGe __vbaVarCompGt __vbaVarCompNe
针对字符串: __vbaStrCmp __vbaStrComp __vbaStrCompVar __vbaStrLike __vbaStrTextComp __vbaStrTextLike
(加黑的是比较常见的)
在OD中针对以上API函数去跟踪分析,找到程序是否正在匹配、比较验证码之类的东西,会便捷不少,省去不必要的麻烦。
第一次安装此软件时,它会通过分析本机网卡的mac地址,或者硬盘的编号生成一个独一无二的key,将其保存在系统里,那么我们就可以通过上面的函数来找到key。