我一直在研究迷你strace程序的重新编码,而不使用PTRACE_SYSCALL来熟悉寄存器。我使用ptrace(PTRACE_GETREGS,...)来设置user_reg_struct字段,我使用ptrace(PTRACE_PEEKDATA,...)从中读取。如何解释PTRACE_PEEKTEXT返回值
不是真的知道如何处理函数中使用它的数据的retur(系统调用等)做的,我开始寻找一些代码,我遇到的事情来,如:
int is_a_syscall() {
struct user_reg_struct regs;
unsigned short int ret;
ret = ptrace(PTRACE_PEEKDATA, pid, regs.rip, 0);
if (ret == 0xFFFF) {
perror("failed")
exit(1); }
if (ret == 0x80CD || ret == 0x50F)
return (true);
return (false);
}
现在可以有人向我解释什么是数字在if()语句,又名:
- 0xFFFF的,我认为它与处理器的架构做,但我无法验证它
- 0x80CD和0x50F
我想知道它们是什么,在哪里可以找到他们,我能理解他们,我如何使用它们让我的系统调用和他们的论点。