2013-07-25 73 views
3

我正在寻找手动生成ELF核心转储文件。手动生成精灵核心转储

我有我的程序的RAM转储,也可以检索寄存器信息等。

有了这些数据,我想要构建一个ELF核心转储文件,类似于当程序崩溃时由Linux内核生成的转储文件,目标是分析这个核心转储文件,并使用专为我的平台制作的GDB。

我一直在寻找核心转储规范或详细格式,但没有找到我想要的东西:

  • 没有我的核心转储文件时需要什么样的板块?
  • 它们如何组织到ELF容器中?
  • 如何从二进制RAM转储(+寄存器值)转到像文件这样的核心转储。

这一定最好用C来完成,我想我可以使用了libelf库,帮助我建立的文件,但我没有发现要放什么在该文件中的相关信息,并以哪种方式,欢迎任何线索,链接或建议。

注意:这不是关于引发异常和内核为我完成的工作,我可以这样做,但我真的需要将自己的RAM集中并手动将数据注册到精灵核心转储中。

谢谢!

+0

关于这个问题的其他信息,尤其是关于注释部分的信息可以在http://stackoverflow.com/questions/17972945/core-dump-note-section – d6bels

回答

4

我在找手动生成一个ELF核心转储文件。

只要使用谷歌elf userspace coredumper,它正是这一点。

我要建立我的核心转储,而不是直接实现它变成我的软件

没有现有的程序(即我所知道的),可以做到这一点。有机会,你必须从头开始编写一个,或者修改其他程序。

有两个程序可以写入用户空间的核心转储 - 上述用户空间coredumper和GDB(通过gcore命令)。我希望调整Google coredumper比调整GDB容易得多。

如果您决定从头开始编写一个,您仍然可以阅读Google coredumper源代码,找出必须写入内核的内容。

+0

找到谢谢,这有助于,但我仍然想建立在程序崩溃后我的核心转储。这是为了验尸目的。 我有一些机制在程序崩溃时转储RAM并注册。只有在那之后,即验尸之后,我才想建立我的核心转储,而不是直接将其实施到我的软件中。 – d6bels

+0

@ d6bels我已经更新了答案。 –

+0

谢谢,我想我会写我自己的! – d6bels