#include"stdio.h"#include"stdlib.h"#include"windows.h"int main(){ IMAGE_DOS_HEADER imafe_dos_header;//dos頭 IMAGE_NT_HEADERS image_nt_headers;//pe頭 IMAGE_SECTION_HEADER *image_section_header;//區(qū)塊 HANDLE jubing1; DWord shijichicuen=0;//實(shí)際讀取大小 BOOL zhenjia; LARGE_INTEGER pianyi; LARGE_INTEGER pianyi_xin;//文件指針的新值 int j = 0;//區(qū)塊的大小 jubing1 =CreateFile(L"C://Users//lisaisai//Desktop//第15課第01節(jié)加工資加賬號(hào)系統(tǒng)完善.exe", FILE_ALL_access, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); //FILE_ATTRIBUTE_NORMAL 普通文件 zhenjia=ReadFile(jubing1, &imafe_dos_header, sizeof(IMAGE_DOS_HEADER), &shijichicuen, NULL); PRintf("是否讀取成功真假%d/n", zhenjia); printf("開頭%s/n", (char*)&imafe_dos_header.e_magic); printf("PE頭開始位置(指出PE頭文件的偏移位置)%x/n", imafe_dos_header.e_lfanew); pianyi.QuadPart = imafe_dos_header.e_lfanew; SetFilePointerEx(jubing1,pianyi,&pianyi_xin, FILE_BEGIN);//移動(dòng)指針位置 128個(gè) //printf("文件指針的新值%x/n",pianyi_xin); zhenjia = ReadFile(jubing1, &image_nt_headers, sizeof(IMAGE_NT_HEADERS), &shijichicuen, NULL); printf("開頭%s",(char*) &image_nt_headers.Signature); j = image_nt_headers.FileHeader.NumberOfSections; printf("區(qū)塊的數(shù)量%d/n", image_nt_headers.FileHeader.NumberOfSections); printf("PE頭里的 第3個(gè)結(jié)構(gòu)體的大小%x/n", image_nt_headers.FileHeader.SizeOfOptionalHeader); pianyi.QuadPart += sizeof(IMAGE_NT_HEADERS); SetFilePointerEx(jubing1, pianyi, &pianyi_xin, FILE_BEGIN);//IMAGE_NT_HEADERS的大小是固定的 一般情況這樣寫 精準(zhǔn)要0x18+e0 image_section_header = malloc(sizeof(IMAGE_SECTION_HEADER)*j); //IMAGE_SECTION_HEADER 大小不固定 zhenjia = ReadFile(jubing1, image_section_header, sizeof(IMAGE_SECTION_HEADER)*j, &shijichicuen, NULL); for (int i=0;i<j;i++) { printf("區(qū)塊的名字%s/n", &image_section_header[i].Name); } CloseHandle(jubing1); free(image_section_header); system("pause"); return 1;}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注