当前位置: 首页 > 知识库问答 >
问题:

exe仅仅是由纯机器代码构成的吗?

袁英豪
2023-03-14

当任何高级编程语言被编译时,它被编译成目标代码,然后链接器将目标代码链接在一起,形成一个可执行文件。

>

  • 因为目标代码基本上是机器代码,所以这意味着。exe是纯机器代码,对吗?

    如果这是真的,如果您知道。exe是用哪种机器代码生成的,那么是否有可能将(.exe)机器代码转换为程序集,然后转换为高级语言(源代码)?

  • 共有1个答案

    公冶同
    2023-03-14

    回答你的第一个问题,没有。可执行文件通常不包含纯机器代码,还包含各种元数据,以帮助操作系统定位程序的依赖关系(假设程序使用外部库),并包含嵌入其中的各种静态数据。

    通常,一个可执行文件由不同的部分组成(尽管请记住,“可执行文件”是什么取决于平台和操作系统),这些部分被指定为包含元数据、静态数据和可执行代码。

    回答第二个问题,是的,可以将可执行文件转换为程序集(至少一部分可执行文件将包含纯机器代码,它与相关的汇编语言有1:1的映射),但是将其转换为更高级别的语言是不太可能的(尽管智能应用程序可能会给出一些猜测)。通常,您会发现调试器能够进入EXE并向您显示当前正在执行的行和文件--这只是因为可执行文件本身中有额外的元数据,这些元数据将某个指令偏移量映射到代码中的某个文件/行。

    在Linux系统上,通常可以使用readelfobjdump工具检查其中的一些元数据。其他平台也可以使用等价物

     类似资料:
    • 我使用的反应路由器dom版本5.0.1一个简单的反应应用程序,我使用了汇总捆绑,这是我的路由器组件 问题是,它只在localhost:8000/处显示主路由,但当我尝试访问localhost:8000/hello或localhost:8000/登录时,会出现此错误 这是我的rollup.config };

    • 我正在尝试使用java(JDA)设置discord bot,但在服务器上使用它时遇到了一些问题。它适用于直接消息,但由于某些原因,它不能在服务器上使用。我通过intellij将该项目设置为Maven项目。 我是从一个 这在DM中运行良好,但在服务器中不起作用。 以下是我迄今为止所尝试的: 1. 我把它从收到的消息改为: 这在我的服务器上仍然不起作用,在dms中也不起作用。 2.我更改了bot的权限

    • 我正在尝试将edgetpu USB加速器与Intel ATOM单板计算机和C API结合使用,以进行实时推断。 edgetpu的C API基于TensorFlow lite C API。我需要包括来自tensorflow/lite目录的头文件(例如tensorflow/lite/interpreter.h)。 我的问题是我可以只使用Lite(而不是用于训练的其他操作)构建张量流吗?如果是,我该怎么

    • 因此,我开始开发x86\u 64 hobby内核,我发现这段代码用于加载GDT(全局描述符表),但我不知道它是做什么的。 我知道它从rdi寄存器(sysv abi中函数调用的第一个参数的寄存器)加载我的gdt描述符,但我不知道为什么我需要将所有段寄存器设置为0x10,其余的是什么黑魔法?

    • 本文向大家介绍python随机生成大小写字母数字混合密码(仅20行代码),包括了python随机生成大小写字母数字混合密码(仅20行代码)的使用技巧和注意事项,需要的朋友参考一下 用简单的方法生成随机性较大的密码 仅用20行代码随机生成密码 核心思路:利用random模块 random模块随机生成数字,大小写字母,循环次数 while循环+随机生成的循环次数——>随机plus++ 大写字母ASKI

    • 问题内容: 是否可以仅针对XHR请求限制Symfony 2路由?我想声明只能通过AJAX访问的路由。 我不想像这样在每个AJAX特定操作中添加一些额外的行: 我想定义: AJAX请求的一条规则 对相同URL进行GET / POST请求的一条规则 为了避开上述情况。 问题答案: 我知道这个问题有点老,但是与此同时 ,Symfony 2.4* 中引入 了 一种 新的解决方法 。 * 匹配表达式 对于a