LOL卡牌秒切黄牌的实现方法、原理、伪代码、成品软件

投稿人:admin | 发布时间:2015-10-29 01:33 | 分类:辅助软件 | 点击量:

作为一个坚定的Dota党,我决定来毒害loler了。(开玩笑)

说起切牌器,这是个老生常谈的小辅助了,据我所知,有三种实现方式。

  • 封包切牌
  • 内存切牌
  • 抓图切牌
说起这个,我们得简单讲解下这个游戏的运作原理了,知道原理之后,下面就容易多了。

记得好早之前听人说卡牌的切牌是一个线程在不断的计算随机数,然后来取得牌的颜色。你们是不是也是这样认为呢?假使这种说法成立,那么我们完全可以在运算随机数的地方下钩子,来达到想到什么牌就要什么牌,即真正的秒切。

其实不用想这完全是一种错误且荒谬的说法,因为LOL的所有数据均在服务端运算,本地游戏客户端充当一个贴图的角色。这就是为什么lol没有全图,而Dota1却存在全图的原因。(LOL中视野在服务器控制的,没有视野的地方根本不会收到包)。卡牌切牌也是同样的情况,当我们第一次按下W的时候会向服务器发包请求施放技能,然后服务器每隔一段时间会返回给客户端释放结果(即当前牌的颜色),客户端再次按下W即向服务器确定当前牌的颜色,服务器再返回一个新的技能实例给客户端。

这段绕口吗?多看几遍就明白了。

那么知道原理后,我们就可以用第一种方式实现卡牌要指定牌的功能了。

封包切牌的伪代码
  • hook收包call的头部,判断是技能包,且判断释放技能者是自己,且判断技能是W的释放结果。
  • 根据结果判断是否是指定的牌
  • 直接发第二次使用技能的包,从而第一时间锁定想要的牌。



内存切牌的伪代码
  • 同上,从内存直接读取当前技能的状态。
  • 根据结果判断是否是指定的牌。
  • 调用技能call来实现锁定目标牌。

抓图识别的伪代码
  • 模拟W键,同时扫描窗口。(想要高效率的话要算W键技能框的坐标偏移)
  • 根据抓到的图进行对比。(值得一提的是对比的方式就是逐像素扫描,因此根据图片的大小需要循环几百万次。)
  • 根据对比结果再次模拟W键盘来实现锁定目标。



以上三种,毫无疑问是封包切牌速度最快,效果最好。但是需要hook两处,基本上肯定要被crc检测到(过检测是个心理安慰,腾讯只是不想跟你较劲)。抓图识别的这个笨办法,有许多的缺陷,比如图片的分辨率、游戏分辨率、游戏窗口布局、游戏缩放比等,除此之外,识图需要遍历几百万次实在让我不爽,而且成功率不能100%,卡的一比,本人是不屑使用的。内存切牌相对来讲稍微好点,集合了两家之优,现在市场上收费的切牌辅助都是这种类型。但是作为强迫症的我,还是觉得不安全,因为调用call可以通过栈检测来检测到,读内存也可以通过异常和陷阱等检测到。
而实际上,以上三种方案我都做过,虽然勉强能用,但是总觉得不踏实,所以从来没有放出来过。
作为一个拥有几百个皮肤的人来说,以上三种所有用的缺陷,实现是不能让我放心,追求完美的我,经过潜心设计,终于发明了一种完美的方法,不需要注入,不需要hook,不需要调用call,不需要遍历,不需要考虑一切平台因素。
完美解决以上所有问题。
这种方案是什么呢?
资源劫持。

原理和伪代码如下:
  • 将游戏资源中卡牌的4个图标替换
  • 设置触发器(游戏调用各个图标的时候会收到通知)
  • 模拟按W
  • 根据收到的通知,再次模拟W


据此,我做了一个成品界面如下:
 

由于只是实现性质的作品,没有,也不打算加上更多的功能,比如自定义按键等,一切只是为了研究。
虽然如此,但是为了方便,也加了一些自动化功能,比如重启游戏不需要重启辅助、智能判断聊天状态、只能判断cd状态等功能。
最后,附上成果百度下载链接,注意下载保存,我一向不喜欢补链接的。


数据统计中,请稍等!
您可能会对以下内容感兴趣