我知道你可以使用ptrace来捕获一个系统调用。 但是我想要做的是忽略一个系统调用。 因此, ptrace可以捕获一个系统调用,查看它的编号,如果这个编号是一个必须被忽略的系统调用,那么ptrace会停止系统调用继续执行或者立即返回系统调用。
重点是我们应该使应用程序通过使用ptrace来忽略特定的系统调用。
你可以试试PTRACE_GETREGS和PTRACE_SETREGS 。 如果您将eip更改为系统调用后,并且eax使返回值有效,则可能会跳过呼叫。 但我没有尝试,如果不起作用,也不会感到惊讶。
PTRACE_GETREGS
PTRACE_SETREGS
eip
eax