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.


Anmelden zum Antworten