C++获取PE文件的入口点

Eddy 发布于2009-10-30 10:41:5 分类: 程序设计 已浏览loading 网友评论0条 我要评论

源码:

#include "stdafx.h"
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char* argv[])
{
char *FileName = argv[1];

HANDLE hFile = CreateFile(FileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,0);
if (hFile == INVALID_HANDLE_VALUE)
{
   cout<<"文件打开失败!"<<endl;
   return -1;
}

IMAGE_DOS_HEADER dosHeader;
bool bRet;
DWORD readSize;

bRet = ReadFile(hFile,&dosHeader,sizeof(dosHeader),&readSize,NULL);
if (!bRet)
{
   cout<<"读取文件失败!"<<endl;
   return -1;
}
cout<<hex<<dosHeader.e_lfanew<<endl;

IMAGE_NT_HEADERS peHeader;

SetFilePointer(hFile,dosHeader.e_lfanew,NULL,FILE_BEGIN);
bRet = ReadFile(hFile,&peHeader,sizeof(peHeader),&readSize,NULL);
if (!bRet)
{
   cout<<"读取文件失败!"<<endl;
   return -1;
}

IMAGE_OPTIONAL_HEADER imOpHeader;

imOpHeader = peHeader.OptionalHeader;
cout<<imOpHeader.AddressOfEntryPoint<<endl;
CloseHandle(hFile);

return 0;
}

获取其他信息也是一个思路,自由发挥!

已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/38.html     欢迎订阅Eddy Blog

关于 C  PE文件  入口  的相关文章

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言