游戏安全实验室 首页 技术入门 查看内容

 阅读目录

鬼泣4 游戏攻击过程相关逻辑分析

发布于:2016-1-27 17:19   |    165552次阅读 作者: 管理员    |   原作者: TP   |   来自: 原创

游戏中根据按键间隔触发不同的连招,具有不同的攻击效果,通过分析连招触发条件,进而尝试辅助连招瞬发。

 

分析思路:

思路1:通过按键处理确定消息处理过程

因为游戏使用键盘操作,所以初步思路是通过查看对应的消息处理过程进而定位到连招触发的逻辑。

查找主窗口

然后攻击,打印参数

 

发现每一次按键弹起时会触发攻击过程,跟随消息处理

或者在游戏开始时对registerclassexa下断

Pwnclassex指向一个结构如下

typedef struct _WNDCLASSEX {    // wc  

    UINT    cbSize; 

    UINT    style; 

    WNDPROC lpfnWndProc; 

    int     cbClsExtra; 

    int     cbWndExtra; 

    HANDLE  hInstance; 

    HICON   hIcon; 

    HCURSOR hCursor; 

    HBRUSH  hbrBackground; 

    LPCTSTR lpszMenuName; 

    LPCTSTR lpszClassName; 

    HICON   hIconSm; 

} WNDCLASSEX;

WNDPROC为消息回调函数地址

定位到的处理过程和上面一样

随后发现对按键的处理会调用

考虑游戏通过hook接管键盘,通过pchunter查找未发现相应钩子处理

对函数进行run跟踪,尝试找到对应消息的处理流程,游戏崩溃。

 

思路2:通过攻击过程定位连招过程

之前分析HP时定位到了攻击过程如下

了解到在攻击过程中会传入相应招数名称,比如:

手枪普通攻击

手枪蓄力攻击

恶魔之手

绯红女皇

通过对连招名称下硬件访问断点,即使没有攻击对象,但仍然会有相应招数释放,故肯定会有对应的招数名称的产生。然后回溯分析

最终定位到一张关于“绯红女皇”的连招表

(连招间隔为浮点数)

我们对其中一个名次下硬件访问断点,此时没有攻击目标,仍然会触发连招过程

定位到相应触发过程

 

为方便分析,我们打印部分关键点的数值

当我们释放不同连招的时候

 

发现连招ID的命名为:

武器名+连招类型+_+连招招数

我们对比不同的技能连招

 

通过分析上述数据,发现技能基址一样,传入了不同的偏移,来确定不同的连招。

我们继续分析偏移量的来源

回溯

通过分析得知偏移的指针是 此函数的参数之一

通过条件断点分析流程:

 

 

我们继续分析调用者:

将调用此函数的参数全部打印出来

分析可以得知

指针即为上述IDA分析流程图中的指针。

 

 *转载请注明来自游戏安全实验室(https://gslab.qq.com)

分享到:
踩1 赞0

收藏

上一篇:鬼泣4游戏风格评价相关逻辑分析

下一篇:手游游戏安全技术入门前言

相关阅读
最新评论
引用 酱油一瓶 2016-2-18 16:39
引用 礁石 2016-1-27 23:41
分析得有声有色 6

查看全部评论(2)

B Color Image Link Quote Code Smilies

发表评论