Frage zu PE Datei
-
Hallo,
OllyDBG Ausgabe
00401000 <ModuleEntryPoint> /$ 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL 00401002 |. 68 00204000 PUSH console.00402000 ; |Title = "AB" 00401007 |. 68 00204000 PUSH console.00402000 ; |Text = "AB" 0040100C |. 6A 00 PUSH 0 ; |hOwner = NULL 0040100E |. E8 0D000000 CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA 00401013 |. 6A 00 PUSH 0 ; /ExitCode = 0 00401015 \. E8 00000000 CALL <JMP.&kernel32.ExitProcess> ; \ExitProcess 0040101A .- FF25 50204000 JMP DWORD PTR DS:[<&kernel32.ExitProcess>] ; kernel32.ExitProcess 00401020 $- FF25 58204000 JMP DWORD PTR DS:[<&user32.MessageBoxA>] ; user32.MessageBoxA
PEiD Ausgabe:
00000400: 41 42 00 0 00 und so weiter
Laut PEiD steht das A an Adresse 0x400 aber wieso steht dann in OllyDBG Push 00402000 ?
Wenn ich z.b. in PEiD nach 00402000 suche dann kommt die Meldung "out of range".
Was macht der PC wenn der die Datei läd ?
Wieso wird 0x402000 gepusht und z.b. nicht 0x400 ?Wenn ich z.b. mit OllyDBG im Hex Dump der Datei suche dann kommt die Meldung: "No memory on the specified address".
Legt der PC die Sachen aus dem .data Segment beim laden auf andere Adressen?
-
-
Da hab ich schon reingeschaut aber das bringt mir nichts da ich einfach nicht weiss nach was ich suchen soll. Unter welchem Stichwort im Bezug auf meiner Frage soll ich da suchen ...
-
Windows lädt die Datei, platziert und modifiziert den Code/Daten entsprechend des PE Formats. Für Details google nach "PE tutorial". Wikipedia ist auch nicht zu Verachten
(0x400 ist ein Datei-Offset und hat nichts mit der Anordnung im Speicher zu tun [RVA])
-
Ich bin mir nicht sicher, aber kann es sein, dass PEiD die Addressen nur relativ zum Dateianfang berechnet, während OllyDbg die Addressen relativ zur virtuellen Programmlade-Addresse von Windows verschiebt?
EDIT: Sch****, da war einer schneller.