当前位置: 首页 > backend >正文

27.第二阶段x64游戏实战-分析技能属性

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

上一个内容:26.第二阶段x64游戏实战-代码实现背包遍历

这次找技能的结构(对象),技能怎么找?可以通过任意技能相关的属性去找,比如技能的名字,如下图通过技能名字去找

首次扫描完有15个结果

然后设置成字节数组显示,这个种方式之前写过了

得到它的字符数组

然后点击新的扫描

然后选择字节数组

然后粘贴刚刚复制的字节数组

然后首次扫描,扫描出的结果就剩下两个了

然后如下图全选结果,然后点击红色箭头

然后如下图,重新该回字符串类型显示

然后修改它俩的值,然后看看游戏中技能的名字变成哪一个了,这里技能名字变成了初级22,然后就找到了技能名字的地址

然后来到x64dbg设置硬件访问断点,追基址,如下图设置硬件访问断点

然后来到游戏,鼠标放到技能上,让游戏访问技能名字,从而触发断点来到下图位置,下图红框位置的rdx访问了技能名字

开始分析代码,如下图,继续找rdx

断点住

如下图 按CTRL+F9再按F8来到的上一层

然后发现一个问题,下图红框是通过名字的硬件访问断点来到的,上图是通过CTRL+F9再按F8来到的,可以发现它call的地址是0x7FF761F12FB0,这个地址离着0x7FF761F13519很远

如下图红框差着一千多字节,这说明通过名字触发的硬件访问来到的函数只是获取技能函数的一小部分,所以需要从函数头一路F8,一直执行到 0x7FF761F13519这个地址为止,否则相差的一千多字节的取值公式我们找不到

现在的公式[[rdx+0x8]+0x10],然后如下图,设置断点

触发断点

取消断点

按F7进入函数头部

按住F8,直到来到下图红框范围内

然后按减号,然后就可以看到rdx来自于rax

rax的值应该来自于下图红框call的返回值

设置断点

触发断点,如下图按F8之前rax的值

按F8之后rax的值就变了

如下图继续按F8可以看到rdx的值确实来自于rax,然后按F9让游戏运行起来

所以接下来就要F7进入下图红框函数,看看它的返回值怎么来的

触发断点

按F7进入函数

然后按F8看看执行逻辑,判断了rax是不是空,不是空进行了跳转

然后进行jmp往上跳转

然后来到了下图红框位置,这里的代码很乱,但是不要紧,我们现在找的是rax,是返回值,返回值在函数的后面,所以按住F8来到当前函数ret位置其它代码直接忽略就可以了

然后找到了rax,然后开始找rax的值哪来的

然后一路按减号,可以看到rax的值来自于一个二叉树,这个二叉树之前遍历周围的时候细写过了,现在应该有一种熟悉感

然后公式 [[[[rdi+0x18]+0x2AB0]+0x8]+0x10]+0x28

rdi的值来自于rcx,现在的公式[[[[rcx+0x18]+0x2AB0]+0x8]+0x10]+0x28

然后最终公式 [[[[[[[0x7FF7625290E8]+0x98]+1B0]+0x18]+0x2AB0]+0x8]+0x10]+0x28

最终技能名字的公式 [[[[[[[[[0x7FF7625290E8]+0x98]+1B0]+0x18]+0x2AB0]+0x8]+0x10]+0x28+0x8]+0x10],这个地址通过在内存窗口的CTRL+G跳转是可以跳转到一个技能名字的

然后 [[[[0x7FF7625290E8]+0x98]+1B0]+0x18] 这个公式之前找的人物属性(血量啥的)很像,所以这个 0x7FF7625290E8 也是人物对象

偏移0x0x7FF7625290E8 - 0x00007FF761BE0000 = 0x9490E8

遍历技能二叉树代码地址:0x00007FF761D66E49 - 0x00007FF761BE0000 = 0x186E49


img

http://www.xdnf.cn/news/7299.html

相关文章:

  • mysql故障排查与环境优化
  • DeepSeek 赋能数字孪生:重构虚实共生的智能未来图景
  • 【AI面试秘籍】| 第17期:MoE并行策略面试全攻略:从理论到调参的降维打击指南
  • 视觉-语言导航:综述与类别
  • 面试点补充
  • 【Vue】路由2——编程式路由导航、 两个新的生命周期钩子 以及 路由守卫、路由器的两种工作模式
  • 在Excel中使用函数公式时,常见错误对应不同的典型问题
  • 在 CentOS 7.9 上部署 node_exporter 并接入 Prometheus + Grafana 实现主机监控
  • 【Arm】应用ArmDS移植最小FreeRTOS系统
  • 利用ffmpeg截图和生成gif
  • FART 主动调用组件设计和源码分析
  • 【AWS入门】AWS身份验证和访问管理(IAM)
  • C#接口的setter或getter的访问性限制
  • ## Docker 中 Elasticsearch 启动失败:日志文件权限问题排查与解决
  • PYTHON训练营DAY30
  • Git基础面试题
  • Git冲突解决:从手足无措到游刃有余的蜕变之路
  • 动态IP技术在跨境电商中的创新应用与战略价值解析
  • Icecream Video Editor:简单易用的视频编辑软件,轻松打造专业视频
  • 基础深度补全模型DepthLab: From Partial to Complete
  • CRMEB多商户预约服务上门师傅端
  • Web漏洞扫描服务的特点与优势:守护数字时代的安全防线
  • 【盈达科技】AICC™系统:重新定义生成式AI时代的内容竞争力
  • 10.15 LangChain v0.3重磅升级:Tool Calling技术颠覆大模型工具调用,效率飙升300%!
  • JAVA请求vllm的api服务报错Unsupported upgrade request、 Invalid HTTP request received.
  • 一个由微软开源的 Python 工具,用于将多种文件格式转换为 Markdown 格式
  • 【框架安装】win10 配置安装GPU加速的tensorflow和keras教程
  • 3.QMainWindow菜单栏menu bar和工具栏tool bars
  • 分布式事务
  • SID 2025上的天马,用“好屏”技术重构产业叙事