跳转至

基础部分⚓︎

注意

笔记尚未完善,仅作为草稿参考。

本课程涉及到的工具

  • 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,指令更少 复杂指令集:Intel CPU,速度更快,算力更强,耗电

循环:取指令 -> 解释指令 -> 执行指令 -> 取指令 -> ...

调试工具:OllyDBG

  • 单步执行(类似调试的 step over:F8
  • 断点:F2
  • 跟踪进入函数内(类似调试的 step in:F7
  • Dump 中根据名称或地址查找存储值:Ctrl + G

password.exe

主程序运行有初始化过程(初始化代码有点长)

找到主程序:call + 后面跟 main 函数的地址(地址:00401244)

main 被初始化代码调用

评论区

如果有什么问题或想法,欢迎大家在下方留言~