Prozessausgabe mitlesen mit ptrace

OP #4904909
Lesenswert?

Hallo zusammen

Ich bin auf die Idee zu kommen, das es noch ganz praktisch wäre, wenn 
ich bei meinem Server nicht nur beim Login eine Mail bekomme, sondern 
auch noch beim Logout ein transcript von allem, was während der session 
ausgegeben wurde an mich gesendet würde. Ich bin mir noch nicht ganz 
sicher, wie ich dass am besten Umsetze, aber alle write calls mittels 
ptrace abzufangen erschien bei meinen versuchen mit strace ein 
brauchbarer weg zu sein.

Ich will also ein Programm schreiben, welches die Ausgabe eines 
Prozesses, dessen PID ich ihm übergebe, ebenfalls ausgibt oder in ein 
File schreibt, damit ich damit die Ausgabe des ersten Prozesses 
mitschneiden kann, der in einer neuen session nach einem login läuft.

Ich hänge beim Programm im Anhang momentan an 2 stellen fest:
 1) Aus irgendeinem Grund sehe ich jeden syscall doppelt.
 2) Solange ich mich mit PTRACE_ATTACH an einen Prozess hänge, 
funktionieren bei diesem einige Interrupts wie z.B. SIGINT (ctrl+c) 
nicht mehr wie gewünscht.

Woran könnte das liegen?
Angehängte Dateien:
OP #4906103
Lesenswert?

Ich habe dass mit den doppelten Syscalls gerade heraus gefunden. 
PTRACE_SYSCALL hält den Prozess beim Eintritt und beim Verlassen eines 
Syscalls an, und es sind diese beiden Zustände, die ich sehe. Ich 
ignoriere nun einfach alle Syscalls, bei denen das Register rax auf 
-ENOSYS gesetzt ist, um nur Syscalls abzufangen, die schon ausgeführt 
wurden, und nicht den Error ENOSYS produziert haben.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren