首先声明,本文重在记录写这么一个玩意的过程。因为恢复了系统,所查阅的技术上的资料地址已经丢失,无法贴出来与大家分享,但最后我会附上源码,代码我也已经做了比较详细的注释。为了操作API方便,代码是C++的,程序本身没有什么技术含量,大多内容也都来自网上,文中就不对技术方面过多的解释了,对键盘鼠标模拟关心的朋友直接看代码就可以了。
起因是一个哥们勾引我玩天龙八部游戏,3个月前他开始玩天龙八部,现在角色名字已经出现在排行榜上,他的几个同事也都在玩,无疑这是一个很好的环境,不由的动了心。 通常我会在了解了游戏之后,弄个辅助工具减轻一下工作量,玩征服征途的时候,都弄了个简单的补血补蓝,施放辅助技能,捡东西等,自动打怪还没有做过,这次想尝试一下,最简单的自动打怪是根据颜色来的,按键精灵就可以实现。按键精灵可以根据指定图片找到屏幕上相似图片的位置,对于图片的查找,一直没有搞清楚如何来实现,下过一篇论文,用到了小波变换,也没看懂,汗。不用图片当然也可以,那么这就要根据怪物特征色来判断,特征色就是屏幕上只有怪物才有的颜色。有了这个颜色,我们就可以搜索屏幕坐标的颜色来和这个颜色对比,如果足够相似,那么就可以认为是怪物,也就可以找到怪物的坐标,之后的事情就简单了,Attack之就可以了。
接下来对这个大体思路要细化了,首先如何搜索屏幕坐标,逐行逐列挨个坐标搜索肯定不行,1280*800的分辨率扫描一遍要多久啊。看来不能挨个扫描,那就有个步长或者说是跨度,那么这就有个问题,那如果正好错过了和怪物特征色一样的那个坐标,就漏了这个怪了。那么对于颜色相似的判断,用RGB比较就不如用HUE来比较了,后者使用色调,灰度,饱和度来表示颜色。都是绿色,不管是深绿还是浅绿,他们的色调相差是不大的,也就是H值是差不多的,这样我们用这个来判断坐标在不在怪物身上就方便多了,毕竟我们取得怪物特征色并非只有一个点,一般会有一片都是类似的颜色。并且这样也可以忽略3D游戏中光照对于颜色的影响了。
颜色比较的方案确定了,接下来考虑找怪的扫描方式。以角色为中心,往四周渐开扫描应该是最好的,这样可以找到距离自己最近的怪。在此呢我又多想了依稀,一般游戏都有小地图,小地图上会有角色以及周边怪物的表示,不论什么怪都是相同的标志,并且能看到的怪物也比屏幕上要多,而且小地图范围很小,逐个像素扫描也是很快的,于是考虑通过小地图来找怪,这样就牵扯到两个坐标系转换的问题,一个坐标原点是小地图角色标志,一个是屏幕中心,能把这两个转换过来就好,找怪速度会快很多。事实证实通过小地图直接找怪这个想法不现实,因为坐标的转换只能通过实践出来一个大体的转换比例关系,并不准确,更多的情况是能指到怪物旁面,并不能指到怪身上。那么只好通过以屏幕中心为中心,渐开跨度扫描怪物特征色的扫描方式来寻找怪了。经过测试,效果还可以。
接下来就只剩下鼠标键盘的模拟了,对于鼠标键盘的模拟,最简单的就是mouse_event()和keyboard_event()了,同时结合SetCursorPos()就能搞定了,以前就这么干的。没多久,写好了,简单测试一下,ok了,能用了。晚上回到家,打开游戏,一测试,傻眼了,SetCursorPos还可以用,把鼠标如期放到怪物身上了,但是mouse_event()失效了。不小的打击啊,现在游戏放外挂,一般会屏蔽一些API函数。于是开始狂查资料,因为很少用C++,好多东西都不知道,查游戏如何拦截API,查注入,查如何反np,查如何hook API,还看了《windows核心编程》第19章和第22章关于dll和注入的一些,查模拟鼠标键盘的其他方式。很快 一星期过去了,也该回家过年了,关于api hook部分,会单拿出来一篇文章介绍一个简单的vs2005能编译运行的例子(ps网上能找个能运行又清楚的例子着实花了不少时间)。
年后回来静静心,继续琢磨,到此,我已经用SendInput()这个更底层的API,和WinIO驱动级模拟实现了,但是在游戏中始终不行,网上也说np可以封到内核API,因为WinIO用了特征码,又大名鼎鼎,也可以被np封了。那难道只能写鼠标驱动了么?不会写啊。我开始考虑我的思路出了问题。既然说mouse_event()被封了,那为什么不一起把SetCursorPos()也封了?下载按键精灵,装上,写个简单脚本,进入游戏,一试,再次傻眼,按键精灵竟然可以。又下了快电7,也可以,打开这两个程序的文件夹发现快电7应该用了自己的驱动级模拟,有个sys文件,但是按键精灵文件夹下有WinIO.Dll以及VXD文件,没有相应的Sys文件,dll文件的大小也比我下载的大了十几k,难道按键精灵重写了这个dll?换上按键精灵文件夹中winio的dll和vxd,发现程序可以照常编译运行,拿到游戏下依旧不起作用。难道是因为按键精灵的神盾保护了自己的进程不被注入?想到此,我觉得应该查看以下我的程序是否被天龙八部的保护程序给注入了以拦截我程序调用的API。于是从网上下了冰刃,查看的结果又大吃一惊,程序的进程干干净净,除了被安全卫士和灵格斯注入了以外没有其他任何线程。这就奇怪了,百思不得其解。
昨天,一怒之下下了好几个鼠标键盘模拟工具,有的可以,有的失效。终于有个键盘鼠标键盘记录的小软件引起了我的关注,软件很小,单独一个exe和一个配置文件,文件里有坐标值以及操作WM_LBUTTONDOWN这样的消息,难道用PostMessage()可以吗?试了一下不行,更加困惑了。一边琢磨一边拿他试,忽然发现一个小细节,在重播我鼠标按键操作的时候,按下和弹起的动作很清晰(游戏中鼠标按下鼠标会变样子),一个小手一勾一勾的,而我的程序完全不会看到有任何动作,因为按下和弹起之间没有一点时间间隔。加个时间间隔试试吧,Sleep了0.1秒,一试,天,果然可以了,如果说我这篇文章还有一丁点值得你看的地方也许就在此了,遇到相同问题的朋友不妨在按键按下和弹起的中间加个延迟试试,或许能成功。这个看似很小很没技术含量的操作确着实花了我大部分的时间。做程序有时就是这么有趣。说到这也就没有啥好说的了,程序还不完整只有个大概的基本功能,还有几个地方临时用简单的不完善不雅的方案有待替换。另外对于屏幕没有怪或者怪超出搜索范围的情况,可以用先搜小地图移动到怪物附近再搜大地图的方式解决。
对基于颜色的动作式的外挂的学习和实践就到此为止吧,还有更重要的更有意义的事情去做,最后附上代码,希望对大家能有所帮助。
源码:http://files.cnblogs.com/pcant/tlbb.rar
分享到:
相关推荐
《模仿天龙八部 launcher 登陆器》是一个针对热门网络游戏《天龙八部》的第三方登录客户端,它采用了先进的技术来实现独特的用户界面体验。在这个登陆器中,开发者利用了Flash技术来创建一个支持透明窗体的效果,为...
天龙八部2的数据库,天龙八部2的数据库,天龙八部2的数据库
《天龙八部php后台》是一款专为天龙八部私服游戏设计的后台管理系统,旨在提供高效、便捷的服务器管理服务。这款系统采用PHP语言开发,能够帮助管理员更好地控制游戏环境,进行用户管理、数据监控、游戏设置等一系列...
《天龙八部》是一款基于金庸先生同名武侠小说改编的大型多人在线角色扮演游戏(MMORPG),其完整策划案深入探讨了游戏的核心机制、系统设计和用户体验。以下将从装备系统、等级体系、师徒系统以及任务设计等方面展开...
在深入探讨“天龙八部2系统刷重楼代码”的知识点之前,我们首先需要理解几个核心概念:《天龙八部》是一款深受玩家喜爱的大型多人在线角色扮演游戏(MMORPG),其游戏背景基于金庸先生的经典武侠小说《天龙八部》,...
天龙八部GM工具(易语言)源码 易语言源码
【天龙八部动态表情包】是专门为游戏《天龙八部》的玩家设计的一套丰富多样的表情资源。在网络游戏社区中,表情包扮演着沟通交流的重要角色,它们不仅能够增强文字信息的情感表达,还能让聊天过程变得更加生动有趣。...
《天龙八部音乐提取工具》是一款专为游戏《天龙八部》设计的实用软件,主要用于从游戏的资源包中导出音乐文件。这款工具的出现,为玩家提供了便捷的方式,让他们能够欣赏到游戏中的精彩配乐,甚至可以自定义自己的...
《天龙八部》是一款经典的大型多人在线角色扮演游戏(MMORPG),其源码是游戏开发领域的重要参考资料,尤其对于想要深入理解网络游戏开发的程序员而言。这个完整版的C++源码涵盖了游戏的第一、二部,提供了丰富的...
《天龙八部》是一款经典的大型多人在线角色扮演游戏(MMORPG),深受玩家喜爱。源码是游戏开发的核心,它包含了游戏的逻辑、算法、结构以及各种功能实现。在这里,我们主要探讨的是《天龙八部》游戏的源码,分为第1...
《天龙八部axp文件解包源码》是一份专为游戏开发人员设计的工具,主要用于解析和提取《天龙八部》游戏中的资源包。这款游戏,作为一款深受玩家喜爱的大型多人在线角色扮演游戏(MMORPG),其丰富的游戏场景、角色...
把天龙八部的资源解压后Config文件夹下就是客户端的数据库,用本工具就可以查看,并可以保存为文本文件
《天龙八部网络部分源码》是一份珍贵的资源,专为网络游戏开发人员,尤其是服务器端开发者设计。这份源码包含了《天龙八部》这款游戏在网络通信层面的关键实现,让我们能够深入理解大型在线游戏背后的网络架构和技术...
《仿天龙八部部分源码解析》 天龙八部,作为一款经典的网络游戏,深受玩家喜爱。在游戏开发领域,对于它的源码研究一直是众多程序员热衷的话题。本篇文章将针对提供的“tlsm.cpp”和“tlsm.h”两个文件进行分析,...
《天龙八部控制台DLL源码解析》 在编程领域,DLL(Dynamic Link Library)是一种重要的代码共享机制,广泛应用于Windows操作系统。DLL文件包含了可执行代码和数据,可供多个程序同时调用,以实现功能模块化和代码...
天龙八部鹿鼎记资源文件解包器AXPUnpack 两者都适用,针对2010年10月左右游戏更新
《天龙八部》是一款经典的大型多人在线角色扮演游戏,其全套源码的公开对于游戏开发爱好者和专业人士来说具有极高的学习和研究价值。源码是软件开发的核心,它揭示了游戏背后的逻辑和实现细节,通过深入研究,我们...
《网络游戏天龙八部的粒子特效查看器》是一款专为《天龙八部》游戏爱好者设计的辅助工具,由技术达人鸣·铭精心打造。它允许玩家深入探索和欣赏游戏中丰富的粒子特效,提供了直观、便捷的方式来观察和理解这些特效...
天龙八部挂机脚本(开源) .常量 窗体基址, "“62D4EC”" .常量 基址, "“0062E5EC”", , 0062D854 .常量 怪物基址, "“62D078”" .常量 打开基址, "“62D858”", , 人,包或怪 .常量 全捡CALL, "“440280”" .常量 ...