2016-04-18 16 views
0

in Ios, I Kopieren unter die Code-Speicher verwenden:Die Speicherkopie von Textsegment ist nicht dieselbe mit den ursprünglichen

memcpy(code, oriAddress , 100); 

wo oriAddress Punkt Textsegment (A-Adresse des Funtion). Mein Problem ist, der Speicher in oriAddress ist nicht in Code identisch. Wie ist das passiert?

enter image description here

enter image description here

Bevor der ARM-Befehl ldrh auszuführen, die durch 0x2a305ad4 wies Wert 0xb5f0. Aber nachdem ldrh ausgeführt wurde, ist der Wert von r0 nicht 0xb5f0.

+0

Wie vergleichen Sie Speicherbereiche? Verwenden Sie 'Memcmp' für das? – Tsyvarev

+0

Nein, ich vergleiche es im Debug-Fenster verwenden lldb – jerui

+0

Debuggen Sie ** User Space ** (Anwendung) Code? Wenn ja, warum "Kernel" -Tag? – Tsyvarev

Antwort

0

Es ist meine Schuld. Ich setze einen BreakPoint auf die Adresse, und lldb ändere den Wert, auf den die Adresse zeigt. Der Wert ist also der BreakPoint-Code.