Hallo,
Ich bin gerade dabei mir ein Tool zu schreiben, welches den PE-Header (+DOS Header) einer Datei auslesen soll. Als Sprache habe ich Java gewählt (warum? weil ich es so will
). Nun bin ich direkt zu Beginn auf eine kleine Unbequemlichkeit gestoßen, bei der ich mir nicht sicher bin, ob das ganze nicht auch einfacher funktioniert.
Wenn ich in C nun die Struktur IMAGE_DOS_HEADER habe:
So kann ich (insofern ich mich recht entsinne) nachdem ich die Bytes der Datei gelesen habe die Struktur einfach "füllen", indem ich nach IMAGE_DOS_HEADER caste.
Gibt es einen derartigen "Mechanismus" auch in Java? Mein bisheriger Ansatz war, dass ich die entsprechende Klasse in Java manuell fülle, was natürlich nicht schwer ist, jedoch in einem unschönen großen Code resultiert, da man sich zum Beispiel auch um Little Endian selber kümmern muss. Und da man das Rad ja nicht jedes mal aufs Neue erfinden muss wollte ich wissen, ob das ganze auch einfacher funktioniert.
Viele Grüße
PHRoZeNCReW
Ich bin gerade dabei mir ein Tool zu schreiben, welches den PE-Header (+DOS Header) einer Datei auslesen soll. Als Sprache habe ich Java gewählt (warum? weil ich es so will

Wenn ich in C nun die Struktur IMAGE_DOS_HEADER habe:
Code:
typedef struct _IMAGE_DOS_HEADER
{
WORD e_magic;
WORD e_cblp;
WORD e_cp;
WORD e_crlc;
WORD e_cparhdr;
WORD e_minalloc;
WORD e_maxalloc;
WORD e_ss;
WORD e_sp;
WORD e_csum;
WORD e_ip;
WORD e_cs;
WORD e_lfarlc;
WORD e_ovno;
WORD e_res[4];
WORD e_oemid;
WORD e_oeminfo;
WORD e_res2[10];
LONG e_lfanew;
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
Gibt es einen derartigen "Mechanismus" auch in Java? Mein bisheriger Ansatz war, dass ich die entsprechende Klasse in Java manuell fülle, was natürlich nicht schwer ist, jedoch in einem unschönen großen Code resultiert, da man sich zum Beispiel auch um Little Endian selber kümmern muss. Und da man das Rad ja nicht jedes mal aufs Neue erfinden muss wollte ich wissen, ob das ganze auch einfacher funktioniert.
Viele Grüße
PHRoZeNCReW