Closed w296488320 closed 2 years ago
regs[29]
appears to be correct place for FRAME_POINTER
on AArch64 (when both proot and tracee are 64bit), however depending on programming language and compiler (e.g. when using gcc -fomit-frame-pointer
) frame pointer might not be present
I'd recommend attaching debugger to target inside proot (with debugger also running inside proot) and seeing what registers are set to
If you want to stop program at point of particular syscall do kill(tracee->pid, SIGSTOP)
(assuming single-threaded program, you'll need to adapt snippet otherwise) at moment of handling particular syscall and then check registers using debugger inside proot
I found a function that calls the kill function via svc and I want to know where the kill is called, I tried to intercept by ptrace and judging by the system call number if it was a kill function I tried to print his FP register but get 0 .
I add the reg.cpp to the original one ARCH_ARM64 -> [FRAME_POINTER] = USER_REGS_OFFSET(regs[29]), ARCH_ARM_EABI -> [FRAME_POINTER] = USER_REGS_OFFSET(uregs[12]),
I don t know if it s because I write wrong causing the FP register is equal 0 or the original FP register is equal 0。 Do you have any good advice?Great developer