Windows逆向工程入门之MASM 选择结构

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

目录

一、标志寄存器

1.1 核心标志位功能详解

二、条件跳转指令系统分类

2.1 无符号数跳转指令集

2.2 有符号数跳转指令集

2.3 特殊检测指令

三、MASM高级语法解析

3.1 结构化伪指令转换机制

3.2 复杂条件表达式处理

四、逆向工程实战技巧

4.1 控制流还原方法论


一、标志寄存器

1.1 核心标志位功能详解

标志位 名称 触发场景 逆向工程意义
CF 进位标志 无符号运算最高有效位产生进位(加法)或借位(减法) 检测缓冲区溢出、大整数运算关键标志
PF 奇偶标志 结果低8位中1的个数为偶数时置位 加密算法奇偶校验分析关键点
ZF 零标志 运算结果为零时置位 判断循环终止、条件分支核心依据
SF 符号标志 运算结果的最高有效位为1时置位 有符号数运算结果正负判断依据
OF 溢出标志 有符号运算结果超出补码表示范围时置位 整数溢出漏洞检测关键指标

二、条件跳转指令系统分类

2.1 无符号数跳转指令集

指令 等价形式 判断条件 典型应用场景
JA JNBE CF=0 && ZF=0 内存地址范围校验
JAE JNB CF=0 数组边界检查
JB JNAE CF=1 输入参数有效性验证
JBE JNA CF=1 | ZF=1 缓冲区长度安全控制

2.2 有符号数跳转指令集

指令 等价形式 判断条件 典型应用场景
JG JNLE SF=OF && ZF=0 温度监控系统阈值判断
JGE JNL SF=OF 游戏得分等级评定
JL JNGE SF≠OF 金融交易价格波动监测
JLE JNG SF≠OF | ZF=1 工业控制系统压力阀值控制

2.3 特殊检测指令

JCXZ  目标地址    ; CX == 0 时跳转(实模式常用)
JECXZ 目标地址    ; ECX == 0 时跳转(保护模式特性)
LOOP  目标地址    ; ECX减1后非零跳转(循环结构核心)

三、MASM高级语法解析

3.1 结构化伪指令转换机制

; 原始伪指令
.IF eax > ebx
    mov edx, eax
.ELSE
    mov edx, ebx
.ENDIF

; 转换后的汇编代码
cmp eax, ebx
jle @ELSE_BLOCK
mov edx, eax
jmp @END_IF
@ELSE_BLOCK:
mov edx, ebx
@END_IF:

3.2 复杂条件表达式处理

.IF (eax > 100) && (ebx < 50) || (CF)
    ; 转换为:
    cmp eax, 100
    jle @CHECK_SECOND
    cmp ebx, 50
    jl @EXECUTE_BLOCK
@CHECK_SECOND:
    jnc @END_IF
@EXECUTE_BLOCK:
    ; 代码块
@END_IF:

四、逆向工程实战技巧

4.1 控制流还原方法论

  1. 分支结构识别

    • 连续CMP+Jcc指令对定位条件判断
    • LOOP指令识别循环结构
    • 函数prolog/epilog识别(push ebp/mov ebp,esp)
  2. Switch结构逆向

; 典型跳转表结构
mov eax, [索引]
jmp [跳转表+eax*4]

你可能感兴趣的:(windows,汇编,安全,逆向,病毒)