很多朋友想了解关于writeprocessmemory的一些资料信息,下面是www.lmhack.com小编整理的与writeprocessmemory相关的内容分享给大家,一起来看看吧。
BOOL WriteProcessMemory(HANDLE hProcess,// 进程的句柄。
文章目录:
首先其声明如下:
BOOL WriteProcessMemory(
HANDLE hProcess, // 进程的句柄,是用OpenProcess打开的
LPVOID lpBaseAddress, // 要写入的起始地址
LPVOID lpBuffer, // 写入的缓存区
DWORD nSize, // 要写入缓存区的大小
LPDWORD lpNumberOfBytesWritten // 这个是返回实际写入的字节。
);
如果你要改写目标进程的一段内存,可以类似这样
char *buffer="abc";
DWORD dwBytes=0;
WriteProcessMemory(hProcess, 0x00400000, buffer, 3, &dwBytes);
如果是整型的,就是
int value=3454354;
DWORD dwBytes=0;
WriteProcessMemory(hProcess, 0x00400000, &value, sizeof(value), &dwBytes);
其中的起始地址我是随便写的0x00400000, 实际应用时,填成实际值。
不能直接p=(DWORD*)(*p+0x768);,要用ReadProcessMemory,因为你不是在你写的这个程序用指针读取你写的这个程序自己的数据,而是通过另一个程序的指针来读另一个程序的数据……
WriteProcessMemory
VB函数原型:
Declare
Function
WriteProcessMemory
Lib
"kernel32"
(ByVal
hProcess
As
Long,
ByVal
lpBaseAddress
As
Any,
ByVal
lpBuffer
As
Any,
ByVal
nSize
As
Long,
lpNumberOfBytesWritten
As
Long)
As
Long
作用:写内存
说明:
hProcess
,
进程的句柄
lpBaseAddress,
写入进程的位置(地址)
lpBuffer,
数据当前存放地址
nSize,
数据的长度
lpNumberOfBytesWritten,实际数据的长度
nSize以字节为单位,一个字节Byte等于8位
基本数据类型的长度
ShortInt
8位
=
1Byte
SmallInt
16位
=
2Byte
Integer
16位
=
2Byte
LongInt
32位
=
4Byte
Word
16位
=
2Byte
LongWord
32位
=
4Byte
Boolean
8位
=
1Byte
WordBool
16位
=
2Byte
LongBool
32位
=
4Byte
比如要写入Integer类型的数据,那么Integer长度2Byte
所以nSize
=
2
以上就是小编对于writeprocessmemory的相关信息的介绍,希望能对大家有所帮助。
本文到此结束,希望对大家有所帮助呢。