在Linux下创建十六进制文件的可执行文件



我有一个文件,其内容以十六进制表示x64机器代码。

48 c7 c0 7b 00 00 00 48 c7 c1 59 01 00 00 48 01 c8 c3

上面的例子可以分解为:

0:  48 c7 c0 7b 00 00 00    mov    rax,0x7b
7:  48 c7 c1 59 01 00 00    mov    rcx,0x159
e:  48 01 c8                add    rax,rcx
11: c3                      ret

这个机器代码是直接生成的,所以上面显示的汇编程序只是为了示例。我一般无法访问它。

我想做的是以最直接的方式将这个十六进制文件转换为可执行文件。我尝试使用xxd -r,但这似乎并不能创建一个格式良好的可执行文件,因为我在尝试运行它时得到了Exec format error

在Linux下,我应该如何从十六进制代码生成可执行文件?

根据我对问题后面讨论的理解,我想做的是创建一个ELF文件。这个问题涵盖了如何创建自己的ELF头。

尽管如此,如果您不想遇到麻烦,您实际上可以使用gcc将字节序列编译为可执行文件。

.section .text
.global main
main:
.byte 0x48 0xc7 0xc0 0x7b 0x00 0x00 0x00 0x48 0xc7 0xc1 0x59 0x01 ...

然后,您可以使用gcc file.S -o file编译上述内容。这将创建所需的ELF文件。

最新更新