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

Windows逆向工程入门之MASM 数据寻址

  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​链接点击跳转博客主页

目录

一、x64 体系下的全局变量与内存寻址

1. RIP 相对寻址机制

2. 全局变量访问原理

3. 内存分页机制

二、复合数据类型与内存布局

1. 结构体内存对齐

2. 多级指针解析

3. 栈内存分配策略


一、x64 体系下的全局变量与内存寻址

1. RIP 相对寻址机制

在 x64 架构中,由于地址空间扩展到 64 位,指令编码方式发生重大变革。RIP 相对寻址(RIP-relative addressing)成为默认寻址模式,其指令编码结构如下:

mov dword ptr [rip+0x000f9827], 2
; 机器码:C7 05 27 98 0F 00 02 00 00 00
  • 编码解析

    • C7:MOV 指令主操作码
    • 05:ModR/M 字节(00 000 101),表示 32 位位移寻址
    • 4字节位移值:27 98 0F 00(小端存储,实际偏移量 0xF9827)
    • 4字节立即数:02 00 00 00(小端存储,十进制值 2)
  • 地址计算验证

    指令地址:00007FF773DE97DC
    RIP 值:00007FF773DE97DC + 指令长度(7) = 00007FF773DE97E3
    最终地址:00007FF773DE97E3 + 0xF9824 = 00007FF773EE3007

2. 全局变量访问原理

在 x64 架构中,直接加载 64 位立即数到内存存在指令编码限制,需通过寄存器中转:

// C++ 代码
g_var = 0x12345678abcdef;

// 对应汇编实现
movabs rax, 0x12345678abcdef  ; 48 B8 EF CD AB 78 56 34 12 00
mov qword ptr [rip+0xf9824], rax ; 48 89 05 24 98 0F 00

3. 内存分页机制

Windows 采用 4KB 分页管理,关键数据结构:

结构名称大小描述
PML4 (CR3)4096 项顶级页表,每项 8 字节
PDPT512 项页目录指针表,每项 8 字节
PDT512 项页目录表,每项 8 字节
PTE512 项页表项,每项 8 字节

逆向分析技巧:

!pte 00007FF773EE3000  # WinDbg 查看页表结构
dt _MMPTE 7FF773EE3000 # 解析 PTE 字段

二、复合数据类型与内存布局

1. 结构体内存对齐

#pragma pack(push, 4)
struct MyStruct {
    int a;      // 偏移 0x00
    int b;      // 偏移 0x04
};              // 总大小 8 字节
#pragma pack(pop)

内存布局验证(小端序):

0x0019FED8: 44 33 22 11   // a = 0x11223344
0x0019FEDC: 88 77 66 55   // b = 0x55667788

2. 多级指针解析

在 x64 环境下,指针操作展现新的特性:

char**** p4 = reinterpret_cast<char****>(0x0000003E0F1BF8B4);

内存访问链:

p4 → p3 → p2 → p1 → ch=0x11

3. 栈内存分配策略

x64 调用栈典型布局(函数序言):

sub rsp, 28h                ; 分配栈空间
mov [rsp+20h], rbx          ; 非易失寄存器保存

相关文章:

  • GTID模块初始化简介和参数binlog_gtid_simple_recovery
  • C#数据类型及相互转换
  • GitHub获取token
  • 计算光学成像与光学计算概论
  • typedef关键字、using关键字
  • RoboBrain:从抽象到具体的机器人操作统一大脑模型
  • 初阶数据结构习题【11】(3顺序表和链表)——141. 环形链表I
  • vue面试宝典之二
  • Linux14-io多路复用
  • Impacket工具中的横向渗透利器及其使用场景对比详解
  • Vue进阶之Vue3源码解析(二)
  • 零基础学习Python之面向对象编程:属性访问控制与封装实现_我的学习Python记录13
  • QT中使用C++调用 python脚本
  • DeepSeek大模型 —— 全维度技术解析
  • 基于MD5分块哈希的前端图片重复检测方案
  • 系统运维分级掌握知识技能
  • 晶晨S905L3S/S905L3SB芯片烧录-BL(bootloader)加载工具分享
  • 外键 FK enable constraints enq:TM lock
  • ubuntu局域网部署stable-diffusion-webui记录
  • Java锁
  • 企业寻找客户有哪些途径/seo怎么优化网站排名
  • 个人建网站流程/安卓优化大师官方下载
  • 手机网站建设哪家好/品牌广告语经典100条
  • 微信微网站制作教程/网页优化包括什么
  • 北京公司网站建设定制/线上引流的八种推广方式
  • 企业网站seo教程/产品推广方案范例