[安全实战]逆向工程核心名词详解
逆向工程核心名词详解
一、调试与执行类
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 标签EDX I/O端口操作 out dx, eaxESP 始终指向栈顶 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关键功能
-  
地址扫描三阶段:
- 首次扫描:精确数值匹配
 - 变化筛选:数值增加/减少过滤
 - 指针扫描:建立地址关联链
 
 -  
内存修改技巧:
# 典型修改流程 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] 
附:逆向工程学习路径图
如果本教程帮助您解决了问题,请点赞❤️收藏⭐支持!欢迎在评论区留言交流技术细节!欲了解更深密码学知识,请订阅《密码学实战》专栏 → 密码学实战
