手机
当前位置:查字典教程网 >编程开发 >C语言 >C++判断pe文件实例
C++判断pe文件实例
摘要:本文实例讲述了C++判断pe文件的方法。分享给大家供大家参考。具体实现方法如下:#include是为了使用CFileDialogmain.h...

本文实例讲述了C++判断pe文件的方法。分享给大家供大家参考。

具体实现方法如下:

#include <afxdlgs.h>是为了使用CFileDialog

main.h如下:

复制代码 代码如下:#include <afxwin.h>

class CMyApp:public CWinApp

{

BOOL InitInstance();

};

main.cpp如下:

复制代码 代码如下:#include "main.h"

#include <afxdlgs.h>

CMyApp theApp;

BOOL CMyApp::InitInstance()

{

CFileDialog dlg(TRUE);

if (dlg.DoModal() != IDOK)

{

return FALSE;

}

//打开文件

HANDLE hFile = ::CreateFile(dlg.GetPathName(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (INVALID_HANDLE_VALUE == hFile)

{

return FALSE;

}

IMAGE_DOS_HEADER dosHeader;

IMAGE_NT_HEADERS32 ntHeader;

DWORD dwReturn;

BOOL bIsPe=FALSE;

::ReadFile(hFile, &dosHeader, sizeof(IMAGE_DOS_HEADER), &dwReturn, NULL);

if (dwReturn == sizeof(IMAGE_DOS_HEADER))

{

if (dosHeader.e_magic == IMAGE_DOS_SIGNATURE) //mz

{

if (-1 != ::SetFilePointer(hFile, dosHeader.e_lfanew, NULL, FILE_BEGIN))

{

::ReadFile(hFile, &ntHeader, sizeof(IMAGE_NT_HEADERS32), &dwReturn, NULL);

if (dwReturn == sizeof(IMAGE_NT_HEADERS32))

{

if (ntHeader.Signature == IMAGE_NT_SIGNATURE) //pe

{

bIsPe = TRUE;

}

}

}

}

}

::CloseHandle(hFile); //与上面的CreateFile区对写

if (bIsPe)

{

MessageBoxA(NULL, "is a pe file", "", MB_OK);

}

else

{

MessageBoxA(NULL, "not a pe file", "", MB_OK);

}

return FALSE;

}

希望本文所述对大家的C++程序设计有所帮助。

【C++判断pe文件实例】相关文章:

c语言常见图片格式判断实例

c++ 判断奇数偶数实例介绍

C语言实现修改文本文件中特定行的实现代码

C++中引用(&)的用法与应用实例分析

数组循环移位操作实例

浅析VC++中的头文件包含问题

C++多文件变量解析

C/C++中如何判断某一文件或目录是否存在

C语言小程序 如何判断两个日期之差

哈夫曼的c语言实现代码

精品推荐
分类导航