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

如何手动编写和执行Windows.exe(带有十六进制编辑器的机器代码)?

芮歌者
2023-03-14

这只是纯粹的好奇。不...我不打算直接用二进制机器代码编写程序(我甚至不经常编写汇编代码,我只是大部分时间使用C/C++作为我最低级的工具)。我只是想看看是否有可能做到这一点,因为在计算机出现的早期,可能有人必须做到这一点。

附注:我知道关于这个话题有类似的问题,但没有一个提供一个可行的例子。我只想要一个简单的例子,这样它可以帮助我理解编译器和汇编器如何生成一个可执行文件。我是说...一定有人在过去的第一个程序中手工完成了这一点。此外,对于Windows EXE格式,微软一定有人编写了第一批生成该格式的工具,以及Windows本身读取并执行该格式的方式。

共有1个答案

山凌
2023-03-14

不是很准确,但本教程应该让您更好地了解程序集如何映射到机器代码(x86 ELF):http://timelessname.com/elfbin/(尤其是查看页面的下半部分)

本页为[...]关于我在Ubuntu Linux上创建最小的x86 ELF二进制文件来执行say Hello World的尝试,我的第一次尝试是从C开始的,然后是x86汇编,最后是HexEditor。

分析像这样非常小的可执行文件是很好的,因为程序集和机器代码之间的映射将更容易发现。这也是一篇关于这个主题的非常有趣的文章(但与您的问题不完全相关):http://www.phreedom.org/research/tinype/(x86pe)

 类似资料:
  • 问题内容: 只是好奇。显然,这对于实际编程而言不是一个很好的解决方案,但我想在Bless(十六进制编辑器)中创建一个可执行文件。 我的体系结构是x86。我可以制作一个非常简单的程序?你好,世界?无限循环?与此问题类似,但在Linux中。 问题答案: 如我的评论中所述,您实际上将为可执行文件编写自己的elf-header,以消除不需要的部分。仍然需要几个部分。Muppetlabs- TinyProg

  • 问题内容: 我需要一个适用于Linux的HEX编辑器,我的意思是: 快速 搜索/替换功能 不仅可以以十六进制显示数据,还可以以二进制,八进制等显示数据。 可以处理大型(> 1 gb)文件,而不会变慢且无响应(此要求很重要) (可选)具有一些比较/差异功能 你有什么建议? 问题答案: Bless 是高质量的全功能十六进制编辑器。 它是用mono / Gtk#编写的,其主要平台是GNU / Linux

  • 我的架构是x86。我能做的一个非常简单的程序是什么?一个你好的世界?无限循环?类似于这个问题,但在Linux中。

  • 问题 你想将一个十六进制字符串解码成一个字节字符串或者将一个字节字符串编码成一个十六进制字符串。 解决方案 如果你只是简单的解码或编码一个十六进制的原始字符串,可以使用 binascii 模块。例如: >>> # Initial byte string >>> s = b'hello' >>> # Encode as hex >>> import binascii >>> h = binascii

  • 问题内容: 我目前正在将Python2脚本移植到Python3,并在此行遇到问题: 当我使用Python2运行它时,该文件由十六进制值组成,如预期的那样。 但是,当我使用Python3运行它时,文件由hex-values组成。 这是怎么了 如何使用Python3接收所需的输出。 问题答案: 字节序列是字符U + 00FE 的UTF-8编码表示形式。 Python 2将字符串作为字节序列而不是字符来