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

2009-10-07 10:17

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

源码:

#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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>