| 防内/ 外挂的技巧 |
|
| |
|
|
防外挂从玩家注册的那一刻就要做起了。不要使用通用的ASP/PHP注册页面,自己写一个,不论注册者填写了几位的密码,注册页面会自动用一个常量补满至15位数,这样该用户的真实密码就不是他/她注册的那个了。这是第一道防御体系。光这样是不行的,为什么呢?用户输入密码的时候就会出现错误提示。我们还要写一个登录器,对于客户端进行HOOK,截获密码发送封包,然后按照注册时的规则补齐,这样就不会出现问题了。同时,登录器还需要监视系统中的进程,获得他们的句柄,一旦发现内挂内挂进程马上杀掉,并且登录器Halt。这样就可以防止玩家用内挂。这个是内挂防御体系。经过以上2个体系,基本上杜绝了菜鸟和小虾们在你的服务器上用挂挂:用外挂,密码不对(因为他们知道的那个密码并不是实际密码);用内挂,也不可能。还没HOOK就给登录器杀了。但是这样还是防不了一些老鸟大虾,好歹也是混了这么多年滴,拿出WPE这样的玩意,截获登录游戏时候发出去的真实密码,哈哈,不多会就挂上了。或者把内挂改改,句柄名字变了,你的登录器就成了摆设了,只好拿出终极招数:改封包和Attach进程改端口。加速内挂实际上就是修改指定技能的封包,实现“霸王硬上弓”,把相关技能的封包改了,内挂也就没有用处了。但是这个时候外挂仍然还可以登录,只要不使用技能,绝对还是一切正常。那么就要拿出绝杀了:在客户端启动的时候Attach一个进程,修改人物服务器的端口指向,比如我的主服务器端口是6900,然后我再开一个假的人物服务器,里面不储存任何数据,端口假设是8765,同时还要单独一个开启真正的人物服务器,假设端口是8700。在主服务器的配置文件里面的人物服务器端口指向假人物服务器,这样他使用外挂登录你的服务器就无法选择人物了,游戏无法继续(好象还没有那个外挂可以创建人物的吧?或者更狠一点,设定假人物服务器指向的地图服务器的端口是一个未开放的端口,这样即使他创建了人物也还是没法游戏。)只需要Attach的那个进程帮助客户端指向正确的端口即可。
Q:在客户端启动的时候Attach一个进程,修改人物服务器的端口指向,比如我的主服务器端口是6900,然后我再开一个假的人物服务器,里面不储存任何数据,端口假设是8765,同时还要单独一个开启真正的人物服务器,假设端口是8700。在主服务器的配置文件里面的人物服务器端口指向假人物服务器,这样他使用外挂登录你的服务器就无法选择人物了,游戏无法继续(好象还没有那个外挂可以创建人物的吧?或者更狠一点,设定假人物服务器指向的地图服务器的端口是一个未开放的端口,这样即使他创建了人物也还是没法游戏。)只需要Attach的那个进程帮助客户端指向正确的端口即可。
这段能教我们怎么具体做吗?用啥程序做
A:这个原理其实也很好理解,现在的外挂(包括游戏客户端)都是通过连接主服务器时获得人物服务器和地图服务器的端口的,但是你在主服务器里配置的端口是8765,但是8765端口的人物服务器是空的(干脆不开8765,让它空着,这样就无法连接)。但是使用专用的登录器,它会HOOK客户端,“帮助”它连接正确的人物服务器端口。昨天说得比较笼统点。今天讲清楚了。
Q:然后netstat -a呢?
A:netstat -a看到的是的确是人物服务器端口,但是你有看到目前哪个外挂支持定义人物服务器端口的嘛?只有定义主服务器端口的吧?而且我已经说了,想必大家都知道,不论是客户端还是外挂,都是通过连接主服务器获得人物服务器的端口的啊,但是我们在住服务器里设置的人物服务器的端口是不存在的啊,不论他外挂还是别的客户端都没办法连接的。这就是需要登录器的原因,对客户端进行HOOK,“帮助”它连接正确的人物服务器端口。同时客户端运行后,登录器和客户端就成为互相守护的进程(借用LINUX的说法),一旦在客户端运行中登录器被关掉,登录器就立刻杀掉客户端,这样他们就是形影不离了。如果还有必要,还可以修改客户端,检测它的父进程,不是WINSHELL或登录器,马上HALT。(好象越讲越复杂了,都搞到Anti-DEBUG了,呵呵)。以上只是抛砖引玉,盼各位高手发表更好之方法,大家互相学习,提高。 |
 |
频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。
| 原始作者:佚名 |
录入时间:2007-3-31 3:59:29 |
| 信息来源:不详 |
投稿信箱:itqoo@126.com |
|
|
 |
|
|
| 教程录入:itqoo 责任编辑:itqoo |
|
上一个教程: A3一些资料整理
下一个教程: RO私服的现状 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |