2012-04-11 10 views
2

Ich versuche, eine Datenflussanomalieerkennung mit ptrace zu implementieren. Nach ein wenig Recherche habe ich ein Programm implementiert, das strace ähnlich ist. Nun, ich bin verwirrt darüber, was ist das, was das Wiki sagt mir über Systemaufrufe:Funktioniert ptrace auf Benutzerebene oder Kernel-Ebene?

„Systemaufrufe stellen die Schnittstelle zwischen einem Prozess und dem Betriebssystem“

Wenn ich verwende Um den Speicher des Prozesses zu ändern, arbeite ich an User Space oder Kernel Space? Ich bin wirklich verwirrt darüber.

Antwort

2

Sie arbeiten im Adressraum eines separaten Prozesses; dies erfordert die Vermittlung (und die Erlaubnis) des Kernels, da unabhängige Prozesse normalerweise die Adressräume der anderen nicht beeinflussen können.

+0

Tatsächlich wird Ptrace ein 'Int 0x80' für jeden Systemaufruf rechts erzeugen? Also habe ich es mit einem Interrupt zu tun, also bin ich im Kernelraum richtig? Das war mein erster Gedanke. Lag ich falsch ? –

+1

Nicht genau, es kann den Prozess stoppen, wenn * es * einen Systemaufruf macht (der bereits "int 0x80" für Linux auf Intel ist), aber es kann auch einfach Prozessspeicher oder Register einsehen. Irgendwelche von diesen können nicht direkt zu einem Prozess durch einen anderen Prozess getan werden; dieser zweite Prozess muss stattdessen den Kernel bitten, auf den ersten zu reagieren, was 'ptrace' tut. – geekosaur

+0

Also wenn ich direkt im Kernel-Bereich arbeiten möchte, was soll ich tun ?? –

Verwandte Themen