Pencil.C++

更新速度可能会晚于http://blog.csdn.net/bilaopao

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  34 随笔 :: 0 文章 :: 40 评论 :: 0 Trackbacks
■1.FindWindow:这个函数返回游戏窗口的句柄。参数lpClassName为游戏的类名(像neoragex这个模拟器的类名为"neoragex",winamp的类名为"Winamp v1.x"),程序的类名可以用game master 获得或自己编程获得,如果实在得不到的话就设为vbNullstring ;参数lpWindowName 为游戏窗口的标题,如果lpClassName设为vbNullstring的话,这个一定要完整,不然将得不到正确的句柄。
■2.GetWindowThreadProcessId:获得游戏的进程标识符。参数hwnd 是findwindow 返回的游戏窗口的句柄;参数lpdwProcessId 就是函数获得的进程标识符,等一下openprocess 要用到的。
■3.openprocess:用来得到游戏进程句柄,参数dwDesiredAccess 的值决定了句柄对进程的存取权利,要设为PROCESS_ALL_ACCESS(完全存取权限);如句柄能够由子进程继承,则把参数bInheritHandle 设为True,而我们要设为False ;dwProcessId 为所要打开游戏的进程标识符,就是用GetWindowThreadProcessId 获得的那个。
■4.WriteProcessMemory :这个函数可是重中之重呀,它用来写游戏内存中指定地址的值。参数hProcess 是想要写的游戏的进程句柄,就是由上面的openprocess函数得到(你想写neoragex 这个模拟器的内存数据,就必须得到neoragex 的进程句柄,就像你想去银行保险箱取钱,你必须知道究竟哪个保险箱是你的一样); 参数lpBaseAddress 是你想修改的游戏的内存地址,像KOF99中1P 人物生命值的地址的十六进制是567BC0,在VB 中,在数字的前面加&H 表示十六进制,在上面的程序中就是&H567BC0 ;参数lpBuffer 是地址的值;参数nSize 是希望写入lpBaseAddress 的字节数,如果你写入的值是Byte,则应为1 ,如果是I n t e g e r ,则应为2 ,以此类推;参数lpNumberOfBytesWritten 不用管它,一般设为0& 即可。
■5 . R e a d P r o c e s s M e m o r y :这个跟上面的WriteProcessMemory 用法差不多,它是用来读取指定游戏内存中指定地址的值的。
■6.CloseHandle :用来关闭每一个打开的进程句柄。剩下的那些就算是菜鸟都能看得懂,我就不废话了。有了这六个强大的API函数,你还怕铸不出绝世的好“剑”?上面这个源程序只是一个简单的例子,凭大家的聪明才智,肯定能做出更加强大的修改器。
posted on 2009-06-06 16:29 Pencil.C++ 阅读(246) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理