基础部分⚓︎
注意
笔记尚未完善,仅作为草稿参考。
本课程涉及到的工具
- Visual Studio 2019 及以上版本
- VM Ware + 小白老师提供的 xp 虚拟机(需 ZJU 校内网访问
) ,虚拟机内有配套的工具,比如 OllyDBG 等等
- 硬件断点:可以很方便地找出数组越界的 bug,断点设在变量的地址上
- 在 Visual Studio 上设置数据断点
- 电脑是否支持硬件断点取决于 CPU 而不是编译器,早在 80 年代 Intel 就已发明了支持硬件断点的 CPU(
然而 Visual Studio 直到最近几年才支持硬件断点) 。 - 优势:
- 可以快速找到某些错误(如内存泄露等)发生的地方
- 设置断点并不影响程序的运行效率
- 缺陷:一次调试最多只能设置四个硬件断点(资源宝贵)
- 软件断点:断点设在某条语句上
虚拟机:
- VMWare
- Bochs:解释执行 x86 指令,可以在开启电源的那一刻开始进行调试
调试器 soft-ice 支持硬件断点功能,只能在 DOS 物理机上运行,不能在虚拟机上运行。现在已修复,可在 Bochs 上运行
精简指令集:ARM(手机上的 CPU
循环:取指令 -> 解释指令 -> 执行指令 -> 取指令 -> ...
调试工具:OllyDBG
- 单步执行(类似调试的 step over
) :F8 - 断点:F2
- 跟踪进入函数内(类似调试的 step in
) :F7 - 在 Dump 中根据名称或地址查找存储值:Ctrl + G
password.exe
主程序运行有初始化过程(初始化代码有点长)
找到主程序:call
+ 后面跟 main 函数的地址(地址:00401244)
main 被初始化代码调用
评论区
如果有什么问题或想法,欢迎大家在下方留言~