搜索
    Hi~登录注册
    查看: 224|回复: 10
    收起左侧

    FPS游戏完美无后坐力漏洞逆向原理和实践

    [复制链接]

    14

    主题

    8

    精华

    5 小时

    在线时间

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    90
    发表于 2019-4-14 11:38:47 | 显示全部楼层 |阅读模式
    首先,这是个小白科普贴哦,不是大佬贴,还请各位大佬嘴下留情,引擎什么的小弟也不太会分析
    进入主题,FPS的后坐力的逆向.


    众所周知呢,FPS游戏就是用来“打炮”的,所以右手持枪,压“枪”很重要,后坐力稍微控制不好就“射”偏了。

    那么,我们在逆向过程中应该如何去逆向后坐力的数据呢,首先,我们要知道后坐力的变化规律。

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    后坐力的规律:

    静止状态,不开枪的时候,后坐力值为0:
    1.png

    按住鼠标左键开枪后可观察到后坐力的数据一直增加,迅速截图如下:

    2.png

    传统无后坐力方法:

    锁定不开枪时候的数值0,但是锁定后发现无法实现完美的无后坐力,枪口的抖动程度和子弹射出的偏差依然很大.

    因此,我们判断,后坐力的数据,应该还有其他的地址或者函数往该地址进行写入,

    所以我们在该地址,下硬件写入断点:

    3.png


    通过观察,我们发现,存在ebp不停的往后坐力地址写入数据:

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    先使用第一把步枪枪械断下的代码段:

    [C++] 纯文本查看 复制代码
    1D8BBAF9 |. 8BAE 00010000 mov ebp, dword ptr [esi+100] ; esi+100
     
    1D8BBAFF |. C686 EC000000>mov byte ptr [esi+EC], 1
     
    1D8BBB06 |. 45 inc ebp
     
    1D8BBB07 |. 8BC5 mov eax, ebp
     
    1D8BBB09 |. 89AE 00010000 mov dword ptr [esi+100], ebp ; 硬件写入断下关键代码处
     
    1D8BBB0F |. 8BC8 mov ecx, eax
     
    1D8BBB11 |. 0FAFC8 imul ecx, eax
     
    1D8BBB14 |. 0FAFC8 imul ecx, eax
     
    1D8BBB17 |. B8 1F85EB51 mov eax, 51EB851F



    防止例外,又使用另外一把步枪枪械断下的代码段:



    [AppleScript] 纯文本查看 复制代码
    1D8BD04E |. 8BAE 00010000 mov ebp, dword ptr [esi+100]
     
    1D8BD054 |. C686 EC000000>mov byte ptr [esi+EC], 1
     
    1D8BD05B |. 45 inc ebp
     
    1D8BD05C |. 8BCD mov ecx, ebp
     
    1D8BD05E |. 89AE 00010000 mov dword ptr [esi+100], ebp


    发现有部分汇编指令是不同的,我们可以用?? 代替不同的字节,其他的字节照抄,构造无后坐力关键代码特征码:


    特征码定位到0x1D8BD04E

    特征码:

    [AppleScript] 纯文本查看 复制代码
    	
    8B AE 00 01 00 00 C6 86 EC 00 00 00 ?? ??



    CE搜素特征码找到后,我们需要进行修改,通过分析,我们只需要把不用的nop调就可以了,然后让ebp的值为0,ebp为后坐力数据

    修改方法:

    [AppleScript] 纯文本查看 复制代码
    BD 00 00 00 00 90 90 90 90 90 90 90 90 90


    通过测试,大部分枪械都实现了无后坐力,子弹完美汇聚在一个点上:

    4.jpg

    5.jpg

    6.jpg

    但是通过测试发现少部分枪械后坐力值仍然在改变,说明某部分枪械的后坐力写入代码来源自别的地方

    在这里,不再继续寻找,有兴趣的朋友可以继续搞一下

    另外,通过观察,某些枪械的后坐力不单单决定于0x100的指针

    7.png


    在指针0xB8和0xBC位置,我们依然寻找到了一些可以影响后坐力的数据,甚至可以极大的改变后坐力和射速

    8.png

    在这里没有继续深入分析,分析方法大致如此,就不做赘述了

    感谢大家的支持,顺便打个广告,最近喜欢分享一些知识,

    在b站开设了简单的汇编课程:https://space.bilibili.com/414271158

    在论坛开设了个小白初级的游戏逆向入门课程:https://www.kanxue.com/book-brief-39.htm(宗旨:有问必答!包教包会!)

    望大家提出宝贵意见和建议!









    上一篇:WPA3中的“Dragonblood”缺陷允许恢复Wi-Fi密码
    下一篇:FPS游戏秒杀分析逆向思路
    [color=SeaGreen]发帖求助前要善用【[url=http://bbs.88hack.com/search.php]论坛搜索[/url]】功能,那里可能会有你要找的答案;[color=SeaGreen][/color] 如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】; 如何回报帮助你解决问题的坛友,一个好办法就是给对方加【网币】和【软妹币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!-88骇客精彩有你![/color]!
    回复

    使用道具 举报

    0

    主题

    0

    精华

    0 小时

    在线时间

    新手上路

    Rank: 1

    积分
    23
    发表于 2019-4-14 12:56:44 | 显示全部楼层
    谢谢您的分享!
    回复 支持 反对

    使用道具 举报

    0

    主题

    0

    精华

    0 小时

    在线时间

    新手上路

    Rank: 1

    积分
    19
    发表于 2019-4-14 12:57:43 | 显示全部楼层
    打赏。。可以值得一看的好文
    回复 支持 反对

    使用道具 举报

    0

    主题

    0

    精华

    0 小时

    在线时间

    新手上路

    Rank: 1

    积分
    7
    发表于 2019-4-14 13:58:03 | 显示全部楼层
    谢谢楼主!!很好用。。
    回复 支持 反对

    使用道具 举报

    0

    主题

    0

    精华

    0 小时

    在线时间

    新手上路

    Rank: 1

    积分
    15
    发表于 2019-4-14 14:34:12 | 显示全部楼层
    希望得到想要的
    回复 支持 反对

    使用道具 举报

    0

    主题

    0

    精华

    0 小时

    在线时间

    新手上路

    Rank: 1

    积分
    15
    发表于 2019-4-14 14:57:58 | 显示全部楼层
    谢谢您的分享!
    回复 支持 反对

    使用道具 举报

    0

    主题

    0

    精华

    1 小时

    在线时间

    新手上路

    Rank: 1

    积分
    32
    发表于 2019-4-14 14:59:55 | 显示全部楼层
    好东西,收了
    回复 支持 反对

    使用道具 举报

    0

    主题

    0

    精华

    0 小时

    在线时间

    新手上路

    Rank: 1

    积分
    7
    发表于 2019-4-14 15:04:05 | 显示全部楼层
    好东西,收了
    回复 支持 反对

    使用道具 举报

    0

    主题

    0

    精华

    0 小时

    在线时间

    新手上路

    Rank: 1

    积分
    9
    发表于 2019-4-14 15:20:47 | 显示全部楼层
    好像还不错
    回复 支持 反对

    使用道具 举报

    0

    主题

    0

    精华

    0 小时

    在线时间

    新手上路

    Rank: 1

    积分
    26
    发表于 2019-4-14 15:46:20 | 显示全部楼层
    看看,感谢看看,感谢看看,感谢看看
    回复 支持 反对

    使用道具 举报

    游客
    回复
    您需要登录后才可以回帖 登录 | 获取账号

    快速回复 返回顶部 返回列表