Comment strace lit-il le nom de fichier de l’appel système sys_open?

J’écris un programme qui utilise Ptrace et fait ce qui suit:

Donc, eax = 5 implique que c’est un appel système ouvert
J’ai appris à connaître l’adresse ebx de l’emplacement du fichier de cette question. Mais comment puis-je connaître la longueur du nom du fichier afin de pouvoir lire le contenu à cet emplacement?
Je suis tombé sur les questions suivantes qui abordent le même
question 1
Question 2 (Celui-ci est à moi seulement!)
Mais je n’ai toujours pas eu de solution à mon problème. 🙁 car les deux réponses n’étaient pas claires. J’obtiens toujours un défaut de segmentation lorsque j’essaie l’approche de la question 1
Vous pouvez vérifier mon code ici
Alors maintenant, je me demandais vraiment comment strace extrait ces valeurs si joliment 🙁

    Comme vous le savez, sys_open() ne reçoit pas la taille du nom de fichier en tant que paramètre. Cependant, la norme indique qu’une chaîne littérale doit se terminer par un caractère \0 . C’est une bonne nouvelle, car nous pouvons maintenant créer une simple boucle qui parcourt les caractères de la chaîne. Lorsque nous trouvons un caractère \0 (NULL), nous soaps que nous avons atteint la fin.

    C’est la procédure standard, c’est comme ça que strlen() fait, et aussi comment strace le fait!

    C exemple:

     #include  int main() { const char* filename = "/etc/somefile"; int fname_length = 0; for (int i = 0; filename[i] != '\0'; i++) { fname_length++; } printf("Found %d chars in: %s\n", fname_length, filename); return 0; } 

    De retour à votre tâche actuelle, vous devez accéder à l’adresse du filename de filename et effectuer la procédure que je viens de décrire. C’est quelque chose que vous devrez faire, et il n’y a pas d’autre moyen.