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

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 测试

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


 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Unity 之 【Android Unity FBO渲染】之 [Unity 渲染 Android 端播放的视频] 的一种方法简单整理
  • Centos7更换阿里云的 YUM 镜像仓库
  • 计算机网络30——Linux-gdb调试命令makefile
  • Jenkins Docker Pipeline Clone Build Deploy mysqldump
  • 企业项目中常用的表结构设计
  • 摩托罗拉大顾问ADVISOR BP机拆解评测
  • MySQL索引测试
  • 智能体时代,AI正从“神坛”走向“人间”
  • 工具集锦 论文 施工ing
  • element-plus弹窗内分页表格保留勾选项
  • k8s中的存储
  • Vim使用技巧——第一章 Vim解决问题的方式
  • 力扣 11.盛最多水的容器
  • jpa适配mysql切换达梦可能的坑
  • IBM 撤出背后:国内技术人如何突围?
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • emacs初体验
  • ES10 特性的完整指南
  • JS基础之数据类型、对象、原型、原型链、继承
  • js中的正则表达式入门
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • overflow: hidden IE7无效
  • Terraform入门 - 1. 安装Terraform
  • ViewService——一种保证客户端与服务端同步的方法
  • zookeeper系列(七)实战分布式命名服务
  • 笨办法学C 练习34:动态数组
  • 从setTimeout-setInterval看JS线程
  • 动态魔术使用DBMS_SQL
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端面试题总结
  • 如何编写一个可升级的智能合约
  • 使用agvtool更改app version/build
  • 双管齐下,VMware的容器新战略
  • 算法之不定期更新(一)(2018-04-12)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 我这样减少了26.5M Java内存!
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 应用生命周期终极 DevOps 工具包
  • 用jQuery怎么做到前后端分离
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 阿里云ACE认证之理解CDN技术
  • 关于Android全面屏虚拟导航栏的适配总结
  • 函数计算新功能-----支持C#函数
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • !$boo在php中什么意思,php前戏
  • #QT 笔记一
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (6)添加vue-cookie
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (三)终结任务
  • (四)Android布局类型(线性布局LinearLayout)
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)Oracle存储过程编写经验和优化措施