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下是相似的,但可能存在一些特定于平台的命令或选项。这些命令或选项可能针对特定操作系统的特性或限制进行设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/553602.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FinalShell 远程连接 Linux(Ubuntu)系统

Linux 系列教程&#xff1a; VMware 安装配置 Ubuntu&#xff08;最新版、超详细&#xff09;FinalShell 远程连接 Linux&#xff08;Ubuntu&#xff09;系统Ubuntu 系统安装 VS Code 并配置 C 环境 ➡️➡️➡️提出一个问题&#xff1a;为什么使用 FinalShell 连接&#xff0…

字符串拆分优化算法

字符串拆分优化算法 问题背景算法设计思路伪代码实现C语言代码实现 详细解释结论 在面对字符串拆分问题时&#xff0c;我们的目标是找到一种最优的拆分顺序&#xff0c;以使得总的拆分代价最小。这个问题可以通过动态规划算法来解决。在本文中&#xff0c;我们将详细介绍这个问…

通过本机电脑远程访问路由器loopback的ip

实验拓扑图 本机电脑增加路由信息 正常设置telnet用户&#xff0c;然后通过本地电脑telnet 软件ensp中的设备&#xff0c;尝试是否可以正常访问即可 测试通过本地电脑可以正常访问ensp里面设备的loopback的ip地址了 最重要的一点是本机需要增加一条路由route add ip mask 下…

python数据可视化:折线图plt.plot()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 python数据可视化&#xff1a; 折线图 plt.plot() 选择题 关于以下代码输出的结果说法正确的是&#xff1f; import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams[font.sans…

2011年认证杯SPSSPRO杯数学建模C题(第二阶段)你的爱车入保险了吗全过程文档及程序

2011年认证杯SPSSPRO杯数学建模 C题 你的爱车入保险了吗 原题再现&#xff1a; 近几年&#xff0c;国内汽车销售市场异常火爆&#xff0c;销售量屡创新高。车轮上的世界&#xff0c;保险已经与我们如影随形。汽车保险&#xff0c;简称车险&#xff0c;是指对机动车辆由于自然…

排序(四)——归并排序 + 外排序

目录 1.归并排序递归实现 代码 2.归并排序非递归 代码 3.比较快排、归并和堆排序 4.归并排序实现外排序 1.归并排序递归实现 我们之前对两个有序数组进行排序就用到了归并的思想&#xff0c;对于两个有序数组&#xff0c;我们分别取他们首元素比较大小&#xff0c;取小的插…

向量数据库Chroma初步了解学习记录

目录 前言 一、Chroma是什么&#xff1f; 二、使用步骤 1.安装 2.连接Chroma 内存模式 client模式 Server模式 3.创建数据集 4.写入数据 5.查询数据 6.完整代码 7.更多参考 三、瞅瞅chroma之sqlite 总结 前言 大模型很强大&#xff0c;但是大模型也存在知识的局…

格灵深瞳,实现核心能力高强度保护与灵活交付

格灵深瞳&#xff0c;AI领域的领先企业&#xff0c;借助泰雷兹圣天诺技术&#xff0c;实现核心能力高强度保护与灵活交付&#xff0c;引领行业风向&#xff0c;安策信息助力AI行业企业实现产品核心能力保护、销售模式创新以及软件产品的灵活交付。 格灵深瞳&#xff0c;AI领域的…

量子密钥分发系统的设计与实现(二):光路子系统初步讨论

通过上一篇文章&#xff0c;我们对量子密钥分发系统的基本架构、硬件结构以及密钥分发流程进行了初步的总体介绍&#xff0c;从本文开始&#xff0c;我们就基于系统顶层的架构设计&#xff0c;开始从模块到器件&#xff0c;从硬件到软件开始详细讨论QKD系统的设计与实现。本文主…

Python爬取猫眼电影票房 + 数据可视化

目录 主角查看与分析 爬取可视化分析猫眼电影上座率前10分析猫眼电影票房场均人次前10分析猫眼电影票票房占比分析 主角查看与分析 爬取 对猫眼电影票房进行爬取&#xff0c;首先我们打开猫眼 接着我们想要进行数据抓包&#xff0c;就要看网站的具体内容&#xff0c;通过按F12…

注塑机自动喷雾程序 报警自动关机

/***参数设置,开模数计数,秒脉冲计时***************/ /***实现功能:检测报警信号,脱模剂开模数计数信号***/ /***参数:1:脱模剂开模数 2:喷雾时间 3:延时时间 ***/ /***串口接收触摸屏参数设置字符串,接收并保存******/ /***端子输入口读开模数,比较设定值后输出到电磁阀**/ /…

Emmet表达式

目录 Emmet语法简介 Emmet作用 Emmet在HTML中的使用 Emmet在CSS中的使用 Emmet语法简介 Emmet语法的前身是Zen coding,它使用缩写,来提高HTML的编写速度&#xff0c;VScode内部已经集成该语法。 Emmet作用 快速生成HTML结构语法快速生成CSS样式语法 Emmet在HTML中的使用…

python连接数据库失败怎么解决

Python 连接数据库失败怎么解决&#xff1f; 什么是 PyMySQL&#xff1f; PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库&#xff0c;Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范&#xff0c;并包含了 pure-Python MySQL 客户端库。…

Vue_管道符“|”(单竖线)的用处

目录 1、管道符是什么 2、应用场景 背景&#xff1a;项目中偶遇在 {{ }} 插值表达式里用了 “&#xff5c;”此写法&#xff0c;一开始误以为是写错了&#xff0c;应该是写成 “&#xff5c;&#xff5c;” 双竖线&#xff08; 逻辑或运算符 &#xff09;&#xff0c;结果询问…

为什么用云渲染农场?3D云渲染农场助力影视动画行业发展

​计算机图形技术的进步使得3D渲染成为多个产业发展的重要推动力。设计师和艺术家利用这项技术将创意实现&#xff0c;创造出震撼的视觉作品。但是&#xff0c;高质量的渲染需要大量的计算资源。云渲染农场通过提供这些资源&#xff0c;有效提高了渲染的速度和效率&#xff0c;…

DRF 序列化类serializer单表

【五】序列化类serializer单表 【1】主要功能 快速序列化 将数据库模型类对象转换成响应数据&#xff0c;以便前端进行展示或使用。这些响应数据通常是以Json&#xff08;或者xml、yaml&#xff09;的格式进行传输的。 反序列化之前数据校验 序列化器还可以对接收到的数据进行…

学习 Rust 的第六天:所有权问题

大家好&#xff0c; 欢迎来到学习 Rust 的第 6 天&#xff0c;过去 5 天我们学到的内容在几乎每种语言中都是一样的。所有权是 Rust 的一个独特概念。 介绍 所有权是一种独特的内存管理系统&#xff0c;其中每个值都有一个指定的所有者&#xff0c;在所有者超出范围时自动释…

java实现wav的重采样

原因是之前写的TTS文件&#xff0c;需要指定采样率和单声道 但是TTS是用的Jacob调用COMsapi实现的 javaWNI10JACOB方式 SAPI底层支持的是C&#xff0c;C#【官方文档】 SpAudioFormat SetWaveFormatEx method (SAPI 5.4) | Microsoft Learn 用C实现的方式【可指定输出的WAV…

算法练习第19天|222.完全二叉树的节点个数

222.完全二叉树的节点个数 222. 完全二叉树的节点个数 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/count-complete-tree-nodes/description/ 题目描述&#xff1a; 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。题目数据保…

【Python】穿越Python的迭代之旅:while,for 循环的奇妙世界

欢迎来到CILMY23的博客 本篇主题为&#xff1a; 穿越Python的迭代之旅&#xff1a;while&#xff0c;for 循环的奇妙世界 个人主页&#xff1a;CILMY23-CSDN博客 系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 感谢观看&#xff0c;支持的可以给个一键三连&…