39.第二阶段x64游戏实战-封包-分析计数器
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
上一个内容:38.第二阶段x64游戏实战-封包-改造封包劫持工具(一)
如下图首先来到ws2_32.send位置,查看第二参数也就是rdx的值
根据上一个内容分析的,第六个字节是计数器,如下图第六个字节(两个数字一字节)
然后选择十六进制16位(16字节)显示
鼠标放到第六个字节上,右击选择硬件写入
然后让游戏发送数据包触发断点,就来到下图位置,这里没有什么好分析的
删除断点
CTRL+F9再按F8,来到下图位置,看不明白是什么,这时先使用断点查看一下参数
然后通过下图红框位置的断点,然后按F8发现,它并不是只修改下图蓝框中第六个字节,它还修改了别的,所以需要CTRL+F9再按F8往上反了
CTRL+F9再按F8,然后再按F9让代码运行起来,后来到下图位置
然后在下图红框位置设置断点,触发断点后按F8,发现只有下图蓝框位置的数据进行了修改,现在就找到了修改第6字节的位置
然后通过断点分析参数,发现第六个参数的值来自于r9d(r9d是r9寄存器的一部分)
如下图按F8后把r9d的值放到的第六个字节
接下来就找r9d的值哪来的,开始之前要写两个指令 and指令 和 shl指令
and指令
现在有两个二进制数,111,101,使用and指令计算这两个数得到的结果是101,可以发现只保留了都是1的部分,这就是and指令的功能,十六进制F的二进制数是1111,FF的二进制数是11111111
shl指令
现在有一个这样的二进制数,0010,然后使用shl 00010,2得到的结果是01000,可以发现左移的2位,这就是shl指令的功能
知道and指令和shl指令后继续分析,如下图这时的r9寄存器的值
按F8后的r9寄存器的值,可以发现有些位清零了
然后r9d的值加了eax,这时可以看到r9d的中表示计数器的值还是0,然后找eax的值
如下图eax的值进行了shl指令
F8后eax的值进行左位移0x18(十进制是24,1字节8位,24位是3字节(3乘以8等于24))位,也就是3字节
然后rax的值来自于r14d
然后r14d的值来自于rbx+0x8
然后rbx的值来自于rdx,然后rdx的值来自于上一层
然后断点CTRL+F9再按F8,就来到了下图位置,可以看到rdx的值来自于rdi,现在的公式rdi+0x8
然后rdi+8d值来自于r8b
然后r8b的值来自于[rbp+0x7A0],现在的公式[rbp+0x7A0]
rbp的值来自于rcx,rcx的值来自于上一层
CTRL+F9再按F8,就来到了下图位置,也就找到了计数器的基址
偏移 0x00007FF61DE24A98 - 0x00007FF61D4D0000=0x954A98
到这发包需要的东西就找齐了,接下来就可以模拟数据包,发送数据包了,计时器用的时候需要加1