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

news2024/11/30 6:49:27

一、配置编译器环境变量

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.coloradmin.cn/o/1602936.html

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

相关文章

MFC下CPictureCtrl控件基于鼠标左键坐标的直线绘图

本文仅供学习交流&#xff0c;严禁用于商业用途&#xff0c;如本文涉及侵权请及时联系本人将于及时删除 目录 1.创建自定义类CMyPictureCtrl 2.布局Dlg 3.实验代码 4.运行结果 在基于对话框的MFC应用程序中&#xff0c;通过鼠标操作获取坐标并在CPictureCtrl控件中使用Lin…

电商技术揭秘系列文章合集(上)

电商技术揭秘系列文章&#xff08;上&#xff09; 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 …

越来越多服务区安装智慧公厕是什么原因

随着社会的不断发展&#xff0c;人们对生活质量的要求也越来越高。在这种背景下&#xff0c;越来越多的服务区开始安装智慧公厕&#xff0c;以满足人们在出行过程中的生活需求。那么&#xff0c;为什么越来越多的服务区选择安装智慧公厕呢&#xff1f;这其中究竟有哪些原因呢&a…

手机副业赚钱秘籍:让你的手机变成赚钱利器

当今社会&#xff0c;智能手机已然成为我们生活不可或缺的一部分。随着技术的飞速进步&#xff0c;手机不再仅仅是通讯工具&#xff0c;而是化身为生活伴侣与工作助手。在这个信息爆炸的时代&#xff0c;我们时常会被一种焦虑感所困扰&#xff1a;如何能让手机超越消磨时光的定…

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

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

JVM之方法区的详细解析

方法区 方法区&#xff1a;是各个线程共享的内存区域&#xff0c;用于存储已被虚拟机加载的类信息、常量、即时编译器编译后的代码等数据&#xff0c;虽然 Java 虚拟机规范把方法区描述为堆的一个逻辑部分&#xff0c;但是也叫 Non-Heap&#xff08;非堆&#xff09; 设置方法…

STC89C52学习笔记(九)

STC89C52学习笔记&#xff08;九&#xff09; 综述&#xff1a;本文主要介绍了蜂鸣器、蜂鸣器如何使用以及如何利用蜂鸣器播放不同频率声音。 一、蜂鸣器 1.定义和作用 电信号→声音信号&#xff0c;常用来产生按键音和报警音。 2.分类 有源&#xff1a;自带振荡器&#…

基于Python的机器学习的文本分类系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

单独使用YOLOV9的backbone网络

前言 YOLO系列的网络结构都是通过.yaml来进行配置的,当要单独想使用其中的backbone网络时,可以通过yaml配置文件来进行网络搭建。 backbone的yaml配置文件与网络结构 backbone:[[-1, 1, Silence, []], # conv<

linux中级课程:延迟任务的设置(at 命令)

1.首先在系统中建立easylee账户&#xff0c;并且设置密码为easylee 2.延迟任务由root账户设置&#xff0c;要求在5小时后备份系统中的用户信息文件到/backup中&#xff0c;确保延迟任务是使用非交互模式建立 此时创建了一个test.sh脚本&#xff0c;并且使用非交互的形式进行编辑…

实在智能携AI Agent智能体亮相2024年度QCon全球软件开发大会

4月11日-13日&#xff0c;以“全面进化”作为2024年度主题的「QCon全球软件开发大会暨智能软件开发生态展」在北京隆重举行。作为AI准独角兽和超自动化头部企业&#xff0c;实在智能应邀出席发表《面向办公自动化领域的AI Agent建设思考与分享》演讲及圆桌交流&#xff0c;展示…

HDLbits 刷题 -- Mux9to1v

Create a 16-bit wide, 9-to-1 multiplexer. sel0 chooses a, sel1 chooses b, etc. For the unused cases (sel9 to 15), set all output bits to 1. Expected solution length: Around 15 lines. 译&#xff1a; 创建一个16位宽的9对1多路复用器。Sel 0选择a, Sel 1选择b&a…

硬刚Suno?StabilityAI推出Stable Audio 2.0,可生成三分钟44.1kHz立体声的高质量完整曲目

StabilityAI公司最新推出音频生成模型Stable Audio 2.0&#xff0c;该模型可通过单一自然语言提示以44.1kHz立体声播放具有连贯音乐结构的高质量、完整曲目&#xff0c;长达三分钟。 新模型超越了文本到音频的范围&#xff0c;还包括音频到音频的功能。用户现在可以上传音频样…

华为海思校园招聘-芯片-数字 IC 方向 题目分享——第四套

华为海思校园招聘-芯片-数字 IC 方向 题目分享——第四套 (共9套&#xff0c;有答案和解析&#xff0c;答案非官方&#xff0c;仅供参考&#xff09;&#xff08;共九套&#xff0c;每套四十个选择题&#xff09; 部分题目分享&#xff0c;完整版获取&#xff08;WX:didadida…

20240417,友元 FRIEND

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

香港科技大学广州|数据科学与分析学域硕博招生宣讲会—华东师范大学专场

时间&#xff1a;2024年4月25日&#xff08;星期四&#xff09;13:30 地点&#xff1a;华东师范大学普陀校区文附楼507 报名链接&#xff1a;https://www.wjx.top/vm/Q0cKTUI.aspx# 跨学科研究领域 *数据驱动的人工智能和机器学习 *统计学习和建模 工业和商业分析 *特定行业…

【R语言】动画图:散点图

绘制成如下的散点图&#xff1a; 如果数据量大&#xff0c;有多个年份&#xff0c;就会生成多张图&#xff0c;例如&#xff1a; 具体代码如下&#xff1a; library(gapminder)#加载 gapminder 包&#xff0c;其中包含了从 1952 年至 2007 年各个国家的 GDP、预期寿命和人口数据…

<router-link>出现Error: No match for {“name“:“home“,“params“:{}}

在将<a></a>标签换到<router-link></router-link>的时候出现No match for {"name":"home","params":{}}这样的错误&#xff0c;其中格式并无错误&#xff0c; <router-link class"navbar-brand active" …

Resilience中的RateLimiter

Resilience中的RateLimiter 一、RateLimiter&#xff08;限流&#xff09;1.常见的限流算法漏桶算法&#xff08;Leaky Bucket&#xff09;令牌桶算法&#xff08;Token Bucket&#xff09;——Spring cloud 默认使用该算法滚动时间窗口&#xff08;tumbling time window&#…

多轴机械臂/正逆解/轨迹规划/机器人运动学/Matlab/DH法 学习记录03——机械臂运动学逆解

系列文章目录 本科毕设正在做多轴机械臂相关的内容&#xff0c;这里是一个学习机械臂运动学课程的相关记录。 如有任何问题&#xff0c;可发邮件至layraliufoxmail.com问询。 1. 数学基础 2. 机械臂几何法与DH表示法 3. 机械臂运动学逆解 文章目录 系列文章目录一、引言1.手臂…