首页
社区
课程
招聘
[原创]FPS游戏秒杀分析思路(一)
发表于: 2019-2-10 19:31 16296

[原创]FPS游戏秒杀分析思路(一)

2019-2-10 19:31
16296


---------------------------------------------------------------------------------------------------先随便说点---------------------------------------------------------------------------------------


今天已经初六了,天空微微飘起了小雪,于是就走到门外看雪。

然后就想到了来逛逛“看雪论坛”。

于是今天,带着无比给大家写个小小的逆向爽文~


 ---------------------------------------------------------------------------------------------------步入正题-----------------------------------------------------------------------------------------


众所周知,FPS游戏依然在网络游戏中占据很大市场,其独有的游戏体验也让很多外挂黑色产业工作者伸出了罪恶的双手。那么,今天,我们就来聊一下FPS游戏中的那些事儿~

不卖关子了,我们今天直接步入主题了!


/*

 用到游戏:CS1.6

用到工具:Ollydbg   CheatEngine枫叶人:https://bbs.pediy.com/thread-195729.htm   非常感谢老哥提供这么好用的工具

/*



0x01


首先,打开游戏,我们以敌人血量为突破口,在这里我们搜索的数值为浮点数,为什么呢?因为游戏中血量,坐标等精度比较高的数据,都会用浮点数来存放,所以我们搜索浮点数,然后不断筛选数据搜索到敌人血量,中间的过程不再赘述,赘述一下也行,那就是:


1.先搜索100,为什么搜索100,因为自身血量为100,所以,自己的血量应该也为100,敌我人物数据结构相同,除非敌人数据加密了

2.开枪打一下敌人,然后搜索减少的数值

3.然后开枪打一下,再次搜索减少的数值

4.这个时候,你应该观察一下有没有类似于血量的数据,应该能看到


我找到的数据:


因为是动态地址,所以你和我的地址应该是不同的哦~


只要你找到动态地址就OK啦~



0x02


然后,用OD对敌人血量地址下硬件写入断点,开枪命中敌人,OD断下,程序中断,断在了一个Call内



0x03


我们猜测,中断的代码位置应该属于敌人血量的运算,那么也就是说我们处在攻击Call或者说扣血Call中,这个时候,我们CTRL+F9返回,即可返回到外层攻击Call或者说扣血Call,外层Call会接受攻击的参数,大致流程如下:




那么我们回过头CTRL+F9返回看一下外层Call:




不同的枪械伤害是不一样的,攻击人物不同部位伤害也是不一样的,就好比我踩你脚,跟踢你蛋蛋的感觉是不一样的哦~


我们在Call地址下断点,先用手枪打一下脚部,为避免人物死亡,我已把敌人血量修改为100:



0x04



[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-2-10 20:16 被小迪xiaodi编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (19)
雪    币: 253
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2019-2-10 19:38
0
雪    币: 5836
活跃值: (1918)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
小红很优秀呀 感谢分享
感谢支持!
2019-2-10 19:39
0
雪    币: 164
活跃值: (104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
cs跟植物大战僵尸这两个游戏简直是被各种蹂躏
2019-2-10 20:29
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
5
这破游戏github都有完整engine和server源码了,直接call pPlayer->TakeDamage(pevInflictor, pevAttacker, 9999.0, 0);不是更easy 反正是虚函数 头文件安排上参数一填直接完事,根本用不上OD CE什么的
你说的attack call
https://github.com/nagist/cs16nd/blob/cb03c59eaf076b0b4bb2eb8b6a05179651d7763c/dlls/player.cpp#L768
最后于 2019-2-10 21:35 被hzqst编辑 ,原因:
2019-2-10 21:33
0
雪    币: 5836
活跃值: (1918)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
hzqst 这破游戏github都有完整engine和server源码了,直接call pPlayer->TakeDamage(pevInflictor, pevAttacker, 9999.0, ...
感谢大佬科普!
2019-2-10 22:07
0
雪    币: 4709
活跃值: (1575)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
7
感谢分享
2019-2-11 00:40
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
8
不如对游戏引擎下手
2019-2-11 08:47
0
雪    币: 403
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
感谢大佬分享
2019-2-11 09:45
0
雪    币: 776
活跃值: (3425)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
10
hzqst 这破游戏github都有完整engine和server源码了,直接call pPlayer->TakeDamage(pevInflictor, pevAttacker, 9999.0, ...
别这么说啊,重点不一样。现成的工具和源码都很多,但是都发工具的话,看雪迟早成脚本小子大本营啊,那跟某论坛还有啥区别?
2019-2-11 10:25
1
雪    币: 5836
活跃值: (1918)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
11
killpy 不如对游戏引擎下手
感谢大佬科普!
2019-2-11 18:02
0
雪    币: 5836
活跃值: (1918)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
DWwinter 感谢大佬分享
感谢大佬支持!
2019-2-11 18:03
0
雪    币: 5836
活跃值: (1918)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
13
如斯咩咩咩 感谢分享
感谢大佬支持!
2019-2-11 18:03
0
雪    币: 203
活跃值: (1092)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
哈哈 我也研究过这个 支持一下
2019-2-11 18:05
0
雪    币: 53
活跃值: (578)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
攻击call这些很基础的吧
2019-2-11 19:41
0
雪    币: 90
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
accessdenied 攻击call这些很基础的吧
you can you up,no can 别 bb
2019-6-17 12:07
0
雪    币: 53
活跃值: (578)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
back_Black you can you up,no can 别 bb[em_45]
我说啥了?我说*......
最后于 2019-7-2 00:40 被kanxue编辑 ,原因: 请文明用语
2019-7-1 13:55
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
18
数据检测  怎么解决
2019-7-1 14:18
0
雪    币: 5836
活跃值: (1918)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
19
killpy 数据检测 怎么解决
hook方法过掉:1.改流程绕过检测  2.利用寄存器制造正常数据假象
2019-7-1 23:25
0
雪    币: 5836
活跃值: (1918)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
20
killpy 数据检测 怎么解决
大哥你现在评论,这是来嘲笑我的咩
2019-7-1 23:26
0
游客
登录 | 注册 方可回帖
返回
//