如何使用 Visual Studio 代替 OllyDbg 完成汇编语言实验

目录-点击可快捷跳转至对应章节


前言

在学校布置的研究汇编语言的作业中,老师提供的工具软件是OllyDbg,对于大部分同学而言,学习一个新软件的成本过高,并且OllyDbg的界面在现代也过于古老了,因此尝试寻找其它软件进行代替。
对于大部分学习C/C++的同学而言,使用Visual Studio无疑是成本最低的方式,而AI也证明了可行

VS2022完全可以替代OllyDbg完成本实验所有要求,且在有源码的情况下更高效、直观。只需禁用优化并打开反汇编窗口,就能完整观察到栈帧建立、参数传递、寄存器变化等所有机器级细节。
建议教学时采用VS2022,降低工具学习成本,让学生更专注于理解机器级表示的本质。


使用 Visual Studio 完成实验教程

软件下载

官网下载网址:Visual Studio 官网

下载Visual Studio 2019/2022版本均可,选择Community(社区版)。
本教程使用Visual Studio 2022 Community进行演示


新建项目

安装好软件后启动软件,选择创建新项目->空项目->输入项目信息,即可完成项目创建。
Visual Studio 2022对中文的适配较好,可使用中文项目名/文件名,但是在实际生产开发中不推荐



编写源文件

创建.c源文件

使用快捷键Ctrl + Shift + A,修改文件后缀为.c,并写入代码。

c 复制代码
#include<stdio.h>
int add(int x, int y)
{
    return x + y;
}
int main()
{
    int temp1 = 125;
    int temp2 = 80;
    int sum = add(temp1, temp2);
    return sum;
}



项目配置修改

1.使用 Debugx86 环境

此处使用x86,则以32位 执行程序;

此处使用x64,则以64位执行程序;

2.禁用优化

解决方案资源管理器右键项目名称 ,在菜单栏底部点击属性

配置属性->C/C++->优化中找到优化,右侧下拉菜单选择禁用(/Od)

必须设置/Od,否则编译器可能:

  • 内联add函数
  • 省略帧指针(EBP)
  • 直接使用寄存器传参(不压栈)

3.生成调试信息

配置属性链接器调试 → 生成调试信息为"是"

4.调试信息格式

配置属性C/C++常规调试信息格式为"程序数据库(/Zi)"

完成配置后点击应用->确定即可关闭界面。


打开调试窗口

完成上面的设置后,使用快捷键F10进入VS的逐步调试功能。

可以看到界面变成这样:

此时点击顶部的调试窗口,并打开寄存器反汇编调用堆栈内存局部变量等调试信息窗口

拖动不同的窗口界面,直至看起来舒服为止


开始实验

由于在vs中直接点F10会直接跳转到下一行代码,因此我们需要在反汇编窗口中打上一个断点(快捷键F9)

此时按F10,每按一次,就会执行一行汇编代码。

与此同时,在寄存器窗口中也可以参看当前寄存器状态
其中,标红表示该数据在上一句执行中发生了数值变化

此时,我们就可以根据老师给出的实验要求,一步步地执行对应汇编代码,观察实验现象、记录实验数据!


其它注意事项

在老师给出的实验流程描述中的部分语句,在vs2022中有不同的显示,例如:

其中mov dword ptr ss:[ebp-4],7D这行代码在vs2022的反汇编窗口中有可能 是这样显示:

但是完全不用担心,因为vs2022会显示当前汇编代码对应源文件代码的语句,可以快速定位。

如果想要解决这个问题,可以根据以下步骤进行

反汇编窗口中,点击查看选项取消 勾选显示符号名,即可发现原本的变量名改为了寄存器名称


免责声明

本文仅用于交流软件使用方法与技巧,如果课程明确要求使用指定工具,请按照课程要求进行完成!
作者不对因使用本文教程导致的任何直接或间接后果负责!

文中如有不足之处,欢迎评论区补充交流!

相关推荐
知远同学14 小时前
Pycharm顶部菜单栏固定显示
ide·python·pycharm
Everybody_up15 小时前
pycharm中编译环境配置
ide·python·pycharm
冬奇Lab16 小时前
稳定性性能系列之二——ANR机制深度解析:从触发到上报
android·性能优化·debug
Franklin17 小时前
移植一个Pycharm的复杂项目:
ide·python·pycharm
farewell-Calm21 小时前
Android Studio 添加第三方库
android·ide·android studio
GDAL1 天前
vscode 使用正则查找替换
ide·vscode·正则表达式·编辑器
WLDLSW1 天前
windows上jupyter notebook增加标题目录功能
ide·windows·jupyter
MounRiver_Studio1 天前
RISC-V IDE MRS2使用笔记(十三):添加自定义工程模板
ide·mcu·risc-v·嵌入式开发
qq_393060471 天前
在WSL2的Jupyter中正确显示中文字体seaborn覆盖plt的问题
ide·python·jupyter
HERR_QQ1 天前
【cpp tool】GDB coredump vscode GUI 和多线程常用笔记
ide·笔记·vscode