Posted By: PV (Blaaaa...) on 'CZprogram' Title: Hlavicka Windowsackeho Exace Date: Tue Feb 3 22:42:43 1998 Windowsovsky EXE soubor se sklada ze dvou casti: kratkeho DOSovskeho programu (vcetne hlavicky), ktery vetsinou vytiskne informace o tom, ze program je urcen pro Windows: "This program requires Microsoft Windows" - muze to byt samozrejme jakakoli jina akce, napr. spusteni Windows (se jmenem programu jako parametrem). WinZip Self-Extractor generuje soubory, ktere obsahuji rozbalovaci programy zaroven pro DOS i Windows. Informace o tom, kde zacina hlavicka NE, jsou uvedeny v hlavicce pro DOS. Hlavicka NE Offset Delka Popis 00h word signatura "NE" 02h byte Verze linkeru 03h byte Revizni cislo linkeru 04h word Offset vstupni tabulky (od zacatku hlavicky NE) 06h word Delka vstupni tabulky v bytech 08h dword Rezervovano 0Ch byte Program flags: bit 0: SINGLEDATA - program obsahuje jeden datovy segment (program je knihovna DLL) bit 1: MULTIPLEDATA - program obsahuje vice datovych segmentu (program je spustitelna aplikace) pokud ani jeden z bitu 0, 1 neni nastaven, program je NOAUTODATA (neobsahuje automatic data segmenr) bit 2: globalni inicializace (?) bit 3: pouze chraneny mod bit 4: instrukce 8086 bit 5: instrukce 80286 bit 6: instrukce 80386 bit 7: instrukce 80x87 0Dh byte Aplication flags: bity 0-2 typ aplikace (0 - full screen/konzolova aplikace, 1 - kompatibilni s Windows API, 2 - pouziva WinAPI) bit 3: aplikace OS/2 bit 4: prvni segment v programu obsahuje kod, ktery nacita aplikaci bit 5: linker zjistil pri sestavovani programu chybu, presto byl EXE vytvoren bit 6: rezervovano bit 7: soubor je DLL knihovna 0Eh byte Cislo automatic data segmentu 10h word Pocatecni velikost haldy 12h word Pocatecni velikost zasobniku 14h dword Vstupni bod programu (CS:IP, CS je index v segmentove tabulce) 18h dword Pocatecni ukazatel na zasobnik (SS:SP, SS je index v segmentove tabulce) 1Ch word Pocet prvku segmentove tabulky 1Eh word Pocet prvku v module-reference tabulce 20h word Pocet bytu v nonresident-name tabulce 22h word Offset segmentove tabulky (od zacatku NE hlavicky) 24h word Offset resource tabulky (od zacatku NE hlavicky) 26h word Offset resident-name tabulky (od zacatku NE hlavicky) 28h word Offset module-reference tabulky (od zacatku NE hlavicky) 2Ah word Offset imported-name tabulky (pole retezcu, ukoncene retezcem s delkou 0) (od zacatku NE hlavicky) 2Ch dword Offset nonresident-name tabulky (od zacatku souboru) 30h word Pocet presunovatelnych polozek ve vstupni tabulce 32h word File alignment size shift count 0 is equivalent to 9 (default 512-byte pages) 34h word Pocet zdroju v resource tabulce 36h byte Cilovy operacni system bit 0: neznamy bit 1: OS/2 bit 2: Windows bit 3: European MS-DOS 4.x bit 4: Windows 386 bit 5: BOSS (Borland Operating System Services) 37h byte Doplnkove informace bit 0: Podporuje dlouha jmena souboru bit 1: Aplikace pro Windows 2.x, ktera bezi v chranenem modu 3.x bit 2: Aplikace pro Windows 2.x, ktera podporuje proporcionalni fonty bit 3: Program obsahuje fast-load prostor 38h word Offset fast-load prostoru (v sektorech od zacatku souboru) 3Ah word Delka fast-load prostoru (v sektorech) 3Ch word Rezervovano 3Eh byte Ocekavana verze Windows. Segmentova tabulka Polozky popisuji segmenty pouzite v programu. Offset Delka Popis 00h word Offset datoveho segmentu (v sektorech) (0 - datovy segment neexistuje) 02h word Delka segmentu (v bytech) (0 - delka je 64kB) 04h word Obsah EXE bit 0: datovy segment bit 1: pamet pro segment alokovana bit 2: segment je nacten bit 3: rezervovano bit 4: segment je typu MOVEABLE (0 - FIXED) bit 5: segment je typu PURE nebo SHAREABLE (0 - segment je IMPURE nebo NONSHAREABLE) bit 6: segment je typu PRELOAD (0 - LOADONCALL) bit 7: pokud je tento bit nastaven a: segment je kodovy, pak je to typ EXECUTEONLY, pokud je segment datovy, pak je to typ READONLY bit 8: segment obsahuje relokacni data bit 9: rezervovano bit 10: rezervovano bit 11: rezervovano bit 12: segment je typu DISCARDABLE bit 13: rezervovano bit 14: rezervovano bit 15: rezervovano 06h word Minimalni prostor pro alokaci segmentu (v bytech) (0 - prostor je 64 kB) Tabulka zdroju (Resource Table) Tabulka ma tento format: WORD rscAlignShift; Alignment shift pro data, tato hodnota pouzita jako exponent dvou da faktor (v bytech) pro vypocet pozice zdroje v souboru. TYPEINFO rscTypes[]; Pole informaci o typech zdroju (jedna polozka pro kazdy typ pouzity v programu) WORD rscEndTypes; Urcuje konec definice typu. Musi byt nula. BYTE rscResourceNames[]; Jmena zdroju ulozenych v souboru, polozky jsou ulozeny za sebou - prvni byte polozky urcuje pocet nasledujicich znaku. BYTE rscEndNames; Urcuje konec definice jmen. Musi byt nula. Struktura TYPEINFO typedef struct _TYPEINFO { WORD rtTypeID; WORD rtResourceCount; DWORD rtReserved; NAMEINFO rtNameInfo[]; } TYPEINFO; Polozky: rtTypeID Urcuje typ zdroje. Je to bud konstanta typu zdroje (viz nize) nebo offset ve jmenu resource-type. Jestlize je nastaven nejvyssi bit (0x8000), typ je urcen jednou z konstant: Hodnota Typ RT_ACCELERATOR Tabulka akceleratoru RT_BITMAP Bitmapa RT_CURSOR Kurzor RT_DIALOG Dialogovy box RT_FONT Font RT_FONTDIR Adresar fontu RT_GROUP_CURSOR Adresar kurzoru RT_GROUP_ICON Adresar ikony RT_ICON Ikona RT_MENU Menu RT_RCDATA Uzivatelska data RT_STRING Tabulka retezcu Pokud nejvyssi bit neni nastaven, hodnota urcuje offset If the high bit of the value in this member is not set, the value represents an offset, in bytes relative to the beginning of the resource table, to a name in the rscResourceNames member. rtResourceCount Specifies the number of resources of this type in the executable file. rtReserved Reserved. rtNameInfo Specifies an array of NAMEINFO structures containing information about individual resources. The rtResourceCount member specifies the number of structures in the array. 1000FF, SoftwareContact, 1997 ----------------- Toto jsem vytahnul z helpu 1000 File Formats - urcite to najdes nekde na Inetu (Windows New Executable File (NE-EXE) Header Bla ,,Problem je vzdy mezi zidli a klavesnici`` PV alias Bla + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + emajl: pvac5561@barbora.mff.cuni.cz http://atrey.karlin.mff.cuni.cz/~bla