Ich denke eher das es an der Umwandlung in Hex liegt.
ehdr.e_entry ergibt bei normaler Ausgabe einen Dezimalwert:
cout << ehdr.e_entry << endl;
3217325056
Dieser umgewandelt in Hex ergibt:
bfc47c00 und das ist auch das gleiche was mir printf angezeigt hat (Entrypoint: 0xBFC47C00).
Da stelt sich nun die Frage, was bei der Umwandlung in Hex falsch läuft, bzw. welche Funktion funktioniert.
Bzw. bin ich mir über den Typ e_entry von nicht ganz im klaren.
Der Wert kommt aus dem
struct typedef struct elf32_hdr{ und ist dort definiert als
Elf32_Addr e_entry; /* Entry point */
e entry gibt den Einsprungpunkt im virtuellen Speicher an, an dem die Ausführung beginnt, nachdem das Programm geladen und im Speicher platziert worden ist.
|