游戏外挂杂谈(

 

HTML Tags and JavaScript tutorial


<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>
游戏外挂杂谈(


div>

 
游戏外挂杂谈 (第0篇)
1、熟悉windows系统。针对目前网络游戏的现状,基本所有的网络游戏客户端都是以windows为平台的,所以要做外挂windows一定要熟悉。这种熟悉不是指操作的熟悉,而是要对一些windows的实现机制要有了解,并且对于不同版本的windows的区别要有了解。比如在win2000中用CreateRemoteThread的方法可以很方便的把dll挂接到其他进程中,而win98就不行。所以如果你用CreateRemoteThread做外挂,那么就不具备win98的兼容性。windows的内核还是很复杂了,而且方面也比较多,作为外挂来说有几方面需要清楚比如进程管理方式,dll管理方式,内存管理方式。在这个方面我想《windows核心编程》是不二的选择。
2、一种适合的编程语言和工具。很多关于语言和工具的争论其实是没有含义的,每种语言都有自己适合的地方,简单的例子不管java是不是很优秀,用它来开发外挂基本是不可能的(除非代理服务模式的服务端)。我认为C++应该是很好的选择,而工具也推荐用vc,当然delphi也不错但我觉得还是没vc适合,个人观点。至于vb,大家还是别用来开发外挂吧,真的不适合。书的话比较多,找两本经典的看看就ok了。
3、win32 sdk。这个是不可少的,因为要涉及windows的一些内核方式的开发,还有涉及到游戏程序的跟踪,不懂win32 sdk那么开发中会有种寸步难行的感觉。如果是用vc开发,我想应该用sdk而不应该用mfc。推荐的书,《windows程序设计》和msdn,程序设计是让你知道win32 sdk开发的基本过程,而到后期查看msdn会很频繁。
4、程序跟踪。对于包的加密,一般来说仅观察包的变化来破解可能性很小,所以要去程序中找到加密过程,还有一些程序中本身的保护机制的破解也需要跟踪程序。推荐的工具ollydbg,推荐的书看雪学院的《加密与解密》。
5、socket编程。有两个地方需要用到socket,一是在外挂程序本身需要收包发包,一是在验证服务程序的开发中需要。推荐的书,这个方面我看的书不多,都是零散的学的,也说不出什么好的书来,大家可以补充。
6、熟悉unix编程。验证服务程序如果要跑在unix linux服务器上,那就需要熟悉这个方面了。实际上我是不熟悉的,但我熟悉java,我的验证程序是用java写的,所以无论服务器的平台了,这个就是java的优势,至于效率问题我没考虑那么多因为只是验证,运算量并不大。
7、数据库编程。验证服务中需要涉及用户管理,最好的方法当然是用数据库了。我开发外挂是完全个人的,虽然熟悉一些数据库方面的编程,但因为时间不允许采取了文本方式。其实也不是很复杂,主要就是不同数据库的连接方式,剩下的就是sql语言了。
8、汇编语言。跟踪程序看到的都是汇编,不了解汇编是不行的,而且当跟踪到加密过程后还需要把过程翻译成C语言。基本上需要读懂汇编语言,不需要能熟练的用汇编语言编程。书的话看那本清华的《IBM 汇编语言》就ok了,书名可能记错了,看的时间太久了。注意的是大部分汇编书都是比较老的,和现在的有区别,比如以前是16位寄存器而现在的是32位的,但只要看懂实现方式和基本语法就可以了。
9、加密。验证服务中传送的数据是应该加密的,否则明文传输等于没做验证,推荐RSA非对称加密方法。还有本身的外挂程序也要做加密加壳,推荐的书看雪学院的《加密与解密》。
10、界面开发。呼出界面要做的好看也不是很容易,要花时间,我在这方面就比较差,希望能向大家学习。
11、改写游戏界面。比如直接在游戏屏幕上写字什么的,这方面要懂directx,我不会正在学习。
12、html asp jsp等等。这个是做网站用的,不多说了,asp jsp是做动态的比如论坛,但现在基本都是用别人写好的论坛,如果不是特别要求这个也就不需要了。
开发外挂是一种很考验一个人广度的项目,在某些方面还需要具备一定的深度,做外挂不说别的对一个人的个人能力的提升也是很有帮助的。当然不是非要一个人把这些技能都掌握,如果作为团体开发只要找到合适的伙伴各有所长开发出的外挂将更精彩,我就没有这样好的合作伙伴,觉得有些遗憾。
游戏外挂杂谈 (第1篇)
 
时间:2003-10-27 21:41:19 来源:思想软件工作室 阅读2637次 
   
谈到外挂,我算是赶了趟末班车。以我来看网络游戏的鼻祖是mud,而外挂的鼻祖是mud中机器人。玩过mud的估计都用过机器人,由于mud是用文字命令的,所以机器人的实现比较简单,而且灵活性比较大,我所说的灵活性是指用户可以根据自己的需要定义自己的机器人,自己定义好后由mud客户端(带机器人功能)自动填写,这样就实现了挂机练级别。
2001年后以传奇为代表的图形网络游戏在大陆开始迅速升温,2001年下半年人们突然发现网络游戏突然成为国内互连网业最另人惊喜的行业,因为网络游戏的收费非常顺利,那些提供了几年的免费新闻免费邮箱的除了广告找不到盈利点的互连网公司找到了救命稻草,2002年开始一波又一波的游戏代理热情一直延续到现在。而也是2001年下半年开始外挂开始出现,一开始主要是免费为主,但到了2002年上半年外挂制作者发现同网络游戏一样除了不能走正规的点卡销售模式外外挂的销售也异常顺利,而与此同时外挂的破解也接踵而至。外挂制作者们逐渐在2002下半年开始了商业运行,有些外挂已经可以看出来并非个人所谓,团体制作模式突显,同时开始出现同业竞争,销售代理机制开始出现。2003年后外挂开始有形成产业的迹象,国家开始重视,有关单位将外挂的发行定性为非法出版物。2003年8月国内最著名的面向程序员的网站csdn开始关注游戏外挂,在9月的开发高手首期中大篇幅的介绍游戏外挂,使游戏外挂再次成为程序员关注热点。
我是在今年上半年开始进入游戏外挂这个有趣的领域,经过半年的学习和实践也算有所收获,因为功力以及时间的问题,我没办法详细规划我要说的内容,所以只能采取杂谈的方式进行介绍。需要注意的是,我的介绍基本不会有具体的实现方法,只是对外挂技术有个综合的介绍。
第一篇应该写到这里也就差不多了,但考虑到吸引大家兴趣的缘故,我接着写点实际的内容,否则二估计就没人愿意看了。
首先我介绍一下外挂的制作大体的分类:
1、按键精灵一类。这一类外挂发送键盘鼠标的消息给程序,比如左右鼠标键连击功能。这样的东西现在基本没有了,有也觉得没人好意思卖钱。
2、按键精灵加强类。这一类的程序员有些基本功底,他们找出一些内存数值,比如血值蓝值,并在自己的程序中监视这些值,当这些值低于设定值通过发送游戏本身拥有的快捷键消息实现自动加血自动补蓝。同样这样的外挂也很少了。
3、包截取分析类。通过各种个样的方式截取包,截取的方式真的很五花八门,有到底层去拿的,有挂接recv send拿的,也有自己写一个截取用的winsock.dll欺骗游戏程序的。这种通过分析数据包并发送定制数据包可以实现基本全部的外挂功能。这个方式同时要解决的是大部分游戏传送数据已经开始复杂加密,所以有个解密的过程。
4、挂接游戏客户端关键函数入口。这种类型挂接的函数入口一般是游戏接收数据发送数据的入口,注意不是recv和send的入口,那个是win api而不是游戏的收发入口。通过跟踪客户端我们可以得到游戏的收发函数入口,这些入口传入的数据或者传出的数据都是没加密的,加密是在函数中完成,这样就可以避开解密的过程。当然既然找到函数入口那也可以找到加密解过程,只要把加解密过程提出来转成C语言写的也可以用3的方式来做外挂。但因为传送的数据不只是加密,而且在数据之间还存在一些保持逻辑关系的字段,这样的话光拿加解密函数还是不够的,还要找出逻辑关系,这样的话用4这样的方式就不需要考虑了。我就是用这样的方式。
5、服务模式。这一类实际上是3,但最大的不同是,他自己建立一个本地服务器,然后将游戏的连接地址改到本地,他在中间实现一个转发和分析以及发伪包的工作,而不是hook到游戏进程中进行包的分析和发送。这样的模式有三点好处 A 网络游戏升级还是比较快的,传统hook到进程中的方式经常要修改一些游戏中的特定地址的内容特别是4的方式,所以经常出现游戏升级外挂就不能用的现象,而服务模式只要数据加解密方式不变一般是不会出现类似现象。 B 容易制作出脱离原客户端外挂,实际上也就是可以自己写客户端了。C 无需为2000 和98之间的不同而苦恼,两种系统的内核差比较大,传统方式容易遇到一些兼容性的
 
游戏外挂杂谈 (第2篇)
时间:2003-10-27 21:44:12 来源:思想软件工作室 阅读2541次 
   
外挂有两种,一种是收费一种是免费,但最后免费的总会变为收费,否则就慢慢的消失了。所以我就来谈收费外挂需要哪些要素,如果你以为自己肯定只是爱号者那就跳过和收费相关的介绍。
做一个收费外挂需要做哪些模块呢?我之所以说模块,是因为收费外挂的开发完全可以看成是一个项目,这个项目中有些模块是必需的。
1、外挂程序本身
2、外挂验证服务程序
3、外挂加密
4、网站支持
我们先从最简单的网站支持说起,网站是用来宣传外挂的,一个制作精良的网站以及一个人气旺盛的论坛容易取得客户的信任。外挂应该说是一种共享软件,但他很特殊,因为他是寄生在网络游戏上的,网络游戏中的客户帐号是一种虚拟财富,很多游戏玩家都非常看重,他们害怕使用一些欺骗性的程序导致帐号的丢失,所以取得用户的信任是非常重要的,特别是存在同业竞争的情况下。可能很多程序员都不是很看的起网站上的开发,但对于收费外挂项目来说网站的开发是必须的,而大多数程序员的网站真的很糟糕。在介绍完整个开发过程后,我会总结一个技能列表,如果是个人开发那可能需要都去涉猎,如果想团体开发那就要找到适合的人。
 
现在开始进入程序员比较关心的外挂主程序的介绍,在(一)中介绍前两种模式我不想多介绍了,只要理解了hook技术,实现左右键连击这样的功能还是不难的,至于监视内存数据完全可以通过fpe类似的工具找到内存地址,然后在程序中监视内存地址来实现一些功能。
后三种模式有些东西是都要做的,我就先介绍他们都需要做的一些事情。
当我们决定开发一个游戏外挂的时候,首先必须了解这个游戏,一个月的游戏时间估计是少不了的。当自己熟悉这个游戏,而且发现这个游戏确实具有开发外挂的价值,我们就可以动手了。
1.获取包。才开始的时候我们可以用sniffer去简单的看看包文,在一个游戏中人少的地方反复的做一个需要服务器确认的动作,比如把一个东西丢在地下然后再拣起来,观察传出传入的数据包有没有规律。如果看不出数据和动作的关联性,但只要做同一个动作数据包不变化,那么数据应该是加密过但原数据包并没有加入变化因子;如果发现什么规律都没有,而且做同一个动作数据包变化也很大,那么数据是加入变化因子并且加密过的;如果很容易的看出联系,那么后面的事情就简单了,不过这样不加密而且不加变化因子的网络游戏应该很少了。从开发的难度考虑如果发现只是加密而没加变化因子的游戏,应该用第3种模式为佳,如果还有变化因子那么可以考虑模式4。
2、制作自己的分析包的工具。用sniffer并不很好用,还是应该开发自己的分析包的工具,然后按一定格式将得到的数据包记录在文本文件中,这样方便分析数据包。那种到底层去拿的我想不是很必要,对于一般程序远来说难度大了点,包括我自己也不会。我同事用“木马”winsock.dll来拿数据包,将自己做的winsock.dll放到游戏当前目录下去拿包,我的方法是挂接住游戏程序中的recv send来得到数据包。核心编程中有介绍,也就是修改import table,但实际中可能行不通,游戏程序有时候设计成并不是通过it来调用api,这种情况下你需要去找到这个保存api函数指针的地址,然后挂接上去。至于怎么找,我下面就会介绍。
3、寻找加密过程以及一些相关过程。到这里也算是重点了,制作外挂一定要逆向工程比较熟悉。如果你以前做过cracker那么这个过程就相对比较简单,因为我们需要进入游戏进程,跟踪游戏过程找到我们需要的过程。如2中说的,当我们要挂接某个重要函数的时候,我们就需要去跟踪程序找到函数指针。其实说到这里我也有点头疼,因为不是很好说,很多东西需要自己动手才能搞懂。比如我们要找解密过程,那我们应该在recv上设置断点,然后一步一步出来,这个时候需要有耐心并且有一定汇编知识,密切监视recv到的数据看什么时候会被读取,多过几次如果发现某个过程在对recv到数据做循环处理,那么很可能就是解密过程。分析这个过程出来的数据如果发现和游戏操作有联系了,那么恭喜了找到解密过程了。推荐一个工具ollydbg,非常好用的调试工具。
4、分析数据包的逻辑关系。在游戏中做各种动作,用分析包的工具记录下来,进行分析整理。这一步骤很烦人,如果你耐心不好的话,那么就分析一部分数据比如血值,喝血动作,然后往下继续开始做个简单的外挂。
5、有了以上的基础基本就可以开发出外挂了。先做个dll文件所有的逻辑都写在里面,然后写个exe作用就是把这个dll做个全局hook,这样游戏一启动就会被hook进去。然后就是控制过程了,switch case语句大家都该会用把。recv到血少与设定值就触发一个喝血的send动作,这样一个简单的外挂就出来了。当然控制中还有不少问题不是那么简单,并且要做挂机外挂的话控制相对就更复杂,但现在我只是想对外挂开发有个综合的介绍,以后有时间我把一些自己的经验也写一些。基本的逻辑写出来后,就需要做个界面了,这个没什么好说的了,大家也都看过外挂的样子把模仿着做吧。
有关验证服务程序
验证服务是收费外挂要做的,不用我说大家也知道通讯过程应该加密。有两种收费方式,一种是记次收费,还有一种是根据游戏帐号来收费。我认为游戏帐号来收费方式更好点,因为在控制上可以做更多文章。验证次数的如果在登陆时候被破了后在游戏中已经无法再次验证,而帐号的方式在进入游戏后依然还有机会进行验证。验证服务的加密有两点要注意,A 一定要用非对称加密否则一旦被人找出密钥和加密方式,整个外挂就破掉了 B 一定要加入变化因子,比如随机数,这样防止同个用户在过期后通过伪造返回包进行认证。
有关外挂加密
不加密的程序,再好的验证过程也是没用的,只要跟踪到相应过程把return false 改为 return true你所有做的事情就白费了。加壳是必须的,不能偷懒,一定要仔细寻找,有些壳直接用工具就能脱出来加了等于没加。一般来说去google上查一下,如果发现某种壳找不到脱壳工具才能采用,至于一些手动脱壳就没办法了,但不是所有人都有能力做手动的,而且按我的想法来说对于外挂加密只要能保证两个月不被破就ok了,因为游戏要升级外挂也要升级,时刻用最新的壳工具加密自己最新版本的外挂很有必要。不仅要加壳,而且自己也要动脑袋在程序中写一些能反跟踪的代码,这就要靠你自己动脑袋了。

src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值