Когда я использую от ptrace
до l oop в системном вызове со следующим кодом, как я могу узнать, что PTRACE_SYSCALL
остановлено в первый раз, это syscall-exit-stop
или syscall-enter-stop
в ARM LINUX arch. ?
В последнем ядре я могу использовать PTRACE_GET_SYSCALL_INFO
, но я ищу решение для более старого ядра.
Я должен знать, если первый раз выйти / войти в syscall для синхронизации c программа.
#include <errno.h>
#include <sys/ptrace.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <asm/ptrace.h>
#include <sys/user.h>
void main(int argc, char**argv){
int pid = atoi (argv[1]);
int retval;
int i = 0 ;
if((retval = ptrace(PTRACE_ATTACH, pid, NULL ,NULL)) ==-1) {
printf("error PTRACE_ATTACH \n");
}
wait(NULL);
int flag = 0
struct user_regs attack_regs;
while(1)
{
if((retval = ptrace(PTRACE_SYSCALL, pid, NULL ,NULL)) ==-1) {
printf("error PTRACE_SYSCALL \n");
}
wait(NULL);
if(0 == flag)
{
flag =1;
printf("enter\n");
}
else
{
flag =0;
printf("exit\n");
}
}
}