如何在基于ptrace的调试器中的ARM处理器上使用user_regs_struct

时间:2017-07-31 18:13:55

标签: c linux raspberry-pi arm

我正在遵循"学习Linux二进制分析"的第3章中的代码。代码是"一个简单的基于ptrace的调试器"。

我试图在我的Raspberry Pi 3中编写这个,它有一个ARM处理器。我知道错误意味着我没有包含正确的头文件,但我找不到正确的头文件。

我收到此错误消息:

field ‘pt_reg’ has incomplete type struct user_regs_struct pt_reg

在做了一些研究之后,我找到了asm / ptrace.h,它包含了一些特定于ARM的寄存器结构的宏。我是在正确的轨道上吗?我如何使用ARM处理器实现这一功能?

以下是标题:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <signal.h>
#include <elf.h>
#include <sys/types.h>
#include <sys/user.h>
#include <sys/stat.h>
#include <sys/ptrace.h>
#include <sys/mman.h>

typedef struct handle {
  Elf64_Ehdr *ehdr;
  Elf64_Phdr *phdr;
  Elf64_Shdr *shdr;
  uint8_t *mem;
  char *symname;
  Elf64_Addr symaddr;
  struct user_regs_struct pt_reg;
  char *exec;
} handle_t;

0 个答案:

没有答案