.exe 3GB patch



  • Und würde dieses Byte immer an derselben Stelle sein, bei jeder .exe?



  • machs einfach, gugg nach!



  • lies Texte über das PE-Format, dann weißt du es



  • Ich frage aber hier, weil ich nicht erst alles über PE lernen möchte.



  • Das Stichwort "PE Format" ist der Goldene Taller. Such mal bei Google und RTFM



  • Zeigt mir bitte jemand, wie man in einer beliebigen .exe dieses Flag setzt?



  • Nein.



  • Hi

    Mach einfach ein diffing von einer gepatchten exe und einer ungepatchten. Danach kannst du dir ein Patch für jede exe schreiben. Der PE header ist glaube ich 400byte gross. Irgendwo da wird sich dieses flag verstecken. 🙂 habe ich was übersehen ?

    Lowbyte



  • IMAGE_FILE_HEADER Structure: http://msdn.microsoft.com/en-us/library/ms680313(VS.85).aspx

    IMAGE_FILE_LARGE_ADDRESS_AWARE Flag



  • helper.exe schrieb:

    Nein.

    Und du bist wer, dass du für alle sprichst?

    Weiß jemand auswendig, wo die Struktur hinzeigen muss? Und wie könnte ich prüfen, ob die .exe auch valid ist, bevor ich patche?



  • aus winnt.h

    2517 typedef struct _IMAGE_DOS_HEADER {
    2518     WORD  e_magic;      /* 00: MZ Header signature */
    2519     WORD  e_cblp;       /* 02: Bytes on last page of file */
    2520     WORD  e_cp;         /* 04: Pages in file */
    2521     WORD  e_crlc;       /* 06: Relocations */
    2522     WORD  e_cparhdr;    /* 08: Size of header in paragraphs */
    2523     WORD  e_minalloc;   /* 0a: Minimum extra paragraphs needed */
    2524     WORD  e_maxalloc;   /* 0c: Maximum extra paragraphs needed */
    2525     WORD  e_ss;         /* 0e: Initial (relative) SS value */
    2526     WORD  e_sp;         /* 10: Initial SP value */
    2527     WORD  e_csum;       /* 12: Checksum */
    2528     WORD  e_ip;         /* 14: Initial IP value */
    2529     WORD  e_cs;         /* 16: Initial (relative) CS value */
    2530     WORD  e_lfarlc;     /* 18: File address of relocation table */
    2531     WORD  e_ovno;       /* 1a: Overlay number */
    2532     WORD  e_res[4];     /* 1c: Reserved words */
    2533     WORD  e_oemid;      /* 24: OEM identifier (for e_oeminfo) */
    2534     WORD  e_oeminfo;    /* 26: OEM information; e_oemid specific */
    2535     WORD  e_res2[10];   /* 28: Reserved words */
    2536     DWORD e_lfanew;     /* 3c: Offset to extended header */
    2537 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
    2538 #include <poppack.h>
    2539 
    2540 #define IMAGE_DOS_SIGNATURE    0x5A4D     /* MZ   */
    

    Also jede EXE-Datei beginnt mit dem IMAGE_DOS_HEADER.
    e_magic muss IMAGE_DOS_SIGNATURE sein, damit es eine gültige (DOS-)Exe ist.

    Dann steht an (Dateibeginn + e_lfanew Bytes) die Position der IMAGE_NT_HEADERS (link)

    Signature muss hier IMAGE_NT_SIGNATURE sein.
    Jetzt siehst Du den FileHeader und kannst ihn Deinen Wünschen entsprechend bearbeiten.

    Der Grund, warum einige hier etwas schroff reagieren: Das hättest Du auch selber (mit Google usw) rausfinden können.


Anmelden zum Antworten