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

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

逆向工程核心名词详解

一、调试与执行类

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.xdnf.cn/news/699.html

相关文章:

  • DAY6:从执行计划到索引优化的完整指南
  • React基础知识(补充中)
  • PyTorch基础学习系列一
  • 安卓手机怎样配置数据加速
  • Java File 类详解
  • 从事计算机视觉需要掌握哪些知识
  • 微信小程序通过mqtt控制esp32
  • Map遍历
  • Linux 进程概念补充 (自用)
  • 【数据结构】红黑树
  • 2181、合并零之间的节点
  • 右起第2个LED灯的闪烁(STC89C52单片机)
  • HTTP 1.0 和 2.0 的区别
  • (done) 吴恩达版提示词工程 1. 引言 (Base LLM 和 Instruction Tuned LLM)
  • ESP32开发之任务创建
  • 用P0口实现流水灯效果(STC89C52单片机)
  • JavaScript解密实战指南:从基础到进阶技巧
  • 硬件电路(24)-NE555振荡电路
  • 六、小白如何用Pygame制作一款跑酷类游戏(静态障碍物和金币的添加)
  • c++通讯录管理系统
  • 运筹学之引力搜索
  • Mac上Cursor无法安装插件解决方法
  • 【KWDB 创作者计划】_上位机知识篇---ESP32-S3Arduino
  • Aerich实战指南:零基础掌握异步ORM数据库迁移工具
  • Linux `init 6` 相关命令的完整使用指南
  • Android Gradle多渠道打包
  • 【自然语言处理与大模型】Linux环境下Ollama下载太慢了该怎么处理?
  • AIStarter新版本发布:模型、插件与工作流的高效管理工具
  • 【C++初阶】第15课—模版进阶
  • 多模态大语言模型arxiv论文略读(三十)