PE中重要資料結構 winnt h

2021-07-04 19:20:17 字數 2818 閱讀 9251

在winnt.h標頭檔案中儲存了pe中用到的所有結構體。

//dos頭

typedef struct _image_dos_header image_dos_header, *pimage_dos_header;

//pe頭

typedef struct _image_nt_headers image_nt_headers32, *pimage_nt_headers32;

//pe檔案頭

typedef struct _image_file_header image_file_header, *pimage_file_header;

#define image_numberof_directory_entries    16

//pe擴充套件頭

typedef struct _image_optional_header image_optional_header32, *pimage_optional_header32;

//資料目錄表

typedef struct _image_data_directory image_data_directory, *pimage_data_directory;

#define image_sizeof_short_name              8

//塊表頭

typedef struct _image_section_header misc;

dword   virtualaddress;

dword   sizeofrawdata;

dword   pointertorawdata;

dword   pointertorelocations;

dword   pointertolinenumbers;

word    numberofrelocations;

word    numberoflinenumbers;

dword   characteristics;

} image_section_header, *pimage_section_header;

//輸入表結構

typedef struct _image_import_descriptor dummyunionname;

dword   timedatestamp;                 

dword   forwarderchain;            

dword   name;

dword   firstthunk;                     // rva to iat (if bound this iat has actual addresses)

} image_import_descriptor;

typedef image_import_descriptor unaligned *pimage_import_descriptor;

//int、 iat

typedef struct _image_thunk_data32 u1;

} image_thunk_data32;

typedef image_thunk_data32 * pimage_thunk_data32;

//typedef struct _image_import_by_name image_import_by_name, *pimage_import_by_name;

//繫結輸入表

typedef struct _image_bound_import_descriptor image_bound_import_descriptor,  *pimage_bound_import_descriptor;

typedef struct _image_bound_forwarder_ref image_bound_forwarder_ref, *pimage_bound_forwarder_ref;

//輸出表

typedef struct _image_export_directory image_export_directory, *pimage_export_directory;

//重定位表

typedef struct _image_base_relocation image_base_relocation;

typedef image_base_relocation unaligned * pimage_base_relocation;

//資源目錄結構

typedef struct _image_resource_directory image_resource_directory, *pimage_resource_directory;

typedef struct _image_resource_directory_entry dummystructname;

dword   name;//目錄項的名稱字串指標(0:id)

word    id;

} dummyunionname;

union dummystructname2;

} dummyunionname2;

} image_resource_directory_entry, *pimage_resource_directory_entry;

typedef struct _image_resource_dir_string_u image_resource_dir_string_u, *pimage_resource_dir_string_u;

typedef struct _image_resource_data_entry image_resource_data_entry, *pimage_resource_data_entry;

PE檔案結構和相應資料結構表示

typedef struct image dos header image dos header,pimage dos header typedef struct image nt headers image nt headers32,pimage nt headers32 typedef stru...

linux C 開發中重要的資料結構 結構體

在linux的驅動開發中,最常用的,也最重要的資料結構是結構體,它也最容易使人混淆。要掌握結構體,首先要弄明白運算子的優先順序 在所有運算子中,下面4個運算子的優先順序是最高的 結構體運算子 和 用與函式呼叫的 以及用於下標的 因此它們同運算元之間的結合也最緊密。例如對 struct p 表示式 p...

重要的資料結構 堆疊

先declare下,此堆疊 stack 不是記憶體中的stack,而是一種十分重要的資料結構,後進先出 lifo 的資料結構。堆疊區別於樹和圖,是一種順序結構,它只能在一端進行增加元素,或者刪除元素的操作。這個所謂的 端 就是棧頂。乙個stack當且僅當乙個元素沒有時,是空棧。1 create乙個堆...