DEBUG.exe 基础
DOS 自带的调试工具,支持单步执行、寄存器查看、内存修改。
启动
|
|
常用命令
| 命令 | 功能 | 示例 |
|---|---|---|
| r | 查看/修改寄存器 | r ax |
| d | 查看内存 | d ds:0100 |
| e | 修改内存 | e ds:0100 90 90 |
| t | 单步执行 | t |
| g | 运行到断点 | g 0100 |
| u | 反汇编 | u cs:0100 |
| a | 汇编 | a cs:0100 |
单步调试示例
|
|
Turbo Debugger (TD)
图形化调试器,支持:
- 源码/反汇编窗口
- 断点设置
- 变量监视
- 调用栈查看
GDB 调试(32 位 Linux)
|
|
GDB 命令:
|
|
逆向分析基础
静态分析
- 使用
objdump或IDA查看反汇编 - 识别函数边界(PUSH BP / MOV BP,SP … POP BP / RET)
- 追踪数据流
动态分析
- 设置断点
- 观察寄存器变化
- 修改内存测试边界条件
常见调试技巧
| 问题 | 调试方法 |
|---|---|
| 程序崩溃 | 检查栈平衡(PUSH/POP 是否配对) |
| 结果错误 | 单步执行,逐条检查寄存器 |
| 死循环 | 检查 CX 是否正确递减 |
| 内存越界 | 检查 DS/ES 段地址 |
总结
调试是汇编开发的必备技能。掌握 DEBUG/GDB,你就能定位任何底层 Bug。
下一篇:《汇编在现代系统中的位置:从 Bootloader 到逆向工程》