当前位置: 首页 > 面试题库 >

如何使用十六进制编辑器在Linux中制作可执行的ELF文件?

师建德
2023-03-14
问题内容

只是好奇。显然,这对于实际编程而言不是一个很好的解决方案,但我想在Bless(十六进制编辑器)中创建一个可执行文件。

我的体系结构是x86。我可以制作一个非常简单的程序?你好,世界?无限循环?与此问题类似,但在Linux中。


问题答案:

如我的评论中所述,您实际上将为可执行文件编写自己的elf-header,以消除不需要的部分。仍然需要几个部分。Muppetlabs-
TinyPrograms
上的文档在解释此过程方面做得很出色。为了好玩,这里有几个例子:

等效于/ bin / true(45个字节):

00000000  7F 45 4C 46 01 00 00 00  00 00 00 00 00 00 49 25  |.ELF..........I%|
00000010  02 00 03 00 1A 00 49 25  1A 00 49 25 04 00 00 00  |......I%..I%....|
00000020  5B 5F F2 AE 40 22 5F FB  CD 80 20 00 01           |[_..@"_... ..|
0000002d

您经典的“ Hello World!” (160个位元组):

00000000  7f 45 4c 46 01 01 01 03  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 03 00 01 00 00 00  74 80 04 08 34 00 00 00  |........t...4...|
00000020  00 00 00 00 00 00 00 00  34 00 20 00 02 00 28 00  |........4. ...(.|
00000030  00 00 00 00 01 00 00 00  74 00 00 00 74 80 04 08  |........t...t...|
00000040  74 80 04 08 1f 00 00 00  1f 00 00 00 05 00 00 00  |t...............|
00000050  00 10 00 00 01 00 00 00  93 00 00 00 93 90 04 08  |................|
00000060  93 90 04 08 0d 00 00 00  0d 00 00 00 06 00 00 00  |................|
00000070  00 10 00 00 b8 04 00 00  00 bb 01 00 00 00 b9 93  |................|
00000080  90 04 08 ba 0d 00 00 00  cd 80 b8 01 00 00 00 31  |...............1|
00000090  db cd 80 48 65 6c 6c 6f  20 77 6f 72 6c 64 21 0a  |...Hello world!.|
000000a0

不要忘记使它们可执行…



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

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

  • 这只是纯粹的好奇。不...我不打算直接用二进制机器代码编写程序(我甚至不经常编写汇编代码,我只是大部分时间使用C/C++作为我最低级的工具)。我只是想看看是否有可能做到这一点,因为在计算机出现的早期,可能有人必须做到这一点。 附注:我知道关于这个话题有类似的问题,但没有一个提供一个可行的例子。我只想要一个简单的例子,这样它可以帮助我理解编译器和汇编器如何生成一个可执行文件。我是说...一定有人在过

  • 问题内容: 我有一个家庭作业,需要在十进制,二进制和十六进制之间进行三向转换。我需要帮助的功能是将十进制转换为十六进制。我几乎不了解十六进制,但是如何将十进制转换为十六进制。我需要一个接受并返回的函数。不幸的是我没有此功能的任何草稿,我完全迷路了。我只有这个。 另外,我不能使用诸如Integer.toHexString()之类的预制函数或任何其他东西,我需要真正地制作算法,否则我什么都不会学。 问

  • 我从下面的另一个问题中看到了一个代码,但我不知道如何利用它。

  • 问题内容: 如何在JavaScript中将十进制值转换为等效的十六进制值? 问题答案: 使用以下命令将数字转换为十六进制字符串: 并通过以下步骤逆向处理: