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

逆向工程核心名词详解

一、调试与执行类

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文件结构 动态分析能力 静态分析能力 实战项目 外挂开发 漏洞挖掘

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

相关推荐
Want5956 小时前
大模型安全吗?数据泄露与AI伦理的黑暗面!
网络·人工智能·安全·aigc
九转苍翎7 小时前
Java EE(20)——线程安全——ThreadLocal
安全·java-ee
小白iP代理7 小时前
长效IP与短效IP:如何选择适合业务的代理类型
网络·tcp/ip·安全
学习溢出9 小时前
【网络安全】OWASP 十大漏洞
网络·安全·web安全·网络安全
霖檬ing9 小时前
Linux——系统安全及应用
安全·系统安全
AORO_BEIDOU10 小时前
北斗短报文终端与5G融合:构建空天地海一体化通信新生态
科技·5g·安全·智能手机·信息与通信
半升酒10 小时前
Day-1 漏洞攻击实战
安全·网络安全
浩浩测试一下11 小时前
信息收集之hack用的网络空间搜索引擎
android·网络·安全·web安全·搜索引擎·网络安全·安全架构
网易易盾11 小时前
AIGC产品如何平衡用户体验与内容安全?
安全·aigc·ux