vb.net ReadProcessMemory使用方法

网上好多关于ReadprocessMemory, WriteprocessMemory使用方法的贴子都不能用,下面是本人亲自测过可用的,望对大家有用。

,,,& # 39;& # 39;& # 39;& lt; summary>
,,,& # 39;& # 39;& # 39;读取内存地址
,,,& # 39;& # 39;& # 39;& lt;/summary>
,,,& # 39;& # 39;& # 39;& lt;参数名称=癶Process"祝辞进程句柄& lt;/param>
,,,& # 39;& # 39;& # 39;& lt;参数名称=發pBaseAddress"祝辞内存地址& lt;/param>
,,,& # 39;& # 39;& # 39;& lt;参数名称=發pBuffer"祝辞数据存储变量& lt;/param>
,,,& # 39;& # 39;& # 39;& lt;参数名称=皀Size"祝辞长度sizeof (lpBuffer) & lt;/param>
,,,& # 39;& # 39;& # 39;& lt;参数名称=發pNumberOfBytesRead"祝辞读取长度& lt;/param>
,,,& # 39;& # 39;& # 39;& lt; returns> & lt;/returns>
,,,& # 39;& # 39;& # 39;& lt; remarks> & lt;/remarks>
,,,声明函数ReadProcessMemory自由“kernel32.dll"(按值传递hProcess整数,按值传递lpBaseAddress IntPtr,按值传递lpBuffer IntPtr,按值传递nSize整数,ByRef lpNumberOfBytesRead为整数),布尔

,,,, & # 39; & # 39; & # 39;& lt; summary>
,,,& # 39;& # 39;& # 39;写入内存地址
,,,& # 39;& # 39;& # 39;& lt;/summary>
,,,& # 39;& # 39;& # 39;& lt;参数名称=癶Process"祝辞进程句柄& lt;/param>
,,,& # 39;& # 39;& # 39;& lt;参数名称=發pBaseAddress"祝辞写入进程的内存地址& lt;/param>
,,,& # 39;& # 39;& # 39;& lt;参数名称=發pBuffer"祝辞数据存储变量& lt;/param>
,,,& # 39;& # 39;& # 39;& lt;参数名称=皀Size"祝辞长度sizeof (lpBuffer) & lt;/param>
,,,& # 39;& # 39;& # 39;& lt;参数名称=發pNumberOfBytesWritten"祝辞实际数据的长度& lt;/param>
,,,& # 39;& # 39;& # 39;& lt; returns> & lt;/returns>
,,,& # 39;& # 39;& # 39;& lt; remarks> & lt;/remarks>
,,,声明函数WriteProcessMemory自由“kernel32"别名“WriteProcessMemory"_
,,,,,,,(按值传递hProcess整数,按值传递lpBaseAddress IntPtr, _
,,,,,,,,按值传递lpBuffer字节(),按值传递nSize整数,按值传递lpNumberOfBytesWritten IntPtr)如布尔

声明函数OpenProcess自由“kernel32.dll"(按值传递dwDesiredAccess整数,按值传递bInheritHandle整数,用来按值传递dwProcessId整数)作为整数


,,,朋友Const PROCESS_ALL_ACCESS=, H1F0FFF=2035711
,,,朋友Const PROCESS_VM_READ=, H10
,,,朋友Const PROCESS_VM_WRITE=, H20


,私人子Button1_Click(按值传递发送方系统。对象,按值传递e System.EventArgs)处理Button1.Click
,,,,,,,昏暗的hw Integer=OpenProcess (PROCESS_VM_READ,假的,4304)
,,,,,,,昏暗的getstr(12)字节
,,,,,,,昏暗的GetStrIntptr=元帅。UnsafeAddrOfPinnedArrayElement (getstr 0)
,,,,,,,Button1。文本=岸两峁?“;,ReadProcessMemory (hw CType(及H4D45A0 IntPtr) GetStrIntptr, 12日0)
,,,,,,,TextBox1。文本=Marshal.PtrToStringUni (GetStrIntptr)
,,,,,,,TextBox3。文本=爸?“;,每个盘
,,,,,,,CloseHandle (hw)
,,,子
结束的需要注意:readprocessmemory的lpBuffer放的地数组地址的基址,需要用元帅转化一下.Marshal.PtrToStringUni (GetStrIntptr)输出内容。


,,,私人子Button2_Click(按值传递发送方系统。对象,按值传递e System.EventArgs)处理Button2.Click
,,,,,,,昏暗的hw Integer=OpenProcess(及H1F0FFF,假的,4304)
,,,,,,,昏暗的Wrtstr(12)字节
,,,,,,,Wrtstr=System.Text.Encoding.Unicode.GetBytes (“vbWrit")
,,,,,,,Button2。文本=靶唇峁?“;,WriteProcessMemory (hw CType(及H4D45A0 IntPtr) Wrtstr, 12日0)
,,,,,,,TextBox3。文本=爸?“;,每个盘
,,,,,,,CloseHandle (hw)
,,,终止子

vb.net ReadProcessMemory使用方法