窗口
反汇编窗口
- 显示程序的反汇编代码(机器码 → 汇编指令),直观展示程序执行流程
- 支持设置断点:点击指令行左侧按
F2
可设置软件断点(显示为红色背景) - 高亮关键指令(如跳转、调用),并通过颜色区分代码类型(如系统
API
调用为绿色)
寄存器窗口
- 实时显示
CPU
寄存器的当前值(如EAX
、EBX
、ECX
、EDX
等通用寄存器) - 包含指令指针
EIP
(指向下一条待执行指令地址)和状态寄存器EFLAGS
(标志位如零标志ZF
) - 双击寄存器值可直接修改(如修改
EAX
为特定数值测试程序行为) - 支持查看扩展寄存器(如
MMX
、FPU
浮点单元),适用于多媒体或加密算法分析
数据窗口
- 显示内存数据的十六进制和字符(
ASCII/Unicode
)格式,用于查看变量、字符串或二进制结构 - 支持内存断点:监控指定地址的读写操作(右键 →
Breakpoint
→Memory on access
) - 按
Ctrl+G
输入地址可跳转到指定内存位置(如查看全局变量) - 右键菜单支持数据编辑、搜索特定字节序列(如查找加密密钥)
堆栈窗口
- 显示当前线程的调用堆栈(函数返回地址、参数、局部变量)
- 记录函数调用顺序(如
main()
→funcA()
→funcB()
),帮助理解程序执行上下文
初始静态分析
入口点
- 加载程序后,
OllyDbg
自动暂停在 程序入口点(通常显示为Entry Point of [模块名]
),反汇编窗口会展示入口函数的汇编指令(如PUSH EBP
)。此处是分析起点,需观察初始化逻辑
导入表检查
- 按
Alt+E
打开模块窗口,双击test.exe
查看其导入函数表(如KERNEL32.dll
、USER32.dll
)
字符串与资源搜索
- 右键菜单选择
Search for → All referenced text strings
,查找硬编码字符串(如错误提示、密钥、URL
)。双击结果跳转到代码位置,定位关键逻辑
动态调试阶段(运行程序)
断点
API
断点- 对关键函数设断(如
MessageBoxA
):右键 →Breakpoint → On import
→ 选择API
- 对关键函数设断(如
- 条件断点
- 在数据访问点设内存断点(如监控全局变量):选中内存地址 → 右键 →
Breakpoint → Memory on access
- 在数据访问点设内存断点(如监控全局变量):选中内存地址 → 右键 →
单步
F7
- 步入
F8
- 步过
- 观察寄存器窗口
堆栈分析
- 堆栈窗口(
Alt+K
)显示函数调用链。检查:- 参数传递:
[EBP+8]
通常是第一个参数 - 返回地址:确认函数执行后返回到哪条指令
- 参数传递:
声明:本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ C++程序高级调试与优化_第一篇07/20
- ♥ 相关指令05/06
- ♥ 关于程序03/29
- ♥ x86_64汇编学习记述一08/06
- ♥ 标志寄存器05/13
- ♥ 基础知识03/22