软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 源码下载 > VB源码 > 控件组件 > VB编程常用的模块及CTL控件集打包下载

VB编程常用的模块及CTL控件集打包

  • 资源语言:简体中文
  • 资源类型:国产软件
  • 资源大小:268 KB
  • 资源等级:3星级
  • 相关链接:Home Page
  • 资源性质:免费版
运行环境:windows
更新时间:2010-07-30 14:17:41
有无插件:无插件

VB一些常用控件集,以及一些方法模块,编辑框.ctl、进度条、全局热键钩子、网站服务器、托盘控件、WinSock.ctl、曲线图.ctl、压缩算法-升级版.cls、数组加解密.cls、打开文件属性面板.bas等,其中一个模块的部分代码摘录如下:
  ------------------------------------------------------------------------------------------
   ‘遍历进程,查找notepad.exe
   MyRemoteProcessId = OpenProcess(PROCESS_CREATE_THREAD + PROCESS_VM_OPERATION + PROCESS_VM_WRITE + PROCESS_VM_READ, False, ProcessInfo.th32ProcessID)
   ‘打开进程获得notepad的句柄供后面的操作使用
   DllFileName = "C:Vblegend.dll"
   MyDllFileLength = Len(DllFileName) + 1
   ‘学过C语言的朋友应该知道字符串最后要一个ASCII 0标志结尾,所以要加1
   MyDllFileBuffer = VirtualAllocEx(MyRemoteProcessId, 0, MyDllFileLength, MEM_COMMIT, PAGE_READWRITE)
   ‘在指定进程里申请一块内存区域出来供我们存放字符串“c: est.dll“
   ‘传string给api时,byval byref有区别,应该使用byval,这样会传给api一个标准的C字符指针,不能byref,否则函数调用没问题
   ‘但是起不到预期效果,VirtualAllocEx返回的是申请到的内存地址值.
   MyReturn = WriteProcessMemory(MyRemoteProcessId, MyDllFileBuffer, DllFileName, MyDllFileLength, temp)
   ‘向刚才申请的内存中写入dll文件路径字符串
   ‘顺便说一下,很多api浏览器上的api声明都是错的,包括VB6自带的也不例外,writeprocessmemory第二个参数要的是
   ‘lpBaseAddress 但是这个值不能传址得到,如果你按byref传址,实际上传的是MyDllFileBuffer变量的地址,而不是它里面存放的那个数字
   ‘上面说了MyDllFileBuffer的数值才是WriteProcessMemory要的地址,所以声明API的时候一定要byval,大家知道空着不写就是默认byref
   ‘下面还有几处不该传址的参数,只要搞清楚API函数要的到底是什么值才可以确定到底传值还是传址,API浏览器仅能供参考,还是要仔细阅读MSDN
   MyStartAddr = GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA")
   ‘获取loadlibrary函数的地址,这个函数可以载入指定的dll文件,那他的参数呢?就是我们刚才在notepad.exe进程里写入的“c: est.dll“
   ‘不过还得让CreateRemoteThread告诉他.另外简单的说一下windows下应用程序的内存管理,我也不很懂,呵呵,win32下的应用程序
   ‘的内存区域是隔开的,每个程序有自己的一块内存不能直接访问别的程序的内存区,当然,这里调用的几个系统函数有访问别的程序内存区域的特权
   ‘而且每个应用程序的内存区域都映射到系统内存区域里,也就是说在这里GetProcAddress得到的VB程序里LoadLibraryA函数的入口地址和
   ‘notepad程序里的LoadLibraryA函数地址是一致的(映射的作用),所以不必担心.另外在VB写的程序里
   ‘要使用LoadLibraryA,notepad不是用vc写的吗?要注意根notepad没关系,我们现在是在自己的VB程序里面找LoadLibraryA函数的入口.
   ‘还有要注意函数大小写,api函数和vb不一样的。
   MyResult = CreateRemoteThread(MyRemoteProcessId, 0, 0, MyStartAddr, MyDllFileBuffer, 0, temp)
   ‘好了,现在该让LoadLibrary载入“c: est.dll“吧,现在CreateRemoteThread做的就是在notepad进程中把控制权转到LoadLibraryA的入口
   ‘然后把notepad内存区域中的“c: est.dll“字符串当作参数传给LoadLibraryA。现在我们的dll文件就在notepad程序中运行了
   ‘dll被注入notepad.exe以后会主动弹出对话框显示出notepad.exe的进程ID,表明注入成功.

 报告下载错误
点击链接开始下载
本类最新
相关教程
下载说明
栏目导航
推荐软件