📄 coff_defs.h
字号:
#ifndef COFF_DEFS_H
#define COFF_DEFS_H
//#include "ntddk.h"
//#include "thakral.h"
#define UINT16 unsigned short
#define UINT32 unsigned long
/* COFF main file header flags (bytes 18 & 19 in header) */
#define COFF_FLAG_RELO_STRIPPED 0x0001
#define COFF_FLAG_RELOCATABLE 0x0002
#define COFF_FLAG_LINE_NUMS_STRIPPED 0x0004
#define COFF_FLAG_LOCAL_SYMS_STRIPPED 0x0008
#define COFF_FLAG_LITTLE_ENDIAN 0x0100
#define COFF_FLAG_BIG_ENDIAN 0x0200
/* COFF main file header layout */
typedef struct
{
UINT16 version;
UINT16 sectionCount;
UINT32 dateStamp;
UINT32 symbolTableOffset;
UINT32 symbolTableEntriesCount;
UINT16 optionalHeaderSize;
UINT16 flags;
UINT16 targetID;
} tCOFFMainHeader;
#define COFF_MAIN_HEADER_SIZE ((sizeof(UINT16) * 5) + (sizeof(UINT32) * 3))
/* COFF optional file header layout */
typedef struct
{
UINT16 magicNumber; /* must be 0x0108 */
UINT16 version;
UINT32 executableSize; /* bytes */
UINT32 initializedDataSize; /* bytes */
UINT32 uninitializedDataSize; /* bytes */
UINT32 entryPoint;
UINT32 executableStart;
UINT32 initializedDataStart;
} tCOFFOptionalHeader;
#define COFF_OPTIONAL_HEADER_SIZE ((sizeof(UINT16) * 2) + (sizeof(UINT32) * 6))
/* COFF optional file header flags (bytes 40->43 in header) */
#define COFF_SECTION_FLAG_REGULAR 0x00000000
#define COFF_SECTION_FLAG_DUMMY 0x00000001
#define COFF_SECTION_FLAG_NOLOAD 0x00000002
#define COFF_SECTION_FLAG_GROUP 0x00000004
#define COFF_SECTION_FLAG_PAD 0x00000008
#define COFF_SECTION_FLAG_COPY 0x00000010
#define COFF_SECTION_FLAG_TEXT 0x00000020
#define COFF_SECTION_FLAG_DATA 0x00000040
#define COFF_SECTION_FLAG_BSS 0x00000080
#define COFF_SECTION_FLAG_CONDITIONAL 0x00004000
/* COFF section header layout */
typedef struct
{
char sectionName[8];
UINT32 physicalAddress;
UINT32 virtualAddress;
UINT32 size; /* words (bytes*4) */
UINT32 rawDataOffset;
UINT32 relocationsOffset;
UINT32 lineNumberEntriesOffset;
UINT32 relocationEntriesCount;
UINT32 lineNumberEntriesCount;
UINT32 flags;
UINT16 reserved;
UINT16 memPage;
} tCOFFSectionHeader;
#define COFF_SECTION_HEADER_SIZE ((sizeof(UINT16) * 2) + (sizeof(UINT32) * 9) + 8)
/* COFF optional file header flags (bytes 40->43 in header) */
#define COFF_RELO_TYPE_ABS 0x0000
#define COFF_RELO_TYPE_RELBYTE 0x000F
#define COFF_RELO_TYPE_RELWORD 0x0010
#define COFF_RELO_TYPE_RELLONG 0x0011
#define COFF_RELO_TYPE_C60BASE 0x0050
#define COFF_RELO_TYPE_C60DIR15 0x0051
#define COFF_RELO_TYPE_C60PCR21 0x0052
#define COFF_RELO_TYPE_C60LO16 0x0054
#define COFF_RELO_TYPE_C60HI16 0x0055
#define COFF_RELO_TYPE_C60SECT 0x0056
/* COFF relocation entry layout */
typedef struct
{
UINT32 virtualAddress;
UINT16 symbolTableIndex;
UINT16 reserved;
UINT16 type;
} tCOFFRelocationEntry;
#define COFF_RELOCATION_ENTRY_SIZE ((sizeof(UINT16) * 3) + (sizeof(UINT32) * 1))
/* COFF line number table entry layout */
typedef struct
{
UINT32 indexAddress;
UINT16 functionLine;
} tCOFFLineNumberTableEntry;
#define COFF_LINE_NUMBER_ENTRY_SIZE ((sizeof(UINT16) * 1) + (sizeof(UINT32) * 1))
/* COFF symbol table entry layout */
typedef struct
{
char name[8];
UINT32 value;
UINT16 sectionNumber;
UINT16 type;
char symbolClass;
char auxiliary;
} tCOFFSymbolTableEntry;
#define COFF_SYMBOL_TABLE_ENTRY_SIZE ((sizeof(UINT16) * 2) + (sizeof(UINT32) * 1) + 10)
#endif /* #ifndef COFF_DEFFS_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -