EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

OR

C#游戏简单辅助工具制作思路

最近玩FLASH游戏感觉挺有趣的,4399联合百田网运营一款网页FLASH游戏叫《奥义联盟》。

这个游戏是MOBA类型游戏的缩水版,技能缩减到1个,由空格发出,技能和普攻的方向全部都是鼠标指向性的,上下左右WSAD,还有一个特殊技能F。

 

玩这个游戏最主要的是要鼠标瞄准,同时WASD走位要会躲避攻击。


基本思路:

1.FLASH破解,读到敌人(X,Y)坐标的位置和自己的位置计算出角度,让电脑自动将鼠标停到对应的位置。

2.图像处理。


我选择了尝试图像处理

先说FLASH破解的问题,得需要懂相当多的网络安全方面的知识,同时也要了解FLASH游戏的运行机制,比如后台是怎么传数据的,数据是否被加密了之类的。

实现起来需要费很大一番功夫,简而言之,学习成本太高。

那么,图像处理呢?

图像的处理本质是对数据的处理,目前还没有能做到实时完全图像处理并且精确率特别高的,可以参考人工智能汽车。即使是深度学习框架,也不能保证稳定性,需要大量的训练集。当然,普通的比对图片谁都能做到,但是动态画面处理起来就有一定的难度,在吃CPU的同时,效率还不一定高。所以大部分FPS游戏外挂都是从游戏内存下手的,很少有人会去动图像处理这一块儿,图像处理毕竟是个很大的问题,而且单从效率上讲,处理单纯的坐标可比大量比对图像效率高太多了……

 

但是针对《奥义联盟》这样的游戏,其实最重要的还是瞄准,它毕竟不是3D游戏,处理都在平面上,我想,以图片比对的形式也许可以实现。

这里有一个思路,用鼠标点击敌人,截图一块小于敌人身体的图片,尽量做到像素最少。

对FLASH游戏画面进行截屏-对比-删除的操作,当发现一致,对敌人进行红色标记,先做一个测试。

 

如果行得通且效率不差的话,将鼠标钉死在目标身上,只需要控制WASD和空格就行了,这么一来可以专心走位。

 

需要学习的内容有:

C#钩子函数,C#桌面绘图,C#键盘鼠标控制。

 

钩子函数主要体现在对键鼠的事件处理,桌面绘图主要用来标记技能范围,键鼠控制用来瞄准。

图像对比的话,C#网上能一堆图像对比的类,这里涉及到算法这一块,不用管它,直接用就是。(基本是像素点的比对)


2020年1月1日更新

这个游戏已经屏蔽了基本的鼠标键盘控制函数,使用PostMessage方法能点击游戏内图标,但无法在战斗中自动射击。

用Mouse_event也是同样的效果。

这里摘取到了一个比较有意思的内容:

keybd_event不好使很正常啊 游戏貌似有NP保护吧 当然过NP保护是比较麻烦的 但是如果你能好好利用keybd_event的汇编源码 那估计NP就失去作用了 因为NP是把keybd_event的函数头jmp到另一个地方了

来自 <https://bbs.csdn.net/topics/340005431>


2020年5月18日更新

我基本上放弃了靠找图对比做辅助的想法,因为找图对比是不切实际的,原因如下:

① 准确率低

② 占用资源超高

③ 无法达到毫秒级的反应,效率低下

This article was last edited at 2020-05-18 10:59:31

* *