文章目录
- 一、CPU窗口
- 1、反汇编窗口
- 2、寄存器窗口
- 3、栈地址窗口
- 4、十六进制数据窗口
- 5、堆栈参数解析窗口
- 二、常用快捷键
- 三、字符串检索功能
- 四、调试功能
- 1、上一步
一、CPU窗口
1、反汇编窗口
2、寄存器窗口
寄存器窗口
用于显示和解释当前线程环境下CPU寄存器的各种状态值和内容,并且读者可以通过双击
这些寄存器组来对其进行动态的调整参数
寄存器 | 描述 |
---|---|
EAX | 通用寄存器,用于存放函数返回值、算术运算结果等。 |
EBX | 通用寄存器,用于存放内存地址或其他通用数据。 |
ECX | 通用寄存器,用于存放函数参数。 |
EDX | 通用寄存器,用于存放内存地址或其他通用数据。 |
ESI | 通用寄存器,用于存放源数据的地址,例如字符串拷贝等操作。 |
EDI | 通用寄存器,用于存放目标数据的地址,例如字符串拷贝等操作。 |
EBP | 基址指针,用于存放当前栈帧的基址。 |
ESP | 堆栈指针,用于存放当前堆栈顶部的地址。 |
EIP | 指令指针,用于存放当前正在执行的指令的地址。 |
EFLAGS | 标志寄存器,用于存放CPU的状态标志,例如进位标志、零标志、符号标志等。 |
标志寄存器(EFLAGS)是一个16位的寄存器,用于存储CPU运算的状态标志,例如进位标志、零标志、符号标志等。下面列出了x86架构CPU中的标志寄存器以及它们的含义:
标志位 | 中文名称 | 描述 |
---|---|---|
CF | 进位标志 | 当无符号整数加法或减法的结果超出了寄存器的宽度时,该标志位会被设置为1。CF=1表示有进位发生,CF=0表示无进位发生。 |
PF | 奇偶标志 | 当一个操作的结果中有偶数个二进制位为1时,该标志位会被设置为1。PF=1表示结果中有偶数个1,PF=0表示结果中有奇数个1。 |
AF | 调整标志 | 当一个二进制算术操作(例如加法或减法)中低4位产生了进位或借位时,该标志位会被设置为1。AF=1表示有进位或借位发生,AF=0表示无进位或借位发生。 |
ZF | 零标志 | 当一个操作的结果为零时,该标志位会被设置为1。ZF=1表示结果为零,ZF=0表示结果不为零。 |
SF | 符号标志 | 当一个操作的结果为负数时,该标志位会被设置为1。SF=1表示结果为负数,SF=0表示结果为非负数。 |
TF | 陷阱标志 | 该标志位用于单步调试,当TF=1时,CPU会在每个指令执行后暂停并等待调试器的命令。 |
IF | 中断标志 | 该标志位用于控制CPU是否响应中断请求。当IF=1时,CPU允许中断请求;当IF=0时,CPU禁止中断请求。 |
DF | 方向标志 | 该标志位用于控制字符串操作的方向,当DF=1时,字符串操作是从高地址向低地址进行的;当DF=0时,字符串操作是从低地址向高地址进行的。 |
OF | 溢出标志 | 当有符号整数加法或减法的结果超出了寄存器的宽度时,该标志位会被设置为1。OF=1表示有溢出发生,OF=0表示无溢出发生。 |
3、栈地址窗口
4、十六进制数据窗口
5、堆栈参数解析窗口
二、常用快捷键
通过选项快捷键来设置快捷键,下面是常用快捷键
调试控制
F2:开始/停止调试
F3:单步执行
F7:进入函数调用
F8:跳过函数调用
F9:继续执行
F12:暂停/继续执行
断点
F5:添加/删除断点
Ctrl + F5:添加/删除硬件断点
F6:添加/删除条件断点
F9:启用/禁用断点
Ctrl + F9:启用/禁用所有断点
寄存器
Ctrl + R:打开/关闭寄存器窗口
Ctrl + G:跳转到指定地址
F2/F4/F6:在寄存器窗口中修改寄存器的值
内存
Ctrl + M:打开/关闭内存窗口
Ctrl + E:打开/关闭表达式窗口
Ctrl + F:查找指定字节序列
Ctrl + Shift + F:查找指定指令序列
Ctrl + D:将内存中的数据以十六进制形式导出到文件中
三、字符串检索功能
开始调试后,右键选择搜索,再选择所有模块,选择字符串。
就会检索出所有模块的字符串,结果如下。
四、调试功能
1、上一步
当运行到消息盒子时,此时事件在等待确认按钮关闭消息盒子。此时可以不点击确定关闭消息盒子,可以通过上一步去查看,相关的逻辑判断代码。