【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 数据查找技巧 | 地址访问调试 | 指令选择技巧 | MOV 汇编指令含义 | 基址值搜索 ) ★

本文主要是介绍【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 数据查找技巧 | 地址访问调试 | 指令选择技巧 | MOV 汇编指令含义 | 基址值搜索 ) ★,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、查找动态地址
  • 二、静态地址查找技巧
    • 1、地址访问调试
    • 2、指令选择技巧
    • 3、MOV 汇编指令含义
    • 4、基址值搜索





一、查找动态地址



以查找子弹数量内存为例 , 参考 【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 查找子弹数据的动态地址 | 查找子弹数据的静态地址 | 静态地址分析 | 完整流程 ) ★ 一、查找子弹数据临时内存地址 博客章节 ;

首先 , 查找到子弹数据的 动态地址 05A59544 , 该步骤很容易 , 多次扫描内存 , 最后使用二分法 , 逐步找到最终的内存地址 ;

然后 , 就是根据 动态地址 05A59544 , 查找到该动态地址是如何计算出来的 ;





二、静态地址查找技巧



根据动态地址 , 查找对应的静态地址 , 以及 寻址 , 偏移 过程 ;


1、地址访问调试


右键点击该地址 , 选择 " 找出是什么访问了这个地址 F5 " 选项 , 就可以对该地址进行调试 , 查询哪个指令为该地址进行了赋值操作 , 也就是 子弹的个数 int 类型数据 是怎么写进去的 ;

也可以左键点击 , 选中该地址 , 直接按 F5 快捷键 ,

在这里插入图片描述

此时 , 可以查询 , 哪些汇编指令 , 访问了 子弹数据的 动态地址 05A59544 ;

在这里插入图片描述


2、指令选择技巧


选择指令的技巧 : 选择指令时 , 不会任意选择的 , 而是有一定的技巧 ;

优先选择

MOV 寄存器 , [寄存器 + 立即数]

格式的指令 , 进行基址查询 ;

在上述类型的指令中 , 优先选择

MOV EAX , [寄存器 + 立即数]

样式的指令 , 大部分游戏中的寄存器都是使用的 EAX 寄存器 ;


第一条指令 , 就符合上述要求 , 那么展开分析第一条指令 ;

在这里插入图片描述

指针基址可能是 =05A59478
05C1C0ED - mov eax,[esi+000000CC]
EAX=00000050
EBX=0E1DBB70
ECX=00000000
EDX=00000001
ESI=05A59478
EDI=00000001
EBP=00000000
ESP=0019F2F0
EIP=05C1C0F3指针基址可能是 =05A5947805C1C0E6 - je mp.CBasePlayerItem::DestroyItem+20D
05C1C0E8 - mov ecx,00000001
05C1C0ED - mov eax,[esi+000000CC]
05C1C0F3 - mov edx,[esi+000000D0]
05C1C0F9 - cmp eax,edx

3、MOV 汇编指令含义


MOV 指令格式 : 将 SRC 数值,写入到 DST 位置 ;

MOV DST,SRC

mov eax,[esi+000000CC] 汇编代码和含义 :

[esi+000000CC] 是 基址变址寻址 , 取出 esi 寄存器的值 05A59478 , 与 CC 相加 , 得到一个地址 05A59544 , 这个地址就是子弹数据的地址 , 读取该地址中的值 , 写入到 EAX 寄存器中 ;

从上述汇编代码中 , 可以知道 , 子弹数据的动态地址 05A59544 , 是由 基址 05A59478 加上立即数 CC 得来的 ;


4、基址值搜索


那么基址 05A59478 又是如何得来的呢 ;

搜索 基址值 所在内存位置 : 那么后续在整个内存中 , 搜索这个基址 05A59478 值 , 查询该值所在的地址 ;

F5 调试 基址值 如何计算得到的 : 然后查询该地址的值是哪条汇编指令计算出来的 , 需要使用 F5 调试 , 选择一条汇编指令进行分析 , 汇编指令选择方法 : 优先选择 MOV EAX , [寄存器 + 立即数] 样式的汇编指令 ;

这篇关于【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 数据查找技巧 | 地址访问调试 | 指令选择技巧 | MOV 汇编指令含义 | 基址值搜索 ) ★的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/806425

相关文章

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.