在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乙個堆...