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 ...
随机推荐
- QMQTT简单介绍(1)
1 准备工具: wireshark安装包:网络抓包工具qmqtt源码:mqtt客户端源码(Qt版本)官网:http://mqtt.org/英文版协议说明文档:http://docs.oasis-ope ...
- .Net 之 RPC 框架之Hprose(远程调用对象)
实现远程调用对象,跨进程访问对象,可实现分布式 首先给服务端和客户端 nuget Hprose 可使用tcp和http两种调用方式 服务端 using Hprose.Server; using Sys ...
- java中的标识符、修饰符、关键字
关键字的特点:1.完全小写的字母,2,在增强版记事本中有特殊颜色 例如@是电子邮箱当中有特殊含义的.被保留的.不能随意使用的字符,关键字. 例如图中public.class.static.void是关 ...
- sqlyog连接mysql8.0
1.本人安装的是mysql8.0社区版,安装包名称:mysql-installer-community-8.0.12.0.msi,可自行到官网下载. 2.安装完成后用sqlyog连接数据库出现密码乱码 ...
- C# Datetime时间指定时区
string start_time_str = "2018-03-21 06:00:00"; DateTime.Parse(start_time_str) // :: 格林威治时间 ...
- 第一天学JAVA,下载JDK,配置JAVA环境变量!!!
步骤一:下载JDK https://www.oracle.com 我们首先进入到这个网站下载我们运行JAVA的所必须的JDK 进入到这个网站按照图示进入到下一个页面 因为刚学JAVA,我们的JDK版本 ...
- python捕获异常及方法总结
调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正:另一方面,有些异常是不可避免的,但 ...
- Mock.js简易教程,脱离后端独立开发,实现增删改查功能(转)
在我们的生产实际中,后端的接口往往是较晚才会出来,并且还要写接口文档,于是我们的前端的许多开发都要等到接口给我们才能进行,这样对于我们前端来说显得十分的被动,于是有没有可以制造假数据来模拟后端接口呢, ...
- 题解-COCI-2015Norma
Problem SPOJ-NORMA2 & bzoj3745 题意概要:给定一个正整数序列 \(\{a_i\}\),求 \[\sum_{i=1}^n\sum_{j=i}^n(j-i+1)\mi ...
- 生成透视列之COALESCE
临时表#t,数据如下: 实现如下数据: 方法一: declare @sql0 varchar(MAX)select @sql0 = isnull(@sql0 + '],[' , '') + Provi ...