在 ELF 核心文件中,哪个部分存储有关调用的命令的信息?

Posted

技术标签:

【中文标题】在 ELF 核心文件中,哪个部分存储有关调用的命令的信息?【英文标题】:In ELF core file which section stores information on command invoked? 【发布时间】:2018-02-13 05:50:02 【问题描述】:
$ hexdump -C <corefile>
000005a0  00 00 00 00 00 00 00 00  2e 2f 74 65 73 74 20 48  |........./test H|
000005b0  65 6c 6c 6f 20 57 6f 72  6c 64 20 00 00 00 00 00  |ello World .....|

hexdump 显示类似“./test Hello World”的字符串

如何从 ELF 核心文件中读取命令调用字符串?

【问题讨论】:

【参考方案1】:

核心文件的注释部分具有“prpsinfo”,其中包含可执行名称和参数信息。

readelf --notes /b/syrajendra/core.test.25963.1518497907

Notes at offset 0x000003f8 with length 0x00000614:
  Owner                 Data size       Description
  CORE                 0x00000150       NT_PRSTATUS (prstatus structure)
  CORE                 0x00000088       NT_PRPSINFO (prpsinfo structure)
  CORE                 0x00000080       Unknown note type: (0x53494749)
  CORE                 0x00000130       NT_AUXV (auxiliary vector) 

“prpsinfo”结构定义在“/usr/include/linux/elfcore.h”文件中。

【讨论】:

注意sizeof(elf_prpsinfo.pr_psargs) == ELF_PRARGSZ == 80,所以只保存命令行的前80个字符。

以上是关于在 ELF 核心文件中,哪个部分存储有关调用的命令的信息?的主要内容,如果未能解决你的问题,请参考以下文章

将整个ELF二进制文件转储为可读的标题和部分

ELF文件结构描述

从 ELF 二进制文件中删除部分的脚本

在用户空间中加载 C 中的 ELF 文件

如何从核心转储文件中提取 AT_EXECFN

有没有办法知道在tensorflow中调用了哪个c++核心函数?