仓鼠游戏修改器教程.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
仓鼠游戏修改器教程

仓鼠游戏修改器教程——基础篇 本文来自: UPK 软件安全社区 作者: 仓鼠小布 日期: 2009-1-14 22:52 阅读: 3563 人 收藏 呃,写了大半年游戏修改器了,发觉自己没啥动力再写下去了,怎么说呢,虽然0day 的破 解组织给了我们很多破解,但是我更喜欢做像ARTeam 那样写教程比放破解更多的人,所以 就写几篇教程吧,顺便骗点钱,穷啊Y_Y 。 PS :这里的游戏修改器是特指单机游戏修改器,本人从来不玩网游,自然也不会去研究网 游外挂的写法,所以这篇,还有以后我写的所有的教程都是指单机游戏的,各位写网游外挂 的大牛就飘过吧。 这篇文章是基础篇,自然是写给有编程功底,想写游戏修改器黑一下游戏的人了,大仙啊, 牛人啊,就飘过吧。 写教程之前先推荐几篇别人写的教程,个人感觉这些文章会对你有非常大的帮助,其中包括 如果寻找应该patch 的代码,还有如何编写修改器,当然我也会就着这些教程,给大家讲解 我的理解,以及我自己的思路和代码,当然也会对其中某些不好的地方进行指出,防止大家 多走弯路,教程是这样的:几篇cheathappens 的英文教材,这几篇是教你如何寻找patch 的 代码的,看雪上面的六篇关于修改器的文章,都是关于如何写修改器的,希望大家仔细阅读, 会对你有好处的。 Cheathappens : /tutorials.asp 看雪: /showthread.php?t=10945 /showthread.php?t=10522 /showthread.php?t=43582 /showthread.php?t=66624 /showthread.php?t=66625 /showthread.php?t=66626 好了,废话说多了,正式开始吧。 游戏修改器是什么,无非就是修改游戏内部数据,把钱啊,命啊,锁死,让你的主角千千岁, 万万岁,要用的API 无非也就是ReadProcessMemory 和WriteProcessMemory ,修改器的原 理其实就是动态SMC 在游戏上的应用,要Read 和Write 游戏Process 的Memory,我们必 须获得游戏的句柄,在上面看雪的教程里面,有两种获得游戏进程句柄的方法,一个就是用 FindWindow 获得窗口句柄,再用窗口句柄获得进程句柄,另外一个方法就是用 CreateToolhelp32Snapshot 给进程来个快照,一个个对比一下,哪个是游戏进程,是的话, 获取他的句柄,这两个方法,我下面都会实现一边,方便对大家讲解。 说道实现,这里先叉一下,写修改器,其实就是对内存的操作,经常是指针啊整数啊到处转 换,所以我个人推荐大家使用c++,dephi 或者asm 这些个语言来编写,vb 没有指针感觉用 起来怪怪的,而c#要使用API ,那个简直就是要命,所以下面的代码我会用c++来写,dephi 我不会。。。。不过个人感觉 c++毕竟不是最适合写修改器的,这篇只是基础教程,先用 c++ 给大家热身一下,以后的教程,我会用asm 来实现,到时候大家就会感到精妙了。 这里我是新建了一个 CTrainer 类,下面是根据查找窗体句柄来获取进程句柄的方法:void CTrainer::HookGame(CString ClassName,CString TitleName) { //定义一个变量用于存放进程PID DWORD nProcessID; //查找窗体句柄 HWND hGameWnd = ::FindWindow(ClassName,TitleName); if(hGameWnd) { //根据找到的窗体句柄,将进程的PID 放到nProcessID 里面 ::GetWindowThreadProcessId(hGameWnd,nProcessID); //OK ,根据PID 获得进程全部权限的句柄 m_hProcess = ::OpenProcess(PROCESS_ALL_ACCESS,FALSE,nProcessID); if(m_hProcess) { :laySound(_T(chimes.wav),AfxGetInstanceHan

文档评论(0)

hhuiws1482 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档