使用ptrace跳过堆栈帧

时间:2015-04-13 17:30:54

标签: c linux x86-64 ptrace

我试图在x86_64上使用ptrace跳过进程的堆栈帧。根据我的理解,每个RBP保存前一帧的RBP的地址,我试图在代码中遵循相同的。通话顺序是:

static int pointer_size = sizeof(void*);
rbp_val = ptrace(PTRACE_PEEKUSER, pid, RBP * pointer_size, 0);
prev_rbp = ptrace(PTRACE_PEEKDATA, pid, rbp_val, 0);

通常我将rbp_val设为0x4,第二次调用ptrace失败,错误为5(输入/输出错误)。 我错过了什么?

0 个答案:

没有答案