Windows逆向工程入门之MASM OFFSET 伪指令

news/2025/3/3 5:40:11/
  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​链接点击跳转博客主页

目录

一、引言

二、OFFSET 伪指令的技术本质

1. ​编译时静态地址计算

2. ​与 LEA 指令的对比

3. ​典型应用场景

三、逆向工程核心知识点

1. ​内存布局与 PE 文件结构

2. ​数组与数据结构逆向分析

3. ​硬编码地址的威胁与防护


一、引言

在 Windows 逆向工程与底层开发中,理解内存寻址机制是核心技能之一。MASM(Microsoft Macro Assembler)的 OFFSET 伪指令作为静态地址计算工具,直接影响代码生成与内存操作模式。


二、OFFSET 伪指令的技术本质
1. ​编译时静态地址计算
  • 功能定义OFFSET 在编译阶段直接解析变量或标签的 ​相对虚拟地址(RVA)​,生成硬编码的立即数。
  • 语法形式MOV reg, OFFSET symbol,其中 symbol 可为变量名、数组名或代码标签。
  • 机器码表现:直接替换为符号的偏移值(如 B8 00304000 对应 MOV EAX, OFFSET var,假设 var 地址为 0x403000)。
2. ​与 LEA 指令的对比
特性OFFSET*LEA
计算阶段编译时运行时
地址生成方式硬编码立即数通过寻址模式动态计算
性能影响无运行时开销需占用 ALU 周期
灵活性仅支持固定符号支持复杂表达式(基址+变址)
3. ​典型应用场景
  • 全局变量初始化MOV ESI, OFFSET globalBuffer 用于初始化指针。
  • 函数跳转表构建JMP [OFFSET jumpTable + EAX*4]
  • 结构体成员访问MOV EDX, OFFSET structInstance.member

三、逆向工程核心知识点
1. ​内存布局与 PE 文件结构
  • 数据段映射.data 段中的变量通过 OFFSET 获取的地址为 ​ImageBase + RVA
    ; 假设 ImageBase=0x400000,var 的 RVA=0x3000
    MOV EAX, OFFSET var  ; EAX = 0x403000
  • 重定位表影响:若程序启用 ASLR,需通过重定位表动态修正硬编码地址。
2. ​数组与数据结构逆向分析
  • 数组访问模式识别

    MOV EAX, [arr + ECX*4 + 8]  ; 等价于 arr[ECX+2]

    逆向时需推断元素类型(*4 表明 DWORD 类型)和索引逻辑。

  • 结构体逆向技巧

    ; 假设 struct { int a; char b[4]; }
    MOV EBX, [EDX + 0]    ; 访问 a 成员
    MOV CL,  [EDX + 4]    ; 访问 b[0]
3. ​硬编码地址的威胁与防护
  • 漏洞利用:攻击者可通过 OFFSET 地址定位敏感数据(如函数指针)。
  • 防护策略
    • ASLR:随机化模块基址,使硬编码地址失效。

场景MASM 语法逆向特征
全局变量地址加载MOV EAX, OFFSET var硬编码立即数(如 0x403000
数组首地址获取LEA EBX, arrEBX = arr(动态计算)
结构体成员偏移OFFSET struct.field固定偏移值(如 +0x8
函数指针调用CALL [OFFSET funcTable]间接调用(IAT 或 VTABLE 访问)

http://www.ppmy.cn/news/1576215.html

相关文章

新生校园报道小程序毕业系统设计

系统功能 -----------------------------------------------------------------------新生报道小程序----------------------------------------------------------- 系统功能: 系统角色分为管理员端和用户端(指普通的新生等) ------------普通用户端:…

留守儿童|基于SprinBoot+vue的留守儿童爱心网站(源码+数据库+文档)

留守儿童爱心网站 目录 基于SprinBootvue的留守儿童爱心网站 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&…

JSON-to-Excel v2.0.0发布,可以在Excel内部,把JSON转换成Excel格式,嵌套的JSON也能转

本文是JSON-to-Excel插件的官方文档 https://json-to-excel.wtsolutions.cn 简化浓缩翻译的中文版,仅供参考。详细的还请查看官方文档。 插件简介 JSON-to-Excel是一款强大的Microsoft Excel插件,专门用于将JSON数据转换为Excel表格格式。这款插件能够…

面试问题——如何解决移动端1px 边框问题?

面试问题——如何解决移动端1px 边框问题? 最近,不少小伙伴向我反映,他们在面试中频繁被问到关于1px边框的问题。这个看似老生常谈的话题,没想到在面试中的出现率依然这么高,着实让我有些意外。对于那些对这个问题感到…

React 常见面试题及答案

记录面试过程 常见问题,如有错误,欢迎批评指正 1. 什么是虚拟DOM?为什么它提高了性能? 虚拟DOM是React创建的一个轻量级JavaScript对象,表示真实DOM的结构。当状态变化时,React会生成新的虚拟DOM&#xf…

【Java项目】基于Spring Boot的网上商城购物系统

【Java项目】基于Spring Boot的网上商城购物系统 技术简介:采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介:系统实现管理员:首页、个人中心、用户管理、商品分类管理、商品信息管理、订单评价管理、系统管理、订单管理&#x…

Java中的泛型类 --为集合的学习做准备

学习目标 ● 掌握在集合中正确使用泛型 ● 了解泛型类、泛型接口、泛型方法 ● 了解泛型上下限 ● 了解基本的使用场景 1.有关泛型 1.1泛型的概念 泛型(Generics)是Java中引入的参数化类型机制,允许在定义类、接口或方法时使用类型参数&a…

目标检测——数据处理

1. Mosaic 数据增强 Mosaic 数据增强步骤: (1). 选择四个图像: 从数据集中随机选择四张图像。这四张图像是用来组合成一个新图像的基础。 (2) 确定拼接位置: 设计一个新的画布(输入size的2倍),在指定范围内找出一个随机点(如…