http://blog.csdn.net/jianxia_wzx/article/details/7795700
转载请注明出处!!!谢谢!!!
在玩游戏的时候,很多人还是喜欢用修改器的(本人一样哈)但是很多网上下的修改器,要么不能用,要么有毒,很不爽,因此还是自己动手丰衣足食吧。下面就以植物大战僵尸为例,一步一步教大家写植物大战僵尸的修改器。
首先大家应该对进程有一定的认识。说下大体思路吧,我们知道一个进程在运行时系统会分配一定的内存供这个进程存储自己的数据,因此我们修改某个进程的数据就应该从这个进程的内存区域去修改,因此首先我们要获得这个进程的内存区域,怎样获取呢?一会说。在得到进程内存之后,我们知道在玩某一关的时候,阳光这个数值是在某一个内存地址上面存储,当阳光值改变也是对这个地址的数据进行操作,因此我们可以这样做,假设开始我们阳光值为x,对这个进程内所有数据进行便利去选择所有存储的值为x的内存地址我们可能会找到很多,然后变化一下阳光值变为y,然后在刚才存储x的地址去寻找所有存储值为y的地址。如果还有很多地址,在变化阳光值进行寻找,这样总有那么一天我们会找到唯一的一个地址哈(一般不会超过四次寻找,所以大家不用怕滴),当然这个地址就是我们存储阳光的地址啦。然后对这个地址进行赋值,随意赋值啦,怎样赋值呢?一会讲。
好了,现在我们大体明白我们要怎么做了。下面具体实现
1、寻找我们的进程。
当然我们进程的名称就是“植物大战僵尸.exe”啦,注意后面一定要有.exe。怎样去寻找这个进程呢?当然是用ToolHelp函数完成啦,先用CreatToolHelp32Snapshot函数创建一个进程快照,然后采用Process32First和Process32Next函数一次将每个进程信息读到一个PROCESSENTRY32的结构体里面,这个过程在进程操作—查看进程优先级文章里面详细说了,这里就不多说了,但是我们发现里面没有进程的句柄!!!而后面的操作都是以进程句柄来进行操作的,因此我们必须找到这个进程的句柄,找进程句柄采用OpenProcess()函数,这个函数功能就是打开一个进程号为XXX的进程并且返回它的句柄,因此我们只需要用ToolHelp函数找到这个进程的ID,然后传给OpenProcess函数就可以返回我们需要的进程句柄了。具体实现如下:
找进程ID
找打进程ID后寻找进程的句柄、
这样我们就抓住这个进程啦!!!
2、搜索内存
这个关键的一部分,我们知道我们肯定不止一次的进行查找,然而第一次查找与其他不同,第一次是在进程所有内存空间进行查找,因此时间比较长,后面几次查找的时候只需要在前一步的记录的那些“可疑”的地址里面查找就行了,因此需要另写一个函数。为了实现这些功能,我们定义几个全局变量//记录植物大战僵尸进程的ID
DWORDtProcessID;
DWORDg_arList[999999];//地址列表
intg_nListCnt=0;//有效地址个数
然后进行操作。
我们知道我们得操作系统是采用分页存储的技术每一页大小是4KB,因此我们每一次查找时应该每次读取进程内存的一页来进行查找。然而从哪里开始呢?Windows98系统预留的是4MB到2GB的空间,Windows2000型提供的是64KB到2GB,因此在开始搜索的时候应该确定我们操作系统的版本。我们采用GetVersionEx函数进行确定结果放到一个OSVERSIONINFO的结构体里面,具体实现如下:
在第一次查找的时候我们应该一页一页的进行搜索,然后在这一页查找是否有我们查找的值,有的话记录下来,然后查找下一页,以此类推。实现如下:
在第一查找的函数里面不停地调用这个函数就可以啦。如下:
在找到一些可疑的地址后,然后修改数值,进行下一次寻找,知道确定出最后一个地址未知。如下:
3、修改内存
在找到我们要找的地址后,就剩最简单一步啦,就是修改内存,我们只需要使用WriteProcessMemory()即可修改内存。//记录植物大战僵尸进程的ID
DWORDtProcessID;
DWORDg_arList[999999];//地址列表
intg_nListCnt=0;//有效地址个数
为了方便我们查看程序我们可以将找到的地址打印出来
上面就是我们植物大战僵尸修改器的具体过程怎么样,简单吧!!!看看效果吧!!!
分享到:
相关推荐
手把手教你写 SQL Join 联接 手把手教你写 SQL Join 联接 - Defonds 的专栏 - CSDN博客手把手教你写 SQL Join 联接 - Defonds 的专栏 - CSDN博客
手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F28335 手把手教你学DSP:基于TMS320F...
手把手教你写批处理 电子书教程打包分享 快下载看看吧
扩展卡尔曼滤波器的原理以及C语言实现
敏哥手把手教你写asp留言本敏哥手把手教你写asp留言本敏哥手把手教你写asp留言本敏哥手把手教你写asp留言本
手把手教你学2812,很全面的一本书。电子版,适合初学者学习,
手把手教你配路由器手把手教你配路由器手把手教你配路由器手把手教你配路由器手把手教你配路由器
手把手教你写B端产品PRD.doc
该实例手把手教你写PHP论坛,其中包括在cmd上mysql的基本操作以及PHP和asp在建网站的比较。
手把手教你学28335PDF文档,看了这个确实和2812有了对比
开发者说 _ 手把手教你写卡尔曼滤波器.pdf
手把手教你写au3程序 和 从批处理(bat)转到Au3教程 网吧;宾馆系统;POS机; 网众、锐起、易游、深度、VND、方格子、网络维护、服务器、软路由等
以及在已编写引擎的基础上开发游戏,全书共分10章,主要内容包括游戏引擎简介、数学知识、材质和光照、固定流水线、游戏引擎架构、3D引擎底层封装、3D引擎封装、游戏设计实现、地图编辑器、3D可编程流水线。...
手把手教你DSP配套资料 很有用的资料,用钱买来的资料
手把手教你如何从一无所有到财务自由.pdf
手把手教你学DSP28335高清pdf文件,北京航空航天大学出版社
手把手教你学dsp电子版,文档有标签,一本很好的dsp入门书,希望大家一起学习!
手把手教你用C#制作RPG游戏__罗培羽著是一本很好的国内开发RPG游戏的书籍,可以教会读者如何学会C#做游戏,而Unity3D网络游戏实战游戏开发与设计技术丛书 是在C#基础上,利用Unity引擎开发网络实战游戏,这两本书...
不管你是在行政部门、事业单位,国企,还是在私企,只要是在办公室工作,一定会接触到公文处理的相关事务。红头公文作为一种有法律效力的文书,其规范性尤为重要,而国家对红头公文格式的要求也非常严格。
手把手教你写跳跃类游戏(3) 第三次教程源码