⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pefile.h

📁 该项目主要是将wingdows程序直接运行在linux上
💻 H
字号:
/* * pefile.h * * Copyright (C) 2006  Insigme Co., Ltd * * Authors:  * - Chenzhan Hu * * This software has been developed while working on the Linux Unified Kernel * project (http://linux.insigma.com.cn) in the Insigma Reaserch Institute,   * which is a subdivision of Insigma Co., Ltd (http://www.insigma.com.cn). *  * The project is sponsored by Insigma Co., Ltd. * * The authors can be reached at linux@insigma.com.cn. * * This program is free software; you can redistribute it and/or modify it * under the terms of  the GNU General  Public License as published by the * Free Software Foundation; either version 2 of the  License, or (at your * option) any later version. * * Revision History: *   Jan 2006 - Created. */ /* * pefile.h: * Reference to Kernel-win32 code */#ifndef _PEFILE_H#define _PEFILE_H#include <linux/module.h>#ifdef CONFIG_UNIFIED_KERNEL#define	MAX_FILE_NAME	256#define IMAGE_DOS_SIGNATURE	0x5A4D	   /* MZ   */#define IMAGE_OS2_SIGNATURE	0x454E	   /* NE   */#define IMAGE_OS2_SIGNATURE_LE	0x454C	   /* LE   */#define IMAGE_OS2_SIGNATURE_LX	0x584C	   /* LX */#define IMAGE_VXD_SIGNATURE	0x454C	   /* LE   */#define IMAGE_NT_SIGNATURE	0x00004550 /* PE00 *//* These defines describe the meanings of the bits in the Characteristics * field */#define IMAGE_FILE_RELOCS_STRIPPED		0x0001 /* No relocation info */#define IMAGE_FILE_EXECUTABLE_IMAGE		0x0002#define IMAGE_FILE_LINE_NUMS_STRIPPED		0x0004#define IMAGE_FILE_LOCAL_SYMS_STRIPPED		0x0008#define IMAGE_FILE_16BIT_MACHINE		0x0040#define IMAGE_FILE_BYTES_REVERSED_LO		0x0080#define IMAGE_FILE_32BIT_MACHINE		0x0100#define IMAGE_FILE_DEBUG_STRIPPED		0x0200#define IMAGE_FILE_SYSTEM			0x1000#define IMAGE_FILE_DLL				0x2000#define IMAGE_FILE_BYTES_REVERSED_HI		0x8000/* These are the settings of the Machine field. */#define	IMAGE_FILE_MACHINE_UNKNOWN		0#define	IMAGE_FILE_MACHINE_I860			0x14d#define	IMAGE_FILE_MACHINE_I386			0x14c#define	IMAGE_FILE_MACHINE_R3000		0x162#define	IMAGE_FILE_MACHINE_R4000		0x166#define	IMAGE_FILE_MACHINE_R10000		0x168#define	IMAGE_FILE_MACHINE_ALPHA		0x184#define	IMAGE_FILE_MACHINE_POWERPC		0x1F0#define	IMAGE_SIZEOF_FILE_HEADER		20/* Possible Magic values */#define IMAGE_NT_OPTIONAL_HDR_MAGIC		0x10b#define IMAGE_ROM_OPTIONAL_HDR_MAGIC		0x107/* These are indexes into the DataDirectory array */#define IMAGE_FILE_EXPORT_DIRECTORY		0#define IMAGE_FILE_IMPORT_DIRECTORY		1#define IMAGE_FILE_RESOURCE_DIRECTORY		2#define IMAGE_FILE_EXCEPTION_DIRECTORY		3#define IMAGE_FILE_SECURITY_DIRECTORY		4#define IMAGE_FILE_BASE_RELOCATION_TABLE	5#define IMAGE_FILE_DEBUG_DIRECTORY		6#define IMAGE_FILE_DESCRIPTION_STRING		7#define IMAGE_FILE_MACHINE_VALUE		8  /* Mips */#define IMAGE_FILE_THREAD_LOCAL_STORAGE		9#define IMAGE_FILE_CALLBACK_DIRECTORY		10/* Directory Entries, indices into the DataDirectory array */#define	IMAGE_DIRECTORY_ENTRY_EXPORT		0#define	IMAGE_DIRECTORY_ENTRY_IMPORT		1#define	IMAGE_DIRECTORY_ENTRY_RESOURCE		2#define	IMAGE_DIRECTORY_ENTRY_EXCEPTION		3#define	IMAGE_DIRECTORY_ENTRY_SECURITY		4#define	IMAGE_DIRECTORY_ENTRY_BASERELOC		5#define	IMAGE_DIRECTORY_ENTRY_DEBUG		6#define	IMAGE_DIRECTORY_ENTRY_COPYRIGHT		7#define	IMAGE_DIRECTORY_ENTRY_GLOBALPTR		8   /* (MIPS GP) */#define	IMAGE_DIRECTORY_ENTRY_TLS		9#define	IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG	10#define	IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT	11#define	IMAGE_DIRECTORY_ENTRY_IAT		12  /* Import Address Table */#define	IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT	13#define	IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR	14/* Subsystem Values */#define	IMAGE_SUBSYSTEM_UNKNOWN		0#define	IMAGE_SUBSYSTEM_NATIVE		1#define	IMAGE_SUBSYSTEM_WINDOWS_GUI	2	/* Windows GUI subsystem */#define	IMAGE_SUBSYSTEM_WINDOWS_CUI	3	/* Windows character subsystem*/#define	IMAGE_SUBSYSTEM_OS2_CUI		5#define	IMAGE_SUBSYSTEM_POSIX_CUI	7#define	IMAGE_SIZEOF_SECTION_HEADER	40#define IMAGE_FIRST_SECTION(ntheader) \  ((PIMAGE_SECTION_HEADER)((LPBYTE)&((PIMAGE_NT_HEADERS)(ntheader))->OptionalHeader + \                           ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader))/* These defines are for the Characteristics bitfield. *//* #define IMAGE_SCN_TYPE_REG			0x00000000 - Reserved *//* #define IMAGE_SCN_TYPE_DSECT			0x00000001 - Reserved */#define IMAGE_SCN_TYPE_NOLOAD		0x00000002/* #define IMAGE_SCN_TYPE_GROUP			0x00000004 - Reserved *//* #define IMAGE_SCN_TYPE_NO_PAD		0x00000008 - Reserved *//* #define IMAGE_SCN_TYPE_COPY			0x00000010 - Reserved */#define IMAGE_SCN_CNT_CODE			0x00000020#define IMAGE_SCN_CNT_INITIALIZED_DATA		0x00000040#define IMAGE_SCN_CNT_UNINITIALIZED_DATA	0x00000080#define	IMAGE_SCN_LNK_OTHER			0x00000100#define	IMAGE_SCN_LNK_INFO			0x00000200/* #define	IMAGE_SCN_TYPE_OVER		0x00000400 - Reserved */#define	IMAGE_SCN_LNK_REMOVE			0x00000800#define	IMAGE_SCN_LNK_COMDAT			0x00001000/* 						0x00002000 - Reserved *//* #define IMAGE_SCN_MEM_PROTECTED 		0x00004000 - Obsolete */#define	IMAGE_SCN_MEM_FARDATA			0x00008000/* #define IMAGE_SCN_MEM_SYSHEAP		0x00010000 - Obsolete */#define	IMAGE_SCN_MEM_PURGEABLE			0x00020000#define	IMAGE_SCN_MEM_16BIT			0x00020000#define	IMAGE_SCN_MEM_LOCKED			0x00040000#define	IMAGE_SCN_MEM_PRELOAD			0x00080000#define	IMAGE_SCN_ALIGN_1BYTES			0x00100000#define	IMAGE_SCN_ALIGN_2BYTES			0x00200000#define	IMAGE_SCN_ALIGN_4BYTES			0x00300000#define	IMAGE_SCN_ALIGN_8BYTES			0x00400000#define	IMAGE_SCN_ALIGN_16BYTES			0x00500000  /* Default */#define IMAGE_SCN_ALIGN_32BYTES			0x00600000#define IMAGE_SCN_ALIGN_64BYTES			0x00700000/* 						0x00800000 - Unused */#define IMAGE_SCN_LNK_NRELOC_OVFL		0x01000000#define IMAGE_SCN_MEM_DISCARDABLE		0x02000000#define IMAGE_SCN_MEM_NOT_CACHED		0x04000000#define IMAGE_SCN_MEM_NOT_PAGED			0x08000000#define IMAGE_SCN_MEM_SHARED			0x10000000#define IMAGE_SCN_MEM_EXECUTE			0x20000000#define IMAGE_SCN_MEM_READ			0x40000000#define IMAGE_SCN_MEM_WRITE			0x80000000typedef struct _IMAGE_DOS_HEADER {	WORD	e_magic;	/* 00: MZ Header signature */	WORD	e_cblp;		/* 02: Bytes on last page of file */	WORD	e_cp;		/* 04: Pages in file */	WORD	e_crlc;		/* 06: Relocations */	WORD	e_cparhdr;	/* 08: Size of header in paragraphs */	WORD	e_minalloc;	/* 0a: Minimum extra paragraphs needed */	WORD	e_maxalloc;	/* 0c: Maximum extra paragraphs needed */	WORD	e_ss;		/* 0e: Initial (relative) SS value */	WORD	e_sp;		/* 10: Initial SP value */	WORD	e_csum;		/* 12: Checksum */	WORD	e_ip;		/* 14: Initial IP value */	WORD	e_cs;		/* 16: Initial (relative) CS value */	WORD	e_lfarlc;	/* 18: File address of relocation table */	WORD	e_ovno;		/* 1a: Overlay number */	WORD	e_res[4];	/* 1c: Reserved words */	WORD	e_oemid;	/* 24: OEM identifier (for	e_oeminfo) */	WORD	e_oeminfo;	/* 26: OEM information;	e_oemid specific */	WORD	e_res2[10];	/* 28: Reserved words */	DWORD	e_lfanew;	/* 3c: Offset to extended header */} IMAGE_DOS_HEADER;typedef struct _IMAGE_FILE_HEADER {  WORD  Machine;  WORD  NumberOfSections;  DWORD TimeDateStamp;  DWORD PointerToSymbolTable;  DWORD NumberOfSymbols;  WORD  SizeOfOptionalHeader;  WORD  Characteristics;} IMAGE_FILE_HEADER;typedef struct _IMAGE_DATA_DIRECTORY {	DWORD	VirtualAddress;	DWORD	Size;} IMAGE_DATA_DIRECTORY;#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16typedef struct _IMAGE_OPTIONAL_HEADER {	/* Standard fields */	WORD	Magic;	BYTE	MajorLinkerVersion;	BYTE	MinorLinkerVersion;	DWORD	SizeOfCode;	DWORD	SizeOfInitializedData;	DWORD	SizeOfUninitializedData;	DWORD	AddressOfEntryPoint;	DWORD	BaseOfCode;	DWORD	BaseOfData;	/* NT additional fields */	DWORD	ImageBase;	DWORD	SectionAlignment;	DWORD	FileAlignment;	WORD	MajorOperatingSystemVersion;	WORD	MinorOperatingSystemVersion;	WORD	MajorImageVersion;	WORD	MinorImageVersion;	WORD	MajorSubsystemVersion;	WORD	MinorSubsystemVersion;	DWORD	Win32VersionValue;	DWORD	SizeOfImage;	DWORD	SizeOfHeaders;	DWORD	CheckSum;	WORD	Subsystem;	WORD	DllCharacteristics;	DWORD	SizeOfStackReserve;	DWORD	SizeOfStackCommit;	DWORD	SizeOfHeapReserve;	DWORD	SizeOfHeapCommit;	DWORD	LoaderFlags;	DWORD	NumberOfRvaAndSizes;	IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];} IMAGE_OPTIONAL_HEADER;typedef struct _IMAGE_NT_HEADERS {	DWORD			Signature;	IMAGE_FILE_HEADER	FileHeader;	IMAGE_OPTIONAL_HEADER	OptionalHeader;} IMAGE_NT_HEADERS;#define IMAGE_SIZEOF_SHORT_NAME 8typedef struct _IMAGE_SECTION_HEADER {	BYTE	Name[IMAGE_SIZEOF_SHORT_NAME];	union {		DWORD PhysicalAddress;		DWORD VirtualSize;	} Misc;	DWORD	VirtualAddress;	DWORD	SizeOfRawData;	DWORD	PointerToRawData;	DWORD	PointerToRelocations;	DWORD	PointerToLinenumbers;	WORD	NumberOfRelocations;	WORD	NumberOfLinenumbers;	DWORD	Characteristics;} IMAGE_SECTION_HEADER;typedef struct _IMAGE_BASE_RELOCATION {	DWORD	VirtualAddress;	DWORD	SizeOfBlock;	WORD	TypeOffset[];		/* size is (SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(WORD) */								/* lower 12 bit, is offset, need to add VirtualAddress */								/* high 4 bit, 0 is not used, 3 is used */} IMAGE_BASE_RELOCATION;#endif /* CONFIG_UNIFIED_KERNEL */#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -