功能: 主要实现 对PE头信息的读取
因为以前在命名行实现过对PE信息的读取, 这里只是 变成界面显示, 没啥技术要点
展示:
主要代码:
001 | VOID SetPeInfoText( HWND hwndDlg, LPSTR lpszFile) |
005 | LPVOID pFileBuffer = NULL; |
006 | PIMAGE_DOS_HEADER pDosHeader = NULL; |
007 | PIMAGE_NT_HEADERS pNTHeader = NULL; |
008 | PIMAGE_FILE_HEADER pPEHeader = NULL; |
009 | PIMAGE_OPTIONAL_HEADER32 pOptionHeader = NULL; |
010 | PIMAGE_SECTION_HEADER pSectionHeader = NULL; |
013 | pFileBuffer = ReadPEFile(lpszFile); |
017 | MessageBox(0,TEXT( "文件读取失败" ),TEXT( "失败" ),0); |
022 | if (*(( PWORD )pFileBuffer)!=IMAGE_DOS_SIGNATURE) |
025 | MessageBox(0,TEXT( "不是有效的MZ标志" ),TEXT( "非PE文件" ),0); |
029 | pDosHeader = (PIMAGE_DOS_HEADER)pFileBuffer; |
032 | if (*((PDWORD)(( DWORD )pFileBuffer+pDosHeader->e_lfanew))!=IMAGE_NT_SIGNATURE) |
035 | MessageBox(0,TEXT( "不是有效的PE标志" ),TEXT( "非PE文件" ),0); |
040 | pNTHeader = (PIMAGE_NT_HEADERS)(( DWORD )pFileBuffer+pDosHeader->e_lfanew); |
041 | pPEHeader = (PIMAGE_FILE_HEADER)((( DWORD )pNTHeader)+4); |
044 | HWND hSectionsNum = GetDlgItem(hwndDlg,IDC_EDIT_SECNUM); |
046 | sprintf (tSecNum, "%04X" ,pPEHeader->NumberOfSections); |
047 | SendMessage(hSectionsNum,WM_SETTEXT,0,( long )tSecNum); |
049 | HWND hTimeStamp = GetDlgItem(hwndDlg,IDC_EDIT_TIMESTAMP); |
050 | TCHAR tTimeStamp[10]; |
051 | sprintf (tTimeStamp, "%08X" ,pPEHeader->TimeDateStamp); |
052 | SendMessage(hTimeStamp,WM_SETTEXT,0,( long )tTimeStamp); |
054 | HWND hSpecCode = GetDlgItem(hwndDlg,IDC_EDIT_SPECCODE); |
056 | sprintf (tSpecCode, "%04X" ,pPEHeader->Characteristics); |
057 | SendMessage(hSpecCode,WM_SETTEXT,0,( long )tSpecCode); |
060 | HWND hOptionHead = GetDlgItem(hwndDlg,IDC_EDIT_OPTIONHEAD); |
061 | TCHAR tOptionHead[10]; |
062 | sprintf (tOptionHead, "%04X" ,pPEHeader->SizeOfOptionalHeader); |
063 | SendMessage(hOptionHead,WM_SETTEXT,0,( long )tOptionHead); |
067 | pOptionHeader = (PIMAGE_OPTIONAL_HEADER32)(( DWORD )pPEHeader+IMAGE_SIZEOF_FILE_HEADER); |
069 | HWND hOEP = GetDlgItem(hwndDlg,IDC_EDIT_ENTRYPOINT); |
071 | sprintf (tOEP, "%08X" ,pOptionHeader->AddressOfEntryPoint); |
072 | SendMessage(hOEP,WM_SETTEXT,0,( long )tOEP); |
074 | HWND hBaseAddress = GetDlgItem(hwndDlg,IDC_EDIT_BASEADDRESS); |
075 | TCHAR tBaseAddress[10]; |
076 | sprintf (tBaseAddress, "%08X" ,pOptionHeader->ImageBase); |
077 | SendMessage(hBaseAddress,WM_SETTEXT,0,( long )tBaseAddress); |
079 | HWND hImageSize = GetDlgItem(hwndDlg,IDC_EDIT_IMAGESIZE); |
080 | TCHAR tImageSize[10]; |
081 | sprintf (tImageSize, "%08X" ,pOptionHeader->SizeOfImage); |
082 | SendMessage(hImageSize,WM_SETTEXT,0,( long )tImageSize); |
084 | HWND hCodeBase = GetDlgItem(hwndDlg,IDC_EDIT_CODEBASE); |
086 | sprintf (tCodeBase, "%08X" ,pOptionHeader->BaseOfCode); |
087 | SendMessage(hCodeBase,WM_SETTEXT,0,( long )tCodeBase); |
089 | HWND hDataBase = GetDlgItem(hwndDlg,IDC_EDIT_DATABASE); |
091 | sprintf (tDataBase, "%08X" ,pOptionHeader->BaseOfData); |
092 | SendMessage(hDataBase,WM_SETTEXT,0,( long )tDataBase); |
094 | HWND hMemAlign= GetDlgItem(hwndDlg,IDC_EDIT_MEM); |
096 | sprintf (tMemAlign, "%08X" ,pOptionHeader->SectionAlignment); |
097 | SendMessage(hMemAlign,WM_SETTEXT,0,( long )tMemAlign); |
099 | HWND hFileAlign= GetDlgItem(hwndDlg,IDC_EDIT_FILE); |
100 | TCHAR tFileAlign[10]; |
101 | sprintf (tFileAlign, "%08X" ,pOptionHeader->FileAlignment); |
102 | SendMessage(hFileAlign,WM_SETTEXT,0,( long )tFileAlign); |
104 | HWND hBZZ= GetDlgItem(hwndDlg,IDC_EDIT_BIAOZHIZI); |
106 | sprintf (tBZZ, "%04X" ,pOptionHeader->Magic); |
107 | SendMessage(hBZZ,WM_SETTEXT,0,( long )tBZZ); |
113 | HWND hSubSystem = GetDlgItem(hwndDlg,IDC_EDIT_SUBSYSTEM); |
114 | TCHAR tSubSystem[10]; |
115 | sprintf (tSubSystem, "%04X" ,pOptionHeader->Subsystem); |
116 | SendMessage(hSubSystem,WM_SETTEXT,0,( long )tSubSystem); |
118 | HWND hSizeHead = GetDlgItem(hwndDlg,IDC_EDIT_HEADSIZE); |
120 | sprintf (tSizeHead, "%08X" ,pOptionHeader->SizeOfHeaders); |
121 | SendMessage(hSizeHead,WM_SETTEXT,0,( long )tSizeHead); |
123 | HWND hAddNum = GetDlgItem(hwndDlg,IDC_EDIT_ADDNUM); |
125 | sprintf (tAddNum, "%08X" ,pOptionHeader->CheckSum); |
126 | SendMessage(hAddNum,WM_SETTEXT,0,( long )tAddNum); |
128 | HWND hMenuNum = GetDlgItem(hwndDlg,IDC_EDIT_MENUNUM); |
130 | sprintf (tMenuNum, "%08X" ,pOptionHeader->NumberOfRvaAndSizes); |
131 | SendMessage(hMenuNum,WM_SETTEXT,0,( long )tMenuNum); |
0则评论给“PeTools开发(二)”