如何使用 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会显示当前汇编代码对应源文件代码的语句,可以快速定位。

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

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


免责声明

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

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

相关推荐
cwxblog1 小时前
Qt + Visual Studio 开发环境搭建
windows·qt·开发工具·visual studio
七元权1 小时前
VSCode连接远程容器失败(Missing GLIBC >=2.28!)
ide·vscode·编辑器·连接容器
信奥胡老师11 小时前
苹果电脑(mac系统)安装vscode与配置c++环境,并可以使用万能头文件全流程
c++·ide·vscode·macos·编辑器
妖灵翎幺11 小时前
C++ 中的 :: 操作符详解(一切情况)
开发语言·c++·ide
奔跑吧 android11 小时前
【vscode】【远程 ssh 开发】【环境搭建】
ide·vscode·ssh
路痴楷13 小时前
无法定位程序输入点问题
c++·qt·visual studio
森明帮大于黑虎帮16 小时前
Visual Studio 2008 自述文件
ide·visual studio
欧恩意16 小时前
【Visual Studio】调试时 memcpy 拷贝错误,擅自修改内存
ide·visual studio
MM_MS17 小时前
SQL Server数据库和Visual Studio (C#)联合编程
开发语言·数据库·sqlserver·c#·visual studio