程序博客网 > lua5.3 windows 下载
来源:互联网 发布:lua5.3 windows 下载 编辑:程序博客网 时间:2024/04/29 20:55
// 读取PE文件头.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include#includeusing namespace std;int _tmain(int argc, _TCHAR* argv[]){HANDLE hFile=CreateFile(L"D:\\project\\Proc_Url\\Debug\\Proc_Url.exe",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);if(INVALID_HANDLE_VALUE==hFile){cout<<"sorry the file open failed\n";return 0;}//读取DOS文件头_IMAGE_DOS_HEADER dosHeader={0};//首先移动到文件头DWORD num;::SetFilePointer(hFile,0,NULL,FILE_BEGIN);if(ReadFile(hFile,&dosHeader,sizeof(IMAGE_DOS_HEADER),&num,NULL)){cout<<"IMAGE_NT_HEADER的偏移位置是"<<dosHeader.e_lfanew<<endl;}else{cout<<"读取dos头部失败\n";return 0;}_IMAGE_NT_HEADERS peHeader={0};if(ReadFile(hFile,&peHeader,sizeof(_IMAGE_NT_HEADERS),&num,NULL)){if(peHeader.Signature==0x00004500){cout<<"经检测是有效地PE文件\n";}time_t tim=peHeader.FileHeader.TimeDateStamp;tm* dat=localtime(&tim);cout<<"PE文件的运行平台是:"<<hex<<peHeader.FileHeader.Machine<<endl;cout<<"PE文件的区块数目是:"<<hex<<peHeader.FileHeader.NumberOfSections<<endl;cout<<"PE文件的创建时间是"<<dec<tm_year+1970<<"年"<<dec<tm_mon+1<<"月"<<dec<tm_mday+1<<"日"<<endl;cout<<"PE文件的调试文件位置"<<hex<<peHeader.FileHeader.PointerToSymbolTable<<endl;cout<<"PE文件的OPTIOANALHEADER大小"<<hex<<peHeader.FileHeader.SizeOfOptionalHeader<<endl;cout<<"PE文件属性"<<hex<<peHeader.FileHeader.Characteristics<<endl;cout<<"PE文件的符号个数,也就是符号表指向的个数"<<hex<<peHeader.FileHeader.NumberOfSymbols<<endl;}else{cout<<"读取pe文件头失败\n";return 0;}//输出OPTIONAL HEADER字段cout<<"程序入口点:"<<peHeader.OptionalHeader.AddressOfEntryPoint<<endl;cout<<"代码部分RVA:"<<peHeader.OptionalHeader.BaseOfCode<<endl;cout<<"数据部分RVA:"<<peHeader.OptionalHeader.BaseOfData<<endl;cout<<"校验和:"<<peHeader.OptionalHeader.CheckSum<<endl;cout<<"数据目录:"<<peHeader.OptionalHeader.DataDirectory<<"\n";cout<<"dll属性:"<<peHeader.OptionalHeader.DllCharacteristics<<endl;cout<<"文件对齐:"<<peHeader.OptionalHeader.FileAlignment<<"\n";cout<<"文件基址:"<<peHeader.OptionalHeader.ImageBase<<"\n";cout<<"镜像大小:"<<peHeader.OptionalHeader.SizeOfImage<<endl;::CloseHandle(hFile);return 0;}