Ich habe den folgenden Code:Wie analysiert man Assembly-Code für Stack-Frames?
Func5() { ShowStackTrace();}
Func4() { Func5();}
Hier wird der Stack-Trace ich habe, ist -
**Frame for Func5**
EIP : 403899
Function name : Func5
EBP : 12ff0c
ESP : 12fed0
Return address : 4038c8
CS : 23
DS : 9998
ESI : 0
EDI : 0
**Frame for Func4**
Function name : Func4
EBP : 12ff14
ESP : 12ff14
CS : 23
DS : 9998
ESI : 0
EDI : 0
nun die Absenderadresse von Fkt5 mit bekam ich die ersten 5 Bytes darüber
ff ff ff 88 E8
Das Vorhandensein von E8 bedeutet hier, dass dies eine Aufrufanweisung (nahe) ist und die nächsten 4 Bytes zur Berechnung der Adresse verwendet werden. Also wird die EIP, wenn wir CALL Func5 lesen, 4038c3 sein. Wie berechne ich die Startadresse von Func5 aus diesen Daten? Bitte sagen Sie, ob Sie weitere Daten benötigen. Wie wird die Berechnung durchgeführt, wenn es sich um einen Fernbefehl handelt (Opcode - FF)?
Sie haben natürlich Recht. Wie bekomme ich die endgültige Adresse? Es ist relativ zu was? CS? – Bruce
Also hier wird es 0x403850 sein. Cool. Danke vielmals. Wie berechnen wir es für FAR CALL (Opcode - FF)? Ich möchte dir jetzt alle meine Punkte geben! – Bruce
Wo kann ich auch über dieses Zeug lesen? – Bruce