文章目录

  • 一、CE 找出子弹数据内存地址是临时地址
  • 二、挖掘真实的子弹数据内存地址
    • 1、找出哪些指令访问了子弹数据地址 0x21160114
    • 2、查看 0x21160114 地址是如何计算出来的 ( ESI 寄存器的值 0x21160048 + 000000CC 立即数 相加得到 )
    • 3、查询指针基址 21160048

一、CE 找出子弹数据内存地址是临时地址


在上一篇博客 【Windows 逆向】使用 CE 分析内存地址 ( 运行游戏 | 使用 CE 工具分析游戏内子弹数量对应的内存地址 | 内存地址初步查找 | 使用二分法定位最终的内存地址 ) 中 , 分析到子弹的数据对应的地址是 019FFB48 地址 ;

上述 019FFB48 地址是一个临时地址 , 这个临时地址每次启动都会改变 ; 再次启动 , 中广核个地址又变成了 21160114 地址 ;

二、挖掘真实的子弹数据内存地址


使用 CE 定位出了子弹数据的地址是 0x21160114 地址 ; 可以找到一个最终的子弹数据地址 , 查找方式如下 :

目的是为了计算 0x21160114 地址值 , 是由哪些值计算出来的 ;

1、找出哪些指令访问了子弹数据地址 0x21160114

右键点击找出的 子弹数据 临时内存地址 , 在弹出的菜单栏中选择 " 找出是什么访问了这个地址 " , 或者使用 F5 快捷键 ;

弹出提示对话框 , 选择 " 是 " ;


弹出如下对话框 , 点击 " 停止按钮 " ,

调试就会暂停 ;

下图中 , 左侧的计数 , 表示该指令被访问的次数 ,

下面的这些指令 , 访问了 0x21160114 地址 ;

这些指令 , 都有一些规律 , 这些指令都是 esi 寄存器的值 加上 000000CC 十六进制数值 ;

esi+000000CC

2、查看 0x21160114 地址是如何计算出来的 ( ESI 寄存器的值 0x21160048 + 000000CC 立即数 相加得到 )

双击第一条指令 16B2C0ED - mov eax,[esi+000000CC] , 得到如下数据 , 其中得到 EAX 和 ESI 两个寄存器值 :

  • EAX=00000061
  • ESI=21160048

其中 ESI 寄存器的值 ( 0x21160048 ) + 000000CC 立即数 , 计算结果如下 :

0x21160048+0x000000CC=0x21160114\rm 0x21160048 + 0x000000CC = 0x211601140x21160048+0x000000CC=0x21160114

0x21160114 地址就是子弹数据的真实地址 , 这个地址是 ESI 寄存器的值 加上 0xCC 立即数 , 得到的地址 ;

具体的数据如下 :

EAX=00000061
EBX=0799BB70
ECX=00000000
EDX=00000001
ESI=21160048 ★
EDI=00000001
EBP=00000000
ESP=0019F2F0
EIP=16B2C0F3指针基址可能是 =2116004816B2C0E6 - je mp.CBasePlayerItem::DestroyItem+20D
16B2C0E8 - mov ecx,00000001
16B2C0ED - mov eax,[esi+000000CC] ★
16B2C0F3 - mov edx,[esi+000000D0]
16B2C0F9 - cmp eax,edx

查询另外 3 个数据 , 这 4 条指令 , 都是同样的值 ;

3、查询指针基址 21160048

ESI 寄存器 中有个值 0x21160048 , 这个值不知道是怎么来的 , 这里就需要在整个内存中搜索该值 , 查找哪些内存地址中保存了来值 ;

进而查找 , 是哪条指令 , 计算出了该值 , 或者说是 访问了该值 ;

勾选 " 十六进制 " , 拷贝 21160048 值到搜索框中 , 左侧搜索出来的就是存在 0x21160048 值的地址 ;

选择查找结果的第一个 , 复制到下方地址列表 , 按 F5 查看哪些指令访问了 0x21160048 地址 , 这里的访问指的是 读取 , 写出 操作 ;

开枪 , 没有任何反应 ;

直到选择查找结果的第二个 , 复制到下方地址列表 , 按 F5 查看哪些指令访问了 0x21160048 地址 , 这里的访问指的是 读取 , 写出 操作 ;

开枪 , 才有反应 ;

