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

逆向工程核心名词详解

一、调试与执行类

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

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

相关推荐
小幽余生不加糖42 分钟前
反无人机系统:技术利刃如何守护低空安全?
笔记·学习·安全·无人机
计算机毕设定制辅导-无忧学长3 小时前
企业级安全实践:SSL 加密与权限管理(一)
网络·安全·ssl
网络安全小吗喽5 小时前
靶场(二十七)---小白心得&&靶场体会---Hawat
网络·测试工具·安全·网络安全·靶场
开开心心就好6 小时前
高效批量转换Word到PDF的方法
javascript·安全·智能手机·pdf·word·objective-c·lisp
冰茶_7 小时前
[Github]GitHub 2FA快速安全配置全攻略
安全·github·2fa
测试专家9 小时前
ARINC653分区调度算法的研究与改进
大数据·运维·网络·安全
FreeBuf_9 小时前
ACR窃密木马改头换面,更名重构后规避能力升级
网络·安全
mooyuan天天9 小时前
pikachu靶场通关笔记42 不安全的URL重定向
安全·web安全·url重定向·pikachu靶场·不安全的重定向
电院工程师1 天前
基于机器学习的侧信道分析(MLSCA)Python实现(带测试)
人工智能·python·嵌入式硬件·安全·机器学习·密码学
easyboot1 天前
openssl创建证书解决不安全问题
运维·服务器·安全