Abrufen der Prozessbasisadresse in Mac OSX

8

Ich versuche, den Speicher eines Prozesses mit task_for_pid / vm_read zu lesen.

%Vor%

In diesem Fall lese ich die ersten 2048 Bytes.

Das funktioniert, wenn ich die Basisadresse des Prozesses kenne (was ich mit gdb "info shared" herausfinden kann - in diesem Fall 0x10e448000 ), aber wie finde ich die Basisadresse zur Laufzeit (ohne zu schauen es mit gdb)?

    
rickythefox 24.04.2012, 15:55
quelle

2 Antworten

8

Beantworte meine eigene Frage. Ich konnte die Basisadresse mit mach_vm_region_recurse wie unten erhalten. Der Versatz landet in vmoffset . Wenn es einen anderen Weg gibt, der "richtiger" ist - zögere nicht zu kommentieren!

%Vor%     
rickythefox 24.04.2012, 19:30
quelle
5

Da Sie current_task () aufrufen, gehe ich davon aus, dass Sie zur Laufzeit auf Ihren eigenen Prozess abzielen. Also sollte die Basisadresse, die Sie erwähnten, die dynamische Basisadresse sein, d. H. Statische Basisadresse + Bildrutsche, verursacht durch ASLR, richtig? Basierend auf dieser Annahme können Sie mit "Section and Segment Accessors" die statische Basisadresse Ihres Prozesses ermitteln und dann die dyld-Funktionen zum Abrufen des Bildobjekts verwenden. Hier ist ein Ausschnitt:

%Vor%

Ich hoffe, es hilft!

    
snakeninny 25.03.2014 04:04
quelle

Tags und Links