我一直在研究迷你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
我想知道它們是什麼,在哪裏可以找到他們,我能理解他們,我如何使用它們讓我的系統調用和他們的論點。