【问题标题】:What Happens if you Execute a Text File?如果执行文本文件会发生什么?
【发布时间】:2014-05-10 16:37:57
【问题描述】:

我正在研究程序和操作系统的工作原理时,一个有趣的(也许是愚蠢的)场景出现在我的脑海中。如果执行文本文件会发生什么?我所做的是,我创建了一个包含单词“hello”的文本文件,然后将文件保存为可执行文件。

当我运行它时,Windows 说它无法打开这种类型的文件。怎么回事?

难道不应该把“hello”这个词改成二进制执行,虽然是随机指令吗?

感谢您消除我对 exe 工作原理的误解。

【问题讨论】:

  • Windows 可执行文件有标题。 Hello 是无效的标头。

标签: memory compilation binary operating-system executable


【解决方案1】:

可执行文件需要有特定的结构

what's in a .exe file?

您应该仔细阅读上述问题的答案以获得详细说明

【讨论】:

    【解决方案2】:

    仅保存为可执行文件确实会转换为二进制文件。 为此,您将需要一个编译器。 如果您对编程感兴趣,我建议您查看有关 java、android、iOS、C# 或任何数字语言的 YouTube 教程。大多数优秀的会从教你去哪里获得免费软件开始,以你想要的任何语言开始开发。

    【讨论】:

      【解决方案3】:

      执行过程涉及许多步骤。当您执行一个可执行文件时,程序加载器会读取文件中的描述符以进行动态链接/共享库/DLL 以确定需要加载的所有内容。它需要将内存描述符赋予加载程序必须设置的实际内存(例如,程序通常包括只读内存、读取执行内存和读写内存)。加载程序必须解析可重定位地址。它必须创建一个堆栈。

      完成所有设置后,它会运行您的程序。

      如果你只是给它一个文本文件,加载器不会找到设置程序所需的任何数据,只会呕吐。

      在某些系统(通常是嵌入式系统)上,可执行文件只是内存的映像。这不是您可能使用的典型交互系统的情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-24
        • 1970-01-01
        • 1970-01-01
        • 2013-02-18
        • 1970-01-01
        • 2018-10-13
        相关资源
        最近更新 更多