VB 程序简介
现在不少程序是用 VB 写的,你通过反汇编或跟踪调试时很容易鉴别某个程序是否为 VB 程序,VB 的 EXE 文件并不是真正的编译可执行文件,它们需其动态链接库才能正常运行,各版本的链接库如下:
VB3 链接库为 vbrun300.dll ;
VB4 链接库为 vb40016.dll ; - 16 位,较少见;
VB4 链接库为 vb40032.dll ; - 32 位;
VB5 链接库为 msvbvm50.dll ;
VB6 链接库为 msvbvm60.dll ;
VB 程序执行时从本质上讲是解释执行,它们只是调用 VBRUNxxx.DLL 中的函数 ,这样可使程序员不需写大量的程序代码就可编写出较好的图形界面的 windows 程序,不过 VB 是真正的程序吗?
当然 VB 程序大大方便了程序编写者,但对我们来说, VB 程序向来是谁见谁头痛,一般用 VB 做的程序无论注册码也好, 30 天到期也好,如果用常规方法都很难有被破解的可能。原因很简单, VB 的 exe 是伪代码,程序都在 vbXXX.dll 里面执行,你只能在 vbdll 里面用 sice 打转转,什么都改不成,而且代码质量不高,结构还颇复杂。
不过你学完这一课,你就不用怕 Vb 程序,在这里我就谈谈两种常用方法,一、用 SOFTICE 对付;二、用 SmartCheck 。这一节就讲讲 SOFTICE 破解 VB 程序。
--------------------------------------------------------------------------------
SOFTICE 配制
虽然大部分 VB 程序仍调用 Win32 API 函数,但如想在 VB dll 运行库中设断的话,你就必须把 VB dll 运行库加入 SOFTICE 配制里去。具体你可参考第五课中的《 SOFTICE 安装及使用》。
下例是在 win95/98 下你把相关的 VB DLL 运行库加入 winice.dat 配制文件里。 ( 部分 )
; 注意分号后是描述语言,不被执行。每次只装载需要的一种 VB dll ,不要同时装载两个以上,把要装载那种 VB dll 那一行的分号去掉,重新启动即可。另外,判断软件是何种 VB dll 有几种方法,最直接一种用 WDasm89 查看,还有一种方法是用十六进制工具打开程序,观察。或用 SOFTICE 跟进去(用 bpx hmemcpy) ,稍转一圈,你观察一下调试窗口领空处会出现何种 VB DLL 即可。
; EXP=c:/windows/system/msvbvm60.dll ; Visual Basic 6 |
这样配制好后,重新启动,就可设 VB 运行库中各函数的断点了。
--------------------------------------------------------------------------------
VB dll 常用函数
1 、字符处理函数
MultiByteToWideChar, rtcR8ValFromBstr, WideCharToMultiByte, __vbaStrCmp, __vbaStrComp, __vbaStrCopy, __vbaStrMove, __vbaVarTstNe .
注意:这些函数前的下划线 __ 是由两根短线 _ 组成的,不要弄错。 如果你是 crack VB6 程序,你应在断点前增加 msvbvm60! 。 如: bpx msvbvm60!__vbastrcomp
VB5以前版本就没此限制 。如 bpx __vbaStrCmp
一些常用字符串函数
Val() - 转换字符串为数字 .
Str$() - 转换数字为字符串 .
Left$() - 按要求从左取字符。例如: Left$(Theodolite, 4) = "Theo".
Right$() - 按要求从右取字符 .
Ltrim$() - 去除字符串左边空格例如: Ltrim$ (" Hello ") = "Hello ".
Rtrim$() - 去除字符串左边空格 .
Trim$() - 去除字符串两边空格 .
Asc() - 转换字符为 ANSI 编码 . 例如: Asc("A") = 65. (注:65是ASCII码的十进制)
Chr$() - 转换 ANSI 编码为字符 . 例如 Chr$(65) = "A".
几个常用函数简解:
1、 __vbavartstne 进去后在0F04E351你将看到: 下命令:d ebp+0c |
2、 __vbaR8Str 在这行fcomp qword ptr [00401028] Type: DL 00401028 将看到*real* serial #. DL 是显示 Long/real 型,SOFTICE默认时是DB状态。 |
3、 __vbastrcmp |