VB读写进程的内存
在窗体部分简单测试了ReadProcessMemory和WriteProcessMemory对另一个程序进程的读写.
由于临时项目变动,又不需要了,所以直接封类,删工程.以下代码没有一个函数经过测试,编译都没有进行...
Option Explicit
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Const PROCESS_ALL_ACCESS = &H1F0FFF
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal dwProcess As Long, lpBaseAddress As Any, lpbuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal dwProcess As Long, lpBaseAddress As Any, lpbuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Dim dwProc As Long
Dim dwPid As Long
'设置进程
Public Function SetProcess(Pid As Long)
Call Terminate
dwProc = OpenProcess(PROCESS_ALL_ACCESS, False, Pid)
dwPid = Pid
End Function
'读取,分别对应 字节组,十六进制和整数
Private Function ReadMemoryA(Addr As Long, Size As Long) As Byte()
If Size < Then Exit Function
Dim Ret As Boolean, buf() As Byte
ReDim buf(Size - ) As Byte
Ret = ReadProcessMemory(dwProc, ByVal Addr, buf(), Size, )
If Ret Then ReadMemory = buf
End Function
Private Function ReadMemoryH(Addr As Long, Size As Long) As String
If Size < Then Exit Function
Dim Ret As Boolean, buf() As Byte
ReDim buf(Size - ) As Byte
Ret = ReadProcessMemory(dwProc, ByVal Addr, buf(), Size, )
If Ret Then
Dim i As Long
For i = To UBound(buf)
If buf(i) > Then
ReadMemoryH = ReadMemoryH & Hex(buf(i)) & " "
Else
ReadMemoryH = ReadMemoryH & "" & Hex(buf(i)) & " "
End If
Next
End If
End Function
Private Function ReadMemoryL(Addr As Long) As Long
If Size < Then Exit Function
Dim Ret As Boolean, L As Long
ReadProcessMemory dwProc, ByVal Addr, L, ,
ReadMemoryL = L
End Function
'写入,分别对应 单字节,字节组,和整数
Private Function WriteMemory(Addr As Long, buf As Byte)
WriteProcessMemory dwProc, ByVal Addr, buf, , &
End Function
Private Function WriteMemoryA(Addr As Long, buf() As Byte)
WriteProcessMemory dwProc, ByVal Addr, buf(), UBound(buf) + , &
End Function
Private Function WriteMemoryL(Addr As Long, L As Long)
WriteProcessMemory dwProc, ByVal Addr, L, , &
End Function
'销毁资源占用
Private Sub Terminate()
If dwPid <> Then CloseHandle dwPid
If dwProc <> Then CloseHandle dwProc
End Sub
Private Sub Class_Terminate()
Call Terminate
End Sub
VB读写进程的内存的更多相关文章
- 通过WriteProcessMemory改写进程的内存
http://www.cnblogs.com/feiyucq/archive/2009/10/21/1587628.html 以PROCESS_ALL_ACCESS权限打开进程以后既能够使用ReadP ...
- Linux进程分配内存的两种方式--brk() 和mmap()
如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看. majflt代表major fault,中文名叫大错误,minflt代表minor faul ...
- 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)
如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看. majflt代表major fault,中文名叫大错误,minflt代表minor faul ...
- Linux 查看进程消耗内存情况总结
在Linux中,有很多命令或工具查看内存使用情况,今天我们来看看如何查看进程消耗.占用的内存情况,Linux的内存管理和相关概念要比Windows复杂一些.在此之前,我们需要了解一下Linux系统下面 ...
- postgresql进程及内存结
一.进程和内存架构图 postgresql数据库启动时,先启动一个postmaster的主进程,然后fork出一些辅助子进程. 二.主进程postmaster -bash-4.2$ which pos ...
- 进程分配内存的两种方式--brk() 和mmap()(不设计共享内存)(转)
如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看. majflt代表major fault,中文名叫大错误,minflt代表minor faul ...
- linux下对进程按照内存使用情况进行排序
linux下对进程按照内存使用情况进行排序的命令为:ps aux --sort -rss 详细解说参见 http://alvinalexander.com/linux/unix-linux-proce ...
- VB读写INI文件的四个函数以及相关API详细说明
WritePrivateProfileString函数说明 来源:http://blog.csdn.net/wjb9921/article/details/2005000 在我们写的程序当中,总有一 ...
- HBase 学习笔记---守护进程及内存调优
1.HMaster HMaster的任务前面已经说过了,两个大方向:一.管理Hbase Table的 DDL操作 二.region的分配工作,任务不是很艰巨,但是如果采用默认自动s ...
随机推荐
- ccf 201503-5 最小花费 这题交上去只有10分嗨!求大佬的题解啊
问题描述 C国共有n个城市.有n-1条双向道路,每条道路连接两个城市,任意两个城市之间能互相到达.小R来到C国旅行,他共规划了m条旅行的路线,第i条旅行路线的起点是si,终点是ti.在旅行过程中,小R ...
- L1-Day15
1. 我记得昨天锁门了呀.(什么关系?“记得”后面,如果接动词,那动词该是什么形式?) [我的翻译]I remembered locking the door yestarday. [标准答 ...
- Doom HDU - 5239 (找规律+线段树)
题目链接: D - Doom HDU - 5239 题目大意:首先是T组测试样例,然后n个数,m次询问,然后每一次询问给你一个区间,问你这个这段区间的加上上一次的和是多少,查询完之后,这段区间里 ...
- jquery获取value值时将数字型字符串前面的0自动截取处理方法
<li class="cwhite" value="02" id="02" onclick="getQuestionList ...
- 示波器X1探头和X10探头
示波器探头有X1和X10档,当测量一个信号时应该如何选择? 1.先我们看它们的区别? X1档,表示信号没有经过衰减进入示波器 X10档,表示信号衰减10倍进入示波器(当示波器也设置为X10档,直接读数 ...
- 20175214 《Java程序设计》第9周学习总结
20175214 <Java程序设计>第9周学习总结 本周学习任务总结 1.根据<java2实用教程>和蓝墨云学习视频学习第十一章: 2.尝试将课本重点内容用自己的话复述手打: ...
- java异常,异常处理,异常类 关键字:throws 和 throw 自定义的异常类
package cn.kecheng; import java.util.Scanner; /**异常:异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序 异常处理机制:java中 ...
- 移动端web app开发学习笔记
移动web和pc端web以及web app 移动web开发跟web前端开发差别很小,使用的技术都是html+css+js.手机网页可以理解成pc网页的缩小版加一些触摸特性.在浏览器中进行的网页开发,最 ...
- CentOS7各个版本镜像下载地址
# CentOS7.6 下载地址 # CentOS-7-x86_64-DVD-1810.iso CentOS 7.6 DVD 版 4G http://mirrors.163.com/centos/7. ...
- 学习笔记_J2EE_Mybatis_01_mybatis入门
mybatis入门 1.概述 因为觉得自己写的概念信息未必比别人好,而且这些理论知识了解就好,内核信息还是要看源码.所以从相对权威的百度百科转载了基本信息,也因此它的真实性是经过检验的. 1.1 什么 ...