想写的是植物大战僵尸阳光值修改器,但是俺把阳光值设定恒为200,囧……
用delphi实现,主要用到的API函数是:CreateToolhelp32Snapshot,Process32First,Process32Next;OpenProcess,ReadProcessMemory,WriteProcessMemory。
思路如下:
先用CreateToolhelp32Snapshot函数获取系统当前进程列表,然后逐一比较,取得‘游戏进程.exe’的pid,然后用此pid调用OpenProcess函数,获取进程句柄,得到句柄后就能通过ReadProcessMemory,WriteProcessMemory对进程内存进行读写了。
附上全部代码:
写内存修改器的重点在于要知道游戏中相关数值的内存地址,我没有自己用CE去分析(因为俺不懂得分析),我参考了这个帖子中提供的地址:http://topic.csdn.net/u/20100225/14/DCA02E6C-2A96-431A-8F42-AA2A540A96BA.html
最后要强调的一点是:Windows为每一个进程提供了4G的内存空间——虚拟的独立空间,所以,对每一个程序而言,其内部同一数据在不同电脑上的内存地址是相同的,而不管所使用的电脑内存条有多大。
但是当游戏数据采用动态内存存储时,即使在同一台机器上不同次运行,数据所在的内存地址也不一样,但是还是有方法可以找到数据地址的,具体请参考此介绍:http://www.zuowg.com/wg/wg2/24.html
两天完成,暂时不做修改了,歇歇先!