【发布时间】:2023-03-04 21:44:01
【问题描述】:
void *entrypoint;
/*virtual address of process*/
fscanf(debuggedfile, "%p", &entrypoint);
其中 debuggedfile 是指向 int 入口点所在偏移量的 elf 文件的流。 当我使用 ptrace(PTRACE_PEEKTEXT, 0, entrypoint, 0) 它返回 -1
【问题讨论】:
void *entrypoint;
/*virtual address of process*/
fscanf(debuggedfile, "%p", &entrypoint);
其中 debuggedfile 是指向 int 入口点所在偏移量的 elf 文件的流。 当我使用 ptrace(PTRACE_PEEKTEXT, 0, entrypoint, 0) 它返回 -1
【问题讨论】:
ELF 是一种二进制文件格式。 fscanf 用于读取文本文件。请改用fread。
【讨论】:
如果您正在编写解析 ELF 文件的代码,我建议 使用像 libelf 这样的标准库,而不是编写你的代码 手动拥有 ELF 解析器。
这样你就可以让 libelf 处理出现的极端情况 偶尔,例如,使用扩展节编号的 ELF 对象。
有活跃的开源项目正在开发BSD licensed 和GPL'ed libelf 的实现——任你选择。
【讨论】: