[安全实战]逆向工程核心名词详解

逆向工程核心名词详解

一、调试与执行类

1. 断点(Breakpoint)

  • 定义:在代码中设置标记,使程序执行到此处时暂停
  • 类型
    • 普通断点 :通过INT3指令实现
    • 条件断点:满足特定条件时触发
    • 内存断点:监控指定内存区域的读写操作
    • 硬件断点:利用CPU调试寄存器(DR0-DR3)

2. 步进(Step Over/Into)

  • Step Over

    • 逐行执行代码,跳过函数内部逻辑
    • 示例:调试printf()时不进入C标准库源码
  • Step Into

    • 进入被调用函数的内部实现
    • 示例:分析自定义函数CalculateDamage()的算法

3. 调用栈(Call Stack)

  • 定义:记录函数调用关系的动态数据结构
  • 特征
    • 后进先出(LIFO)结构
    • 每个栈帧包含参数、返回地址、局部变量
    • 通过EBP寄存器访问当前栈帧

二、内存操作类

4. 游戏基址(Game Base Address)

  • 核心概念:程序模块加载到内存的起始地址
  • 技术难点
    • ASLR(地址空间随机化)导致基址动态变化

    • 静态基址特征:

      cpp 复制代码
      // Unity引擎常见基址
      GameAssembly.dll + 0x00123456

5. 偏移(Offset)

  • 定义:相对于基址的地址位移量

  • 层级结构

    复制代码
    最终地址 = [[基址 + 偏移1] + 偏移2] + 偏移3
  • 寻址类比

    类似GPS导航:从市中心(基址)出发,向东走500米(偏移1),再向北300米(偏移2)

6. 指针(Pointer)

  • 本质:存储内存地址的特殊变量

  • 多级指针

    cpp 复制代码
    int** ppValue = &pValue;  // 二级指针
  • 内存模型

    复制代码
    指针变量 → 地址A → 地址B → 目标数据

三、数据结构类

7. 栈(Stack)

  • 操作特性

    • PUSH:压入数据,ESP减4(32位系统)
    • POP:弹出数据,ESP加4
  • 函数调用原理

    assembly 复制代码
    ; 典型调用过程
    push 参数3
    push 参数2
    push 参数1
    call 函数地址

8. 堆(Heap)

  • 对比栈

    特性
    管理方式 编译器自动分配释放 程序员手动管理
    分配速度
    内存碎片 可能产生
    典型应用 局部变量 动态内存分配

四、汇编核心类

9. 寄存器(Register)

  • 通用寄存器

    寄存器 特殊用途 示例指令
    EAX 函数返回值存储 mov eax, [ebp+8]
    ECX 循环计数器 loop 标签
    EDX I/O端口操作 out dx, eax
    ESP 始终指向栈顶 push/pop
  • 标志寄存器(EFLAGS)

    标志位 触发条件 应用场景
    ZF 运算结果为0 jz/jnz跳转
    CF 无符号运算溢出 进位判断
    OF 有符号运算溢出 溢出异常处理

10. 常见汇编指令

指令 功能说明 典型应用场景
MOV 数据传送 mov eax, ebx
LEA 加载有效地址 lea eax, [ebx+4]
CMP 比较操作数 cmp eax, 10
JMP 无条件跳转 jmp 0x401000
CALL 调用子程序 call printf
RET 函数返回 ret 4

五、逆向工具类

11. CheatEngine关键功能

  • 地址扫描三阶段

    1. 首次扫描:精确数值匹配
    2. 变化筛选:数值增加/减少过滤
    3. 指针扫描:建立地址关联链
  • 内存修改技巧

    python 复制代码
    # 典型修改流程
    if 找到目标地址:
        冻结数值 → 防止游戏重置
        锁定数值 → 持续保持特定值

12. 反汇编(Disassembly)

  • 核心价值:将机器码转换为可读汇编代码

  • 工具对比

    工具 特点
    IDA Pro 支持多架构,交互式分析
    Ghidra 开源逆向框架,NSA开发
    OllyDbg 动态调试利器,适合Windows程序

六、扩展概念

13. Hook技术

  • 定义:劫持程序执行流程的技术
  • 类型
    • Inline Hook:修改函数入口指令
    • IAT Hook:修改导入地址表
    • SSDT Hook:内核级系统服务表劫持

14. 内存分页(Memory Paging)

  • 关键机制

    • 4KB分页单位(x86架构)
    • CR3寄存器控制页表基址
  • 逆向意义

    cpp 复制代码
    // 虚拟地址转物理地址
    物理地址 = 页目录[DIR]→页表[TABLE]→页内偏移[OFFSET]

附:逆向工程学习路径图
基础阶段 掌握调试工具 理解PE文件结构 动态分析能力 静态分析能力 实战项目 外挂开发 漏洞挖掘

如果本教程帮助您解决了问题,请点赞❤️收藏⭐关注支持!欢迎在评论区留言交流技术细节!欲了解更深密码学知识,请订阅《密码学实战》专栏 → 密码学实战

相关推荐
独行soc8 小时前
2025年渗透测试面试题总结-匿名[校招]高级安全工程师(代码审计安全评估)(题目+回答)
linux·安全·web安全·面试·职场和发展·渗透测试
20242817李臻8 小时前
李臻20242817_安全文件传输系统项目报告_第14周
数据库·安全
DevSecOps选型指南8 小时前
最佳实践|互联网行业软件供应链安全建设的SCA纵深实践方案
安全·开源·devsecops·软件供应链安全厂商·软件供应链安全工具
Mac技巧大咖8 小时前
恶意软件清理工具,让Mac电脑安全更简单
安全·macos·恶意软件清理工具
小蜜蜂嗡嗡8 小时前
flutter项目迁移空安全
javascript·安全·flutter
独行soc12 小时前
2025年渗透测试面试题总结-匿名[校招]安全研究员(SAST方向)(题目+回答)
linux·安全·web安全·面试·职场和发展·渗透测试
枷锁—sha15 小时前
【HW系列】—溯源与定位—Windows入侵排查
windows·安全·web安全
赛卡15 小时前
汽车安全 2030 预测 (功能安全FuSa、预期功能安全SOTIF、网络安全CyberSecurity):成本、效益与行业影响
人工智能·安全·web安全·车载系统·自动驾驶·汽车
midsummer_woo17 小时前
五、web安全--XSS漏洞(2)--XSS相关payload
安全·web安全·xss
stormsha18 小时前
Flask文件处理全攻略:安全上传下载与异常处理实战
python·安全·flask·传媒·python3.11