指针基址可能是 =0799C144 ★

EAX=00000000
EBX=00000005
ECX=21160048
EDX=00000000
ESI=0799BB70
EDI=0799C144
EBP=00000000
ESP=0019F304
EIP=16B100F0指针基址可能是 =0799C144 ★16B100E3 - lea edi,[esi+000005D0]
16B100E9 - mov ebx,00000006
16B100EE - mov ecx,[edi]
16B100F0 - cmp ecx,ebp
16B100F2 - je mp.CBasePlayer::PlayerDeathThink+617D

选择查找结果的第三个 , 复制到下方地址列表 , 按 F5 查看哪些指令访问了 0x21160048 地址 , 这里的访问指的是 读取 , 写出 操作 ;

开枪 , 才有反应 ;

指针基址可能是 =0799BB70 ★

拷贝的数据如下 :

EAX=00000001
EBX=00000001
ECX=21160048
EDX=16B463F8
ESI=0799BB70
EDI=16D40640
EBP=0000000E
ESP=0019F320
EIP=16AFB378指针基址可能是 =0799BB70 ★16AFB36A - jne mp.info_map_parameters+4E42
16AFB36C - mov [esi+00000384],bl
16AFB372 - mov ecx,[esi+000005E8]
16AFB378 - test ecx,ecx
16AFB37A - je mp.info_map_parameters+4E76

调试第 4 个内存地址 , 得到的指针基址是 : 指针基址可能是 =0799BB70 ★

EAX=21160048
EBX=0799BB70
ECX=00000000
EDX=00000001
ESI=21160048
EDI=00000001
EBP=00000000
ESP=0019F2F0
EIP=16B2C0E6指针基址可能是 =0799BB70 ★16B2C0D8 - cmp esi,[ebx+000005EC]
16B2C0DE - jne mp.CBasePlayerItem::DestroyItem+20D
16B2C0E0 - cmp eax,[ebx+000005EC]
16B2C0E6 - je mp.CBasePlayerItem::DestroyItem+20D
16B2C0E8 - mov ecx,00000001

调试第 5 个内存地址 , 得到的指针基址是 : 指针基址可能是 =103508BC ★

EAX=103508BC
EBX=15A3C194
ECX=21160048
EDX=00000002
ESI=00000000
EDI=16ACE3C0
EBP=00000014
ESP=0019FAD0
EIP=16ACE3CB指针基址可能是 =103508BC ★16ACE3C4 - test eax,eax
16ACE3C6 - je mp.GetNewDLLFunctions+8A4
16ACE3C8 - mov ecx,[eax+7C]
16ACE3CB - test ecx,ecx
16ACE3CD - je mp.GetNewDLLFunctions+8A4

