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

105.游戏安全项目-基址的技术原理-分析技巧

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

内容参考于:易道云信息技术研究院

本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。

上一个内容:104.游戏安全项目-基址的技术原理-基址的本质

下图是火炬之光2游戏人物的血量地址

火炬之光2这个游戏里存储人物对象的结构是如下代码,是一个多级基址结构

class F{
    人物 r;
}
class 人物{
    int hp;
}
F* f;
int main(){
    f = new F;
}

血量的偏移是560

可以看出搜索对象首地址,没有绿色高亮的数据

这种多级的逆向分析首先要确定在游戏中有什么位置会只访问人物对象或者访问人物对象并且访问其它少量的对象,如果一个位置会访问多个位置说明这个函数是通用性的会有很多层,会封装的很深找起来很费劲,比如通过减血量的代码找人物对象就会很费劲,火炬之光里使用的方式是通过把攻击者的对象传给一个函数然后攻击者里有一个变量表示的是攻击目标,找攻击目标在那赋值的就非常的费劲需要找很长时间,如果通过只访问人物对象的位置去找人物对象会变得很简单,比如通过显示血量的ui,下图红框位置

所以当遇到多级基址的情况要先考虑游戏中什么位置会访问人物对象并且除了人物对象不会访问其它的对象或者少量的其它对象,通过显示血量的ui找基址就是找什么访问了血量

然后找出了三个位置有访问人物对象,然后打开 Ollydbg 工具跟过去分析

然后很幸运第一个地址就满足了条件,这里只有一个人物对象

把它改为retn之后ui直接变成灰色的了,说明找对了位置

然后选择补丁

选择恢复原始代码,让它恢复

然后 ctrl + f9返回到上层

ecx的值来自于eax + 2c位置,eax是上一个函数的返回值

然后进入上一个函数中,发现了数字,数字就是全局变量,但是这里的数字是 游戏的基址加偏移的结果,所以用的时候需要用 27095F4 - 游戏的基址

当前游戏的基址是 220000,关联人物对象变量的偏移就是 27095F4 - 220000 = 24E95F4,然后再用 Torchlight2.exe+24E95F4 位置的值再加2c

然后使用 Cheat Engine 测试

当发现找一个地址很费劲的时候说明 有可能方向找错了,如果找对了方向会很容易


 


http://www.kler.cn/a/312365.html

相关文章:

  • 【Threejs】相机控制器动画
  • C++ QT 工具日志异步分批保存
  • 【C++】详细介绍模版进阶,细节满满
  • Elasticsearch中什么是倒排索引?
  • 动手学深度学习68 Transformer
  • 组件间通信(组件间传递数据)
  • 游戏性能优化
  • 硬件工程师笔试面试学习汇总——器件篇目录
  • 梳理归档文档
  • 鸿蒙开发之ArkUI 界面篇 十四 个人中心导航界面
  • 数据结构 ——— 常见的时间复杂度计算例题(上篇)
  • 使用Spring Boot和Spring WebFlux实现响应式打字效果
  • 使用 Python 高分解决 reCAPTCHA v3 的指南
  • orangepi部署web环境
  • 基于SpringBoot的考研资讯平台设计与实现
  • 李宏毅2022深度学习作业代码记录(hw1)—— COVID19
  • 进程状态的优先级
  • k8s-API 访问控制
  • rocky Linux 9.4系统配置zabbix监控MySQL主从复制状态与配置钉钉告警
  • 从0开始学ARM
  • 通过shell脚本一键修改Linux主机名和IP地址脚本
  • Linux:Bash中的文件描述符
  • vs code 搜索 jar 中的类
  • JAVA同城生活新引擎外卖跑腿团购到店服务多合一高效系统小程序源码
  • QT打开摄像头采集
  • Unity 高亮插件Highlight Plus快速入门