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

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

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


免责声明

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

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

相关推荐
liufeiyu197614 小时前
VS 2026 升级后出现错误: 找不到指定的 SDK“Microsoft.NET.Sdk”
visual studio·vs 2026
霍霍的袁15 小时前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
2501_9159090620 小时前
移动端开发工具链怎么组合比较好,iOS、Android、跨端三套配置方案
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
2501_915918411 天前
iOS编程用什么软件好?主流工具Xcode、AppCode、CodeRunner与新兴快蝎对比
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
VIP_CQCRE2 天前
在 Visual Studio 里接入 Ace Data Cloud:让 AI 编程助手直接用上 OpenAI 兼容接口
openai·ai编程·开发工具·visual studio·acedatacloud
VIP_CQCRE2 天前
在 Visual Studio 里接入 AI 编程助手:用 Ace Data Cloud 打通 OpenAI 兼容接口与 LMLocal
openai·ai编程·visual studio·acedatacloud·lmlocal
free-elcmacom2 天前
发际线警告!手撕《C陷阱与缺陷》终极 BOSS:signal 函数与 typedef 魔法
c语言·开发语言·visual studio code·visual studio
VIP_CQCRE2 天前
Visual Studio 也能丝滑接入大模型:用 Ace Data Cloud + LMLocal 打造 AI 编程体验
ai·大模型·visual studio·ace data cloud·lmlocal
千谦阙听2 天前
【 C++篇】:模板初阶——泛型编程、函数模板与类模板
开发语言·c++·学习·visual studio
滕州市燕猫虎计算机科技工作室个体工商户2 天前
IDEA:Command line is too long
java·ide·intellij-idea