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

【游戏逆向】某游戏技能库分析

技能库的分析大多是从技能名字入手的,然后再通过传入职业或者ID等信息去到库中去取当前角色的可用技能。下面我们来对《**明月刀》中的技能库进行分析。

首先通过CE对技能名字进行搜索,得到较少的结果,分别对结果进行修改,并再次切换技能栏,可以发现其中的一个地址可以改变技能的名字(如图)
在这里插入图片描述
通过OD对这个地址下访问断点,切换技能栏后游戏断下(如图)
在这里插入图片描述
向上分析eax的来源,得到来源于ECX,执行到返回两次后得到+4偏移(如图)
在这里插入图片描述
继续分析可以得到一个数组,和+0偏移(如图)
在这里插入图片描述
但是下F2断点从新观察这个地址,发现这只是一个临时写入的地址,并不能作为技能遍历的公式,所以我们要继续返回来找到真正写入的来源。

再次下断执行到返回,发现这里是一个很大的循环,线程直接卡死了,所以我们要直接来到头部下断,并通过堆栈进行返回。

返回后分析[esp+10]的来源,最终得到来源于009F337C 处的call 00F79070(如图)
在这里插入图片描述
函数内部则是技能库的遍历代码,而对函数的三个参数进行分析,可以发现这是根据技能类型和角色的职业对技能库进行筛选,并最终存放在eax的临时地址里。这样我们就可以自己申请结构体来存放筛选出来的技能,也可以将技能库都遍历出来,再到里面去获取技能。

下面我们就将技能库的来源进行分析。首先到函数内部,可以得到一个数组和+80偏移(如图)
在这里插入图片描述
对技能库的公式进行整理如下

[[[[414A7A8]+314]+80]+n*4]+0 技能ID

[[[[[414A7A8]+314]+80]+n*4]+8] 技能名字

其他的属性需要根据不同的技能类型,职业以及等级去逐个分析。

http://www.lryc.cn/news/41760.html

相关文章:

  • Pytorch深度学习常用预训练网络模型的下载地址
  • 毕业设计 基于51单片机自动智能浇花系统设计
  • 熟悉常用的 Linux 操作和 Hadoop 操作
  • Vue2项目总结-电商后台管理系统
  • 【二】一起算法---队列:STL queue、手写循环队列、双端队列和单调队列、优先队列
  • <Linux>环境变量
  • 【MySQL】下载(超详细教程)
  • 再探pytorch的Dataset和DataLoader
  • 【2023.3.18 美团校招】
  • 程序员必须知道的HTML常用代码有哪些?
  • 多目标家庭行为检测--人脸识别模块构建
  • RocketMQ重复消费问题的原因
  • proxy详细介绍与使用
  • 基于YOLOv5的舰船检测与识别系统(Python+清新界面+数据集)
  • 【C#】List数据去重
  • 避免踩坑,教给你VSCode中最常用到的6项功能
  • ThingsBoard开源物联网平台智慧农业实例快速部署教程(Ubuntu、CentOS适用)
  • 【Java Spring基本问题】记录面试题宝典中自己不熟悉的Spring问题
  • I2C协议简介 Verilog实现
  • 服务器被DDoS攻击,怎么破?
  • 实现完全二叉树
  • 【独家】华为OD机试 - 矩阵最值(C 语言解题)
  • C++模板(进阶)
  • 【数据分析之道(二)】列表
  • 架构师必须要掌握的大小端问题
  • 2023年ACM竞赛班 2023.3.20题解
  • 什么是语法糖?Java中有哪些语法糖?
  • STM32学习(五)
  • STM32的CAN总线调试经验分享
  • 深度剖析自定义类型(结构体、枚举、联合)——“C”