发新话题
打印

[SDK/API/系统] API函数WriteProcessMemory

API函数WriteProcessMemory

BOOL WriteProcessMemory(  
 HANDLE hProcess, // 要写进程的句柄  
 LPVOID lpBaseAddress, // 写内存的起始地址  
 LPVOID lpBuffer, // 写入数据的地址  
 DWORD nSize, // 要写的字节数  
 LPDWORD lpNumberOfBytesWritten // 实际写入的子节数  
)

范例

ReadProcessMemory(hProcess, PointerAddr, @PointerVaule, SizeOf(PointerVaule), 0);
妖城欢迎您!

TOP

WriteProcessMemory有好几个参数 其中的nSize怎么设置??

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
妖城欢迎您!

TOP

转个别人的文章

说一下ReadProcessMemory API函数吧
它有五个参数(原型是什么就记不清了,没有开发工具在电脑上)
第一个参数是进程句柄
第二个参数对于我们来说,就是游戏的某个内存地址了(如基本点的东西:红兰的内存地址)
第三个参数就是指定内存地址的值了(如红兰的数值)
第四个参数就是要读取内存地址的大小了
第五个我也不太明白是什么,设置为空,为0就行了

第一第五个没有什么好说的了

ReadProcessMemory(hProcess, PointerAddr, PointerVaule, SizeOf(PointerVaule), 0);

PointerAddr为Pointer类型,值可为 $00400000 之类的值
PointerVaule为Pointer类型,值读出来的一般用Integer转为整形,也可以转为其它型
SizeOf(PointerVaule)读取内存值占用的大小 ,Delphi可以用SizeOf来计算
要说明一下的是,第二和第三个参数,可以设置为整形,那第四个参数就可以为常量4了

为什么呢?Pointer与Integer的占用内存大小是一样的!
????
$00400000占用多少内存字节??
一般你用CE查找那些值用多少内存字节(字)来查找??
Integer占用多少内存字节??

如果你搞不懂,你搞懂了再做GH吧

上面就完了??


没有!!当然没有完,我上面写的东西,你一定编译不过


???

免得论坛就不会有问读内存地址这个问题的帖子了

ReadProcessMemory(hProcess, PointerAddr, @PointerVaule, SizeOf(PointerVaule), 0);

上面的Delphi的方法(自己找,自己看清楚来)

VC/VB就用&或者指针吧

其它语言我很多没用过,就不说了,谢谢大家
妖城欢迎您!

TOP

发新话题