欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > Windows逆向工程入门之MASM浮点数存储机制

Windows逆向工程入门之MASM浮点数存储机制

2025/3/9 20:44:22 来源:https://blog.csdn.net/2301_80612536/article/details/145952074  浏览:    关键词:Windows逆向工程入门之MASM浮点数存储机制
  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​链接点击跳转博客主页

目录

一、IEEE 754标准在MASM中的实现

1. 浮点数存储模型解析

(1) 单精度浮点(REAL4)结构

二、逆向工程中的浮点数据分析

1. 浮点指令逆向分析

(1) x87 FPU指令集

(2) SSE指令优化

三、安全领域的深度应用

1. 浮点异常攻击面

(1) 非规格化数攻击


一、IEEE 754标准在MASM中的实现

1. 浮点数存储模型解析

(1) 单精度浮点(REAL4)结构
var1 REAL4 +3.5  ; 内存布局:00 00 60 40 (小端序)
  • 二进制分解

    • 符号位:1bit(0表示正数)
    • 指数域:8bit(偏移值127)
    • 尾数域:23bit(隐式前导1)
  • 编码过程

    1. 十进制转换:3.5 = 11.1₂
    2. 规格化处理:1.11₂ × 2¹ → 指数 = 127 + 1 = 128 (10000000₂)
    3. 尾数处理:舍去前导1,补零至23位 → 11000000000000000000000₂
  • 内存验证

    00404000: 00 00 60 40  ; 小端序解析为0x40600000
    0x40600000 → 0_10000000_11000000000000000000000

二、逆向工程中的浮点数据分析

1. 浮点指令逆向分析

(1) x87 FPU指令集
fld REAL4 PTR [var1]     ; 将3.5压入FPU栈(ST0)
fadd REAL8 PTR [var2]    ; ST0 = ST0 + (-7.25)
fstp REAL4 PTR [result]  ; 存储结果并弹出栈
  • 逆向特征
    • 指令操作数大小决定精度(DWORD/QWORD)
    • 栈操作顺序:ST(0)-ST(7)循环使用
(2) SSE指令优化
movss xmm0, [var1]       ; 加载单精度数
cvtsi2sd xmm1, eax       ; 整数转双精度
divpd xmm2, xmm3         ; 打包双精度除法
  • 关键特征
    • 寄存器扩展:XMM0-XMM15(AVX扩展至YMM/ZMM)
    • 指令后缀:
      • SS:标量单精度
      • SD:标量双精度
      • PS:打包单精度

三、安全领域的深度应用

1. 浮点异常攻击面

(1) 非规格化数攻击
float f = 1.401298e-45;  // 最小非规格化数
int i = (int)f;           // 触发精度丢失
  • 内存特征
    • 单精度:指数域全0(0x00000001 - 0x007FFFFF)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词