Ich versuche, den Stapel eines untergeordneten Prozesses zu lesen, habe aber kein Glück. Ich weiß, dass dies möglich ist ptrace
, aber über ptrace
die Benutzeroberfläche können Sie jeweils nur ein Wort lesen, und ich versuche, einen größeren Teil des Stapels zu scannen.
Ich habe auch versucht, das /proc/$pid/mem
aus den Grenzen des Stapels zu lesen, wie es aus der /proc/$pid/maps
Datei extrahiert wurde, nachdem zuerst ptrace zum Anhängen verwendet wurde (wie hier vorgeschlagen ), aber das Lesen schlägt weiterhin fehl (selbst wenn es als Root ausgeführt wird), obwohl derselbe Code beim Versuch erfolgreich ist Lesen aus verschiedenen Teilen des Prozesses (z. B. Haufen).
Was mache ich falsch? Gibt es noch eine andere Möglichkeit?
waitpid
zwischenptrace(PTRACE_ATTACH,…)
und angerufenread
(sonst gibt es eine mögliche Rennbedingung)? Welcher Fehler kommtread
zurück? Tut das Kind etwas Besonderes an der Speicherzuordnung - können Sie Ihren Code mit einem einfachen Kind wie dem versuchensleep
?