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

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

逆向工程核心名词详解

一、调试与执行类

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(地址空间随机化)导致基址动态变化
    • 静态基址特征:
      // Unity引擎常见基址
      GameAssembly.dll + 0x00123456
      

5. 偏移(Offset)

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

  • 层级结构

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

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

6. 指针(Pointer)

  • 本质:存储内存地址的特殊变量
  • 多级指针
    int** ppValue = &pValue;  // 二级指针
    
  • 内存模型
    指针变量 → 地址A → 地址B → 目标数据
    

三、数据结构类

7. 栈(Stack)

  • 操作特性
    • PUSH:压入数据,ESP减4(32位系统)
    • POP:弹出数据,ESP加4
  • 函数调用原理
    ; 典型调用过程
    push 参数3
    push 参数2
    push 参数1
    call 函数地址
    

8. 堆(Heap)

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

四、汇编核心类

9. 寄存器(Register)

  • 通用寄存器

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

    标志位触发条件应用场景
    ZF运算结果为0jz/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. 指针扫描:建立地址关联链
  • 内存修改技巧

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

12. 反汇编(Disassembly)

  • 核心价值:将机器码转换为可读汇编代码
  • 工具对比
    工具特点
    IDA Pro支持多架构,交互式分析
    Ghidra开源逆向框架,NSA开发
    OllyDbg动态调试利器,适合Windows程序

六、扩展概念

13. Hook技术

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

14. 内存分页(Memory Paging)

  • 关键机制
    • 4KB分页单位(x86架构)
    • CR3寄存器控制页表基址
  • 逆向意义
    // 虚拟地址转物理地址
    物理地址 = 页目录[DIR]→页表[TABLE]→页内偏移[OFFSET]
    

附:逆向工程学习路径图

基础阶段
掌握调试工具
理解PE文件结构
动态分析能力
静态分析能力
实战项目
外挂开发
漏洞挖掘

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


http://www.mrgr.cn/news/99344.html

相关文章:

  • Three.js 场景编辑器 (Vue3 + TypeScript 实现)
  • HTML 初识
  • # 手写数字识别:使用PyTorch构建MNIST分类器
  • Deepseek输出的内容如何直接转化为word文件?
  • [密码学基础]GM/T 0018-2023 密码设备应用接口规范深度解析:技术革新与开发者实践
  • 论文阅读:2025 arxiv AI Alignment: A Comprehensive Survey
  • c++:智能指针
  • 【学习笔记】Py网络爬虫学习记录(更新中)
  • AI助理iOS开发:Copilot for Xcode 下载与安装全指南
  • 力扣第446场周赛
  • 在kali中安装AntSword(蚁剑)
  • 【mysql】mysql疑难问题:实际场景解释什么是排它锁 当前读 快照读
  • 【C/C++】深入理解指针(二)
  • 使用 Flutter 遇坑小计
  • 获取电脑信息(登录电脑的进程、C盘文件信息、浏览器信息、IP)
  • 常见的页面报错
  • 【前端Skill】点击目标元素定位跳转IDE中的源代码
  • VS Code + GitHub:高效开发工作流指南
  • 前端基础之《Vue(7)—生命周期》
  • aws服务(四)文件存储服务S3 介绍使用代码集成