Windows系统下查看C语言文件反汇编

一、配置编译器环境变量

1.下载mingw64

MinGW 的全称是:Minimalist GNU on Windows ,MinGW 就是 GCC 的 Windows 版本 。

MinGW-w64 与 MinGW 的区别在于 MinGW 只能编译生成32位可执行程序,而 MinGW-w64 则可以编译生成 64位 或 32位 可执行程序。

MinGW-w64是2005年为了将ObjectiveC程序移植到64位Windows问题,由OneVision Software根据 净室设计原则 (ReactOS是一个逆向工程Windows而净室实现的开源操作系统)而独立开发。

下载链接:https://sourceforge.net/projects/mingw-w64/files/

解压mingw64(即MinGW-w64)压缩包,放到合适的位置,找到文件夹内的一个叫bin的文件夹,复制该文件夹地址(右键文件夹地址找到复制地址)

2.编辑环境变量

进入“设置”,在设置中搜索“环境变量”,点击进入“编辑系统的环境变量”

点击“环境变量”,进入后选择“Path”,双击进入,点击“新建”,将bin的路径粘贴进去,保存

3.测试配置结果

最后测试环境配置是否成功,Win键+R打开运行窗口,输入cmd,回车,在命令行窗口输入gcc -v -E -x c++ -如果运行结果如下,即配置成功。

二、编译

样例代码:test02.c

#include<stdio.h>
int sum2(int a,int b)
{
	return a+b;
} 
int sum1(int a,int b)
{
	return sum2(a,b);
}
int main()
{
	int x=1;
	int y=2;
	sum1(x,y);
	return 0;
}

输入下面指令(同Linux系统,唯一的不同在于.out可执行文件换成了.exe可执行文件):

.out文件通常与Unix和Linux相关,是在这些操作系统下编译后的可执行文件扩展名。它们不包含特定于操作系统的元数据,因为Unix/Linux环境不需要额外的元数据来识别可执行文件。相对地,.exe文件是Windows系统中的可执行文件扩展名,表示这些文件包含程序代码和数据,可以在Windows计算机中直接执行。

gcc test02.c -o test02.exe

这里注意,如果后续需要执行文件,Linux系统下是./test02,而Windows系统下是.\test02 

三、gdb查看反汇编代码

然后输入下面指令,进行gdb调试(可以使用 -q,更加简洁)

gdb -q 是GDB(GNU调试器)的一个启动选项。当使用此选项启动GDB时,它会在安静模式下运行,不会在启动时显示版权说明或广告式的说明信息。这有助于在调试过程中减少不必要的输出,使调试界面更加简洁。

gdb -q test02

 

输入下面指令,反汇编名为main的函数。命令会显示出main函数的机器码指令,以及对应的汇编指令

disassemble main

包括sum1函数和sum2函数也都可以查看

同样的,在vscode中调试查看方法也是一样,但是得预先配置好C语言环境,包括c_cpp_properties.jsonlaunch.jsontasks.json等文件

四、总结

最后总结一下Windows系统下查看C语言文件反汇编和Linux的相同点和不同点:

相同点:

  1. 编译命令:无论是在Windows还是Linux,使用GCC编译源代码的基本命令是相似的。例如,编译一个名为main.c的C语言源文件到可执行文件,通常使用gcc main.c -o main这样的命令。

  2. GDB基本调试命令:GDB在Windows和Linux环境下都提供了一套相似的调试命令集,如startnextstepprintbreakrun等,用于控制程序的执行流程、查看变量值、设置断点等。

  3. disassemble命令:在GDB中,使用disassemble命令来查看函数的反汇编代码是通用的,不论是在Windows还是Linux环境下。

不同点:

  1. 环境配置:在Windows下,可能需要安装额外的工具或包来支持GCC和GDB的使用,如MinGW或Cygwin。而在Linux下,GCC和GDB通常是预装的,或者可以通过包管理器轻松安装。

  2. 路径分隔符:Windows使用反斜杠\作为路径分隔符,而Linux使用正斜杠/。因此,在指定源文件或可执行文件的路径时,需要注意使用正确的分隔符。

  3. 终端界面与功能:Windows的命令行界面(CMD)和Linux的终端(如bash)在功能和外观上有所不同。Linux的终端通常提供了更强大的文本处理能力和更丰富的命令行工具集。

  4. 可执行文件格式:虽然GCC在Windows和Linux下都可以生成可执行文件,但文件的格式是不同的。Windows下通常是.exe文件,而Linux下是没有扩展名的可执行文件。

  5. 特定于平台的命令和选项:虽然GCC和GDB的基本命令集在Windows和Linux下是相似的,但可能存在一些特定于平台的命令或选项。这些命令或选项可能针对特定操作系统的特性或限制进行设计。

  • 19
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一二爱上蜜桃猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值