【天刀系列】技能封包分析

[复制链接]
查看: 49   回复: 0

41

主题

41

帖子

271

积分

超级版主

Rank: 8Rank: 8

积分
271
发表于 2021-5-27 22:19:37 | 显示全部楼层 |阅读模式
很多3D游戏对于技能的调用,往往都会选择调用外层的功能函数,而避免调用封包,因为这类游戏的技能封包往往都比较复杂,参数较多,不方便调用,外层的功能函数参数却非常简单。以《天涯明月刀》为例,我们比较一下功能函数和封包的差别,并分析封包结构内容。
首先我们来看一下外层功能函数的调用
push 1
push 技能ID
mov  ecx,[Base_Role_Coord]
mov  ecx,[ecx+Offset_Coord1]
call Call_ReleaseSkills

这是一个非常简单的功能函数,参数除了一个立即数0x1之外就只剩一个技能ID了,而ecx的分析也很简单。
接下来我们看一下技能封包(如图)
1.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\f8beca9a8466471785f652525b650803\1.png
这是唐门·千魂裂的封包,封包长度为41,经过多次对比,以及对技能对象的分析,可以得到如下结果
$ ==>    >28DB3D9C        +0        [[Base_Role_Coord]+Offset_Coord1]
$+4      >00D74D95                +4        技能ID
$+8      >0000002A                +8        [SkillsPacket-4]+1
$+C      >80000000                +C        [SkillsPacket]
$+10     >00000002                +10        00000002
$+14     >044BE700                +15        X*100
$+18     >04BE0200                +19        y*100
$+1C     >0024FA00        +1D        Z*100        可以传0
$+20     >28DB4700                +20        [[Base_Role_Coord]+Offset_Coord1]+A00
$+24     >28DB3D9C        +24        [[Base_Role_Coord]+Offset_Coord1]
$+28     >00000000                +28        00000000
$+2C     >000003D8        +2C        000003D8
$+30     >EB608000                +31        朝向,X轴正向为0,逆时针转到X轴负向递增为+π,顺时针转到                                    
      X轴负向递减为-π
$+34     >0285923F                +35        EC028592
$+38     >000000EC                +39        00000000
$+3C     >00000000                +3C        00000000
$+40     >        00                        +40        00000000

左边是OD中直接复制出的封包,右边是修正后的偏移,我们发现这里的参数很多,几乎每一个字节都有特定的含义,对于+31处的技能朝向我画了一个草图(如图)PS:画图水平实在是烂,大家凑合看下
2.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\d356dbb09e9c49a09fe45d550a5007f8\2.bmp
通过对比可以发现,封包的结构无论是分析还是调用都非常麻烦,如果不是有特殊需求,比如脱机,防检测,或者外层严重VM无法分析等,不会选择用技能封包来做辅助。



来亦何哀, 去亦何苦?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4 © 2001-2018 Comsenz Inc.