【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( CE 找出子弹数据内存地址是临时地址 | 挖掘真实的子弹数据内存地址 )相关推荐

  1. 【Windows 逆向】CheatEngine 工具 ( CheatEngine 简介 | 使用 Lazarus 编译 CE 源码 | CheatEngine 相关文档资料 )

    文章目录 一.CheatEngine 简介 二.使用 Lazarus 编译 CE 源码 三.CheatEngine 相关文档资料 一.CheatEngine 简介 CheatEngine 简称 CE ...

  2. 【Windows 逆向】CheatEngine 工具 ( 汉化版 CE 工具推荐 | 编写简单 C++ 程序 | C++ 程序执行分析 | 使用 CE 修改上述 C++ 程序 )

    文章目录 一.汉化版 CE 工具推荐 二.编写简单 C++ 程序 三.C++ 程序执行分析 四.使用 CE 修改上述 C++ 程序 一.汉化版 CE 工具推荐 推荐一个汉化版的 CE 工具 : htt ...

  3. 什么工具可以分析php源代码,PHP_一个可以找出源代码中所有中文的工具,一个可以找出源代码中所有中 - phpStudy...

    一个可以找出源代码中所有中文的工具 一个可以找出源代码中所有中文的工具 填写需要查找的路径$sf即可. 功能 1 找出所有中文 2 忽略注释语句中的中文 3 可添加需要忽略的文件和文件夹 4 生成日志 ...

  4. 在excel中如何筛选重复数据_EXCEL里如何快速找出重复的数据?

    [问题] 有网友私信于我"请问一组6个数字.一共450组.EXCEL能不能自动识别出重复3个数字以上组数出来呢?比如第一组1-2-3-4-5-6.第二组7-8-9-10-11-12.第三组1 ...

  5. 33. 如何找出 SAP Fiori Launchpad 里点击 tile 之后,读取业务数据调用的是哪个 SAP 后台系统的 OData 服务

    文章目录 如何找到 SAP Fiori Launchpad tile 对应的 SAP UI5 应用名称 如何找到 SAP UI5 应用发出的 OData 请求明细 如何找到 SAP UI5 应用发送的 ...

  6. Lesson 11.1-11.5 梯度下降的两个关键问题反向传播的原理走出第一步:动量法开始迭代:batch和epochs在Fashion—MNIST数据集熵实现完整的神经网络

    在之前的课程中,我们已经完成了从0建立深层神经网络,并介绍了各类神经网络所使用的损失函数.本节课开始,我们将以分类深层神经网络为例,为大家展示神经网络的学习和训练过程.在介绍PyTorch的基本工具A ...

  7. 前后两组结构相同的数据进行比较,找出新增的,需要删除的,原来存在的

    想象现在服务器在向客户端发送数据,每隔几秒发送一次数据,客户端需要将前后两次的数据进行对比,找出相对于收的数据需要将上一次的数据删除的部分,以及此次新增加的,还有原来就已经存在的数据. 代码如下: v ...

  8. 计算机用公式找出第一名,用公式查找Excel工作表中重复数据

    前不久,一位网友求教,要求找出Excel工作表中的重复数据并在单元格中列出.我给出了一个数组公式供参考,但不是太符合要求,因为这个数组公式虽然找出了重复数据,但是如果将数组公式向下复制时超出了出现重复 ...

  9. js分页列表找出最后一页的最后一条数据

    需求场景: 需求描述:如图所示,想要实现列表中排第一位向上的箭头隐藏, 列表中排最后一位向下的箭头隐藏 问题描述: 因为列表存在分页,数据不确定,所以不确定最后一位是否在第几页 代码实现: html: ...

  10. 100亿数据找出最大的1000个数字

    这是互联网领域一个比较经典的算法问题(top k),如何在巨大的数据中找出最大,或者访问量最高的前10个,前100个或者前1000个数据.比如在2亿用户记录中找出信用等级最高的,在上亿个搜索词汇中找出 ...

最新文章

  1. 2022-2028年中国动力电池行业深度调研及投资前景预测报告
  2. 如何查看ubuntu下的分区命令
  3. 某程序员leader吐槽自己的工作就是合并周报!撕逼扯淡!跪舔领导!月薪五万却非常焦虑!...
  4. java中HashMap在多线程环境下引起CPU100%的问题解决
  5. Ubuntu服务器版硬件认证详情
  6. php分页样式,thinkphp分页样式修改
  7. Matlab | Matlab从入门到放弃(3)——函数与画图
  8. 静态路由与动态路由的优先级_静态路由基础知识
  9. 芯片,开源,数学,计算机
  10. nginx 413 Request Entity Too Large
  11. vue中组件的导出导入_5.2 vue中 keep-alive 组件的作用,详细解释keep-alive使用方法...
  12. R语言构建层次分析模型不看一下吗~
  13. Java HashMap工作原理及实现
  14. 实力封装:Unity打包AssetBundle(四)
  15. oracle not like优化,Oracle中的like优化
  16. 51单片机流水灯从原理图到PCB转化
  17. keil5工程函数无法跳转到函数定义解决方法
  18. 【图像超分辨率】Maintaining Natural Image Statistics with the Contextual Loss
  19. Linux脚本定时开关机,2020-09-06shell脚本开机自动启动与定时任务
  20. 深度推荐模型 -NFM

热门文章

  1. 【Python之旅】第七篇(二):Redis使用基础
  2. 经典排序算法python回顾之一 交换排序
  3. 浏览器根据什么来判定脚本失控?
  4. HDU 1086 You can Solve a Geometry Problem too
  5. 运维笔试Shell编程题
  6. (3)数据库的建立和数据表的操作
  7. unittest多线程生成报告-----BeautifulReport
  8. ARM非对齐操作异常解决过程
  9. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)
  10. C语言的补码表示和unsigned及signed的转换