欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]FPS全屏秒杀以及全屏飞刀漏洞的逆向分析

[原创]FPS全屏秒杀以及全屏飞刀漏洞的逆向分析

目录

一、引言  

二、正文  

          1、全屏飞刀原理及实现

          2、全屏秒杀原理及实现

三、总结  

四、白嫖


分析对象:CS1.6 5Eplay 版本

编程工具:Visual Studio 2019

工具:CheatEngine 6.7

一、引言

        不知道有多少人是经历过穿越X线的神仙时代。我只记得当时最疯狂的是一个房间充满着各种奇葩的科学家,例如飞天、遁地、隐身、加速、子弹穿墙,飞刀等等,但是,最有意思的还是Bug不掉血的卡箱和卡墙。这些东西虽说是游戏的漏洞造成的,但是当时那个时候玩起来依旧是很开心,毕竟当时的游戏环境还是很认可的,武器属性的平衡,玩家之间的默契度,战队里的开黑,都让我们对当时的一些保留着一无比忘怀的怀念。

                                                                     

                                                               

                                                               

                                                                                                                               

                                                                                                                  穿越X线早期图片

二、正文:

        煽情完了,咱们开始正题。今儿咱们来说说远古时期的大发明-全屏飞刀和全屏秒杀。这篇文章依旧使用被无数次仙人跳的游戏来操作,嗯,没错就是CS1.6。

                                                                                                                      

        在我们干事之前,稍微对游戏的一个动作进行思考,这里咱们先讲全屏飞刀,再讲全屏秒杀。

一、 全屏飞刀原理及实现

                                                                                                                         

        这里我总结了三种思路:1、通过游戏播放的音效来寻找。细心的同志可能会发现,挥刀的时候,打中和没打中是有两种音效播放的,所以我们只需要在游戏目录下找到这个音效的名字,然后去文件操作相关的api下断,看他什么时候去访问这个文件就行了,断下后直接返回应该就直接能找到关键代码处。2、只要是个有脑子的人,手里拿着枪的时候可以砰砰砰的射击,但是切刀之后就没法实现击中效果了。那么他肯定会有一个关键跳转来判断你当前武器是否是刀(有可能判断当前手持的模型ID),这个时候找到这个跳转,搞就完事。3、都知道鼠标控制开火,那么鼠标消息肯定会经过关键代码,这个时候直接鼠标消息下断后去分析就行了,但是相比前两种方法,要分析的代码量更多,头发多的人推荐尝试。

        这里我用的是第二种方法,但是其他方法依旧希望大家去试试,毕竟技多不压身(其实就是懒得去弄)。

                                                                                                              

        在正式去找的时候我们先来整理一下思路。首先我们要找的是全屏飞刀,那什么是全屏飞刀?顾名思义,就是当我们拿着刀的时候不用贴着敌人也能打中敌人。此时我们是不是很容易去联想到攻击call?因为你的刀能不能攻击到别人是取决于你的攻击call的代码流程,所以在内部代码中极有可能存在着某条跳转用来判断你这个攻击是否有效,如果有效,给你击中;如果无效,直接给你ret。下面是给出的伪代码:


bool 开始攻击(xxxxxxxx)

{

If ( 当前手持武器 == 刀)

       If(可以攻击==假)

Return false; //攻击失败

              攻击();

              Return true;

}     

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功