Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 内存中的ELF二进制文件_C_Elf_File Format - Fatal编程技术网

C 内存中的ELF二进制文件

C 内存中的ELF二进制文件,c,elf,file-format,C,Elf,File Format,我刚刚用C写了一个Hello world程序,我正在玩这个程序。我想尝试从内存中转储二进制文件(使用gdb),并尝试从中创建另一个可执行文件。我尝试以可执行权限转储页面,然后是数据页面;但它也有缺点。有没有办法做到这一点?有什么方法可以调试并找出它崩溃的原因吗?有什么一般性的建议吗 谢谢 [编辑] 它在linux上,我在32位和64位x86上都试过。内核版本是3.13。我在_start上设置了一个断点,将可执行页及其数据页转储到一个文件中,并尝试执行它。等等,您是否只是将映射文本(可执行页)部分

我刚刚用C写了一个Hello world程序,我正在玩这个程序。我想尝试从内存中转储二进制文件(使用gdb),并尝试从中创建另一个可执行文件。我尝试以可执行权限转储页面,然后是数据页面;但它也有缺点。有没有办法做到这一点?有什么方法可以调试并找出它崩溃的原因吗?有什么一般性的建议吗

谢谢

[编辑]


它在linux上,我在32位和64位x86上都试过。内核版本是3.13。我在_start上设置了一个断点,将可执行页及其数据页转储到一个文件中,并尝试执行它。

等等,您是否只是将映射文本(可执行页)部分后跟映射数据部分转储到一个文件中?这本身不是有效的ELF对象,ELF文件也需要ELF头。我很惊讶操作系统甚至让你尝试执行,你应该得到一个关于无效ELF头或类似的错误

除了头文件之外,ELF文件还包含许多对运行它很重要的部分

至于调试,我会从GDB开始,看看它在哪里崩溃。您的程序是否崩溃,或者在尝试加载程序时动态链接器是否崩溃?如果动态链接器崩溃,请尝试调试,例如使用

gdb --args /lib64/ld-2.18.so <your program>
gdb--args/lib64/ld-2.18.so

从内存中重新创建ELF文件的尝试以前已经完成过—请看一看,它甚至静态地将所有加载的动态库都包含在生成的ELF中。

等等,您是否只是将映射文本(可执行页面)部分,然后是映射数据部分转储到文件中?这本身不是有效的ELF对象,ELF文件也需要ELF头。我很惊讶操作系统甚至让你尝试执行,你应该得到一个关于无效ELF头或类似的错误

除了头文件之外,ELF文件还包含许多对运行它很重要的部分

至于调试,我会从GDB开始,看看它在哪里崩溃。您的程序是否崩溃,或者在尝试加载程序时动态链接器是否崩溃?如果动态链接器崩溃,请尝试调试,例如使用

gdb --args /lib64/ld-2.18.so <your program>
gdb--args/lib64/ld-2.18.so

从内存中重新创建ELF文件的尝试以前已经完成过—请看一看,它甚至静态地将所有加载的动态库都包含在生成的ELF中。

等等,您是否只是将映射文本(可执行页面)部分,然后是映射数据部分转储到文件中?这本身不是有效的ELF对象,ELF文件也需要ELF头。我很惊讶操作系统甚至让你尝试执行,你应该得到一个关于无效ELF头或类似的错误

除了头文件之外,ELF文件还包含许多对运行它很重要的部分

至于调试,我会从GDB开始,看看它在哪里崩溃。您的程序是否崩溃,或者在尝试加载程序时动态链接器是否崩溃?如果动态链接器崩溃,请尝试调试,例如使用

gdb --args /lib64/ld-2.18.so <your program>
gdb--args/lib64/ld-2.18.so

从内存中重新创建ELF文件的尝试以前已经完成过—请看一看,它甚至静态地将所有加载的动态库都包含在生成的ELF中。

等等,您是否只是将映射文本(可执行页面)部分,然后是映射数据部分转储到文件中?这本身不是有效的ELF对象,ELF文件也需要ELF头。我很惊讶操作系统甚至让你尝试执行,你应该得到一个关于无效ELF头或类似的错误

除了头文件之外,ELF文件还包含许多对运行它很重要的部分

至于调试,我会从GDB开始,看看它在哪里崩溃。您的程序是否崩溃,或者在尝试加载程序时动态链接器是否崩溃?如果动态链接器崩溃,请尝试调试,例如使用

gdb --args /lib64/ld-2.18.so <your program>
gdb--args/lib64/ld-2.18.so

从内存中重新创建ELF文件的尝试以前已经完成过—请看一看,它甚至静态地将所有加载的动态库都包含到生成的ELF中。

这可能不是很简单,而且肯定是特定于处理器和操作系统的


您可以查看
emacs
source
unsec.c
,它正在做您想做的事情。请参见

它可能不是很简单,而且肯定是特定于处理器和操作系统的


您可以查看
emacs
source
unsec.c
,它正在做您想做的事情。请参见

它可能不是很简单,而且肯定是特定于处理器和操作系统的


您可以查看
emacs
source
unsec.c
,它正在做您想做的事情。请参见

它可能不是很简单,而且肯定是特定于处理器和操作系统的


您可以查看
emacs
source
unsec.c
,它正在做您想做的事情。请参见

您到底尝试了什么?这是在哪个站台?我猜是Linux。。。内核的哪个版本?什么建筑?这是一个非常、非常、非常依赖操作系统和体系结构的问题。可能是@DanLenski的重复。我做了一个编辑,回答了这个问题,谢谢。你到底尝试了什么?这是在哪个站台?我猜是Linux。。。内核的哪个版本?什么建筑?这是一个非常、非常、非常依赖操作系统和体系结构的问题。可能是@DanLenski的重复。我做了一个编辑,回答了这个问题,谢谢。你到底尝试了什么?这是在哪个站台?我猜是Linux。。。内核的哪个版本?什么建筑?这是一个非常、非常、非常依赖操作系统和体系结构的问题。可能是@DanLenski的重复。我做了一个编辑,回答了这个问题,谢谢。你到底尝试了什么?什么站台