当前位置: 网学 > 编程文档 > VB > 正文

VB 程序大揭秘

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式

  1.Visual Basic程序概况  

  我用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程序就调用它们完成工作。

  2.其它DLL的调用

  第一部分解决了。我们知道了VB程序实际上不是一个真正的可执行文件,它只是机械性地调用MSVBVM50.dll中的API执行程序。那么VB程序既然只调用了MSVBVM50.dll,它又是怎样调用其他DLL中的API呢?

  注意这个API。它能引起我们的注意:

  DllFunctionCall:看到了吗?它就是我们的主角。

  从字面上看就能看懂了:它用来调用其它DLL。这样可以使程序使用的函数集中在MSVBVM50.dll里(怎么有点像封建制度,中央集权……)。

  3.重中之重:VB程序的启动

  我们已经知道了VB程序的运行方法。那么它是怎样启动的呢?

  再看看程序调用的API。其中有一个API雷打不动,每个VB程序都有:

  ThunRTMain  

  首先,VB程序调用ThunRTMain。ThunRTMain为程序初始化进程,并获取进程ID。

  随后它加载vb5chs.dll,为打开新窗口准备。然后它开始用LoadString等API 获取窗口属性,比如字体、标题、颜色等。再调用IMM32.dll,开始利用它打开新窗口。然后使用GetModuleFileName获得VB程序名,随后用CreateSemaphore增加信号机。信号机的作用是:当监控值大于0时,信号机工作。再调用OLE32.dll,使用CreateWindowEx打开一个叫做“DDE Server”的隐藏窗口,让它从中作梗。退出OLE32.DLL,MSVBVM50又开始调用程序管理器。

  前面的工作为我们的VB程序注册了一个类名:VBFocusRT5,下面就可以使用这个类名创建VB窗体。首先使用大量循环读取半角/全角字符,然后读取各个控件的属性,再使用Local_Function把这些属性、方法、事件等“拼”成一个完整的控件,最后把上面做的所有工作综合起来,

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号