我用W32Dasm(Ver 8.93)解开一个比较复杂的VB程序,其中用到了许多API 函数比如GetPrivateProfileString、OSfCreateShellLink、SHBrowseForFolder 等来自很多DLL的API。解开以后却发现程序只用到了一个DLL:msvbvm50.dll(我用的还是VB5)!VC、Delphi等程序语言编译出的程序可是直接引用DLL的。经过研究发现程序使用了如下几个主要的来自MSVBVM50.dll的API:rtcRandomize :Randomize 函数的对应API; 
rtcMidCharVar :Mid 函数的对应API; 
rtcLeftCharVar、rtcRightCharVar :看出来了吧,这些是Left、Right函数的对应API; 
rtcUpperCaseVar :UCase 函数的对应API; 
rtcKillFiles :Kill 语句的对应API; 
rtcFileCopy :FileCopy 语句的对应API; 
rtcFileLength :EOF、FileLen函数的对应API; 
rtcGetTimer :Randomize Timer中获取Timer的对应API; 
rtcShell :Shell函数的的对应API; 
rtcMakeDir :MkDir 语句的对应API; 
rtcRemoveDir :RmDir 语句的对应API; 
rtcDir :Dir 函数的对应API; 
rtcSpaceVar :Space 函数的对应API;   没问题的人应该看出来了:VB的所有函数、语句、方法都是由调用MSVBVM50.dll 中的API实现的,一般是由“rtc”接上函数或语句的全名,涉及字符串的API一般还得在最后加上“Var”。另外还有一些函数是这样写的:__vbaUbound : UBound 的对应API; 
__vbaFileOpen :Open 语句的对应API; 
__vbaStrCmp :比较两个字符串:If String1 = String2 Then ...... 
__vbaVarOr :Or 运算符的对应API; 
__vbaRedim :Redim 语句的对应API; 
__vbaRedimPreserve :Redim 语句加上 Preserve 参数的对应API; 
__vbaGet、vbaPut :Get、Put语句的对应API……   在运行时,VB程序就调用它们完成工作。