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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day11 | 栈与队列 part-3 (Go) | 239 滑动窗口最大值、347 前 K 个高频元素 (好难)

今日任务 239 滑动窗口最大值 (题目:. - 力扣&#xff08;LeetCode&#xff09; )347 前 K 个高频元素 (题目: . - 力扣&#xff08;LeetCode&#xff09; )栈与队列总结 239 滑动窗口最大值 题目:. - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 nums&#xf…

处理json文件,并将数据汇总至Excel表格

从scores.jason文件中读取学生信息,输出学生的学号&#xff0c;姓名&#xff0c;各科成绩&#xff0c;平均分, 各科标准差 scores.jason {"学院": "计算机学院","班级": "2022级1班","成绩": [{"学号": 1001,&q…

使用avx2 指令集加速向量算法运算

使用cpu-z 查看cpu指令集 2 向量加&#xff0c;乘法&#xff0c;除法 我们使用向量加&#xff0c;为什么函数是0 到 8 的计算&#xff0c;因为avx2 寄存器为256位&#xff0c;同时设置启动增强指令集 #include <immintrin.h> // 引入包含AVX2指令集的头文件void vecto…

C++类和对象:赋值重载,const成员

文章目录 1.赋值运算符重载1.1运算符重载1.2 赋值运算符重载1.3 前置和后置重载 2.日期类的实现3. const成员函数4 取地址及const取地址操作符重载 上文介绍了前三个默认成员函数&#xff0c;本文会介绍剩下三个&#xff0c; 赋值重载会重点展开。 1.赋值运算符重载 1.1运算符…

代码随想录 Day17 字符串 | LC344 反转字符串 LC541 反转字符串II 卡码网54替换数字

一、反转字符串 题目&#xff1a; 力扣344&#xff1a;反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题…

微服务相关

1. 微服务主要七个模块 中央管理平台&#xff1a;生产者、消费者注册&#xff0c;服务发现&#xff0c;服务治理&#xff0c;调用关系生产者消费者权限管理流量管理自定义传输协议序列化反序列化 2. 中央管理平台 生产者A在中央管理平台注册后&#xff0c;中央管理平台会给他…

不说成为Linux高级工程师,但成为合格的软件开发人员还是够了,一文深入浅出的精炼总结Linux核心知识点,掌握Linux的使用与高阶技巧

不说成为Linux高级工程师&#xff0c;但成为合格的软件开发人员还是够了&#xff0c;一文深入浅出的精炼总结Linux核心知识点&#xff0c;掌握Linux的使用与高阶技巧。 Linux 的学习对于一个程序员的重要性是不言而喻的。前端开发相比后端开发&#xff0c;接触 Linux 机会相对…

图像基础—图像分类

图像通常分为二值图像、灰度图像和彩色图像 图 1-3 二值图像、灰度图像和彩色图像 &#xff08;1&#xff09;二值图像 二值图像又称为黑白图像&#xff0c;图像中任何一个点非黑即白&#xff0c;要么为白色&#xff08;像素 为 255&#xff09;&#xff0c;要么为黑色&#x…

20240417,友元 FRIEND

本来要学习的吃瓜吃了一下午 目录 3.1 全局函数做友元 3.2 友元类 3.3 成员函数做友元 三&#xff0c;友元 3.1 全局函数做友元 #include<iostream> using namespace std; class Building {friend void goodGay(Building* building);//好朋友&#xff0c;可以访问…

YooAsset快速入门

文章目录 YooAsset快速入门指南&#xff1a;YooAsset学习核心要掌握的要点主要包括以下几个方面&#xff1a;基于YooAsset进行游戏资源管理的应用实例 YooAsset快速入门指南&#xff1a; YooAsset是一款专为游戏开发设计的资产管理和分发系统&#xff0c;它能够帮助开发者高效…

2024阿里云4核8G服务器租用优惠价格700元一年

阿里云4核8G服务器租用优惠价格700元1年&#xff0c;配置为ECS通用算力型u1实例&#xff08;ecs.u1-c1m2.xlarge&#xff09;4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选&#xff0c;CPU采用Intel(R) Xeon(R) Platinum处理器&#xff0c;阿里云优惠 aliyunfuwuqi…

怎样将excel的科学计数法设置为指数形式?

对了&#xff0c;这个问题中所谓的“指数形式”是指数学上书写的右上标的指数格式&#xff0c;能不能通过单元格设置来做这个格式的转换呢&#xff1f; 一、几个尝试 以下&#xff0c;以数字123000为例来说明。 情况1.转换成数学上的书写方式&#xff0c;如下图的样子&#x…

Easy GIS .NET GMap.Net

Easy GIS .NET & GMap.Net .NET 环境下非常简单的GIS地图开发库。 Easy GIS .NET 一个简单的GIS 桌面应用程序&#xff0c;实现了地图瓦片加载、shapefile文件和csv文件加载渲染、地图坐标系统设置及转换等等基本功能&#xff0c;非常简单易用。 Easy GIS .NET is an o…

算法之归并排序(java、python、c++)

一、JAVA 摘录归并详细分析 ✈✈✈✈✈ package algorithm.归并;import java.util.Arrays;public class Fenzhi {public static void main(String[] args) {int [] arr {8,4,1,2,7,6,3,5};mergeSort(arr, 0, arr.length-1, new int[8]);System.out.println(Arrays.toString(a…

【Godot4自学手册】第三十七节钥匙控制开门

有些日子没有更新了&#xff0c;实在是琐事缠身啊&#xff0c;今天继续开始自学Godot4&#xff0c;继续完善地宫相关功能&#xff0c;在地宫中安装第二道门&#xff0c;只有主人公拿到钥匙才能开启这扇门&#xff0c;所以我们在合适位置放置一个宝箱&#xff0c;主人公开启宝箱…

Tcpdump -r 解析pcap文件

当我们使用命令抓包后&#xff0c;想在命令行直接读取筛选怎么办&#xff1f;-r参数就支持了这个 当你使用 tcpdump 的 -r 选项读取一个之前捕获的数据包文件&#xff0c;并想要筛选指定 IP 地址和端口的包时&#xff0c;你可以在命令中直接加入过滤表达式。这些过滤表达式可以…

2024 年 Web 前端开发趋势

希腊哲学家赫拉克利特认为&#xff0c;变化是生命中唯一不变的东西。这句话适用于我们的个人生活、行业和职业领域。 尤其是前端开发领域&#xff0c;新技术、开发趋势、库和框架不断涌现&#xff0c;变化并不陌生。最近发生的一些事件正在改变开发人员构建网站和 Web 应用的方…

git 分支-变基

在git中&#xff0c;将一个分支的更改集成到另一个分支有两种主要方式&#xff1a;合并&#xff08;merge&#xff09;和变基&#xff08;rebase&#xff09;。在本节中&#xff0c;将学习什么是变基&#xff0c;如何执行变基操作&#xff0c;为什么它是一个非常强大的工具&…

【题目】【信息安全管理与评估】2022年国赛高职组“信息安全管理与评估”赛项样题9

【题目】【信息安全管理与评估】2022年国赛高职组“信息安全管理与评估”赛项样题9 信息安全管理与评估 网络系统管理 网络搭建与应用 云计算 软件测试 移动应用开发 任务书&#xff0c;赛题&#xff0c;解析等资料&#xff0c;知识点培训服务 添加博主wx&#xff1a;liuliu548…

网工交换基础——MUX VLAN

前言&#xff1a; MUX VLAN&#xff08;Multiplex VLAN&#xff0c;多复用VLAN&#xff09;提供了一种通过VLAN进行网络资源控制的机制。例如&#xff0c;在企业网络中&#xff0c;企业员工和企业客户可以访问企业的服务器。对于企业来说&#xff0c;希望企业内部员工之…