Определите syscall-exit-stop или syscall-enter-stop с помощью ptrace в ARM - PullRequest
3 голосов
/ 04 августа 2020

Когда я использую от 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");
        }
    }
 

}
...