C++判断pe文件实例
作者:shichen2014 时间:2022-01-19 12:29:52
本文实例讲述了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++
0
投稿
猜你喜欢
Java文件操作实例详解
2023-11-25 10:29:40
Android实现读取NFC卡卡号示例
2021-08-06 21:08:39
Java应用/JVM宕机排查步骤操作
2021-08-10 14:52:10
关于mybatis遇到Integer类型的参数时动态sql需要注意条件
2021-10-13 04:59:39
Android开发简易音乐播放器
2023-12-26 01:07:03
Java花式解决'分割回文串 ii'问题详解
2022-07-09 02:01:58
mybatis根据表逆向自动化生成代码的实现
2023-03-12 15:39:02
Java Gradle项目中的资源正确获取方式
2022-10-05 09:00:50
C#实现Zip压缩目录中所有文件的方法
2021-05-29 15:41:47
winform 中显示异步下载的图片
2022-09-03 19:04:07
MyBatis利用MyCat实现多租户的简单思路分享
2022-08-16 18:58:33
c#操作Redis的5种基本类型汇总
2021-06-03 03:24:07
Spring注解@DependsOn解析
2022-01-11 08:20:35
Idea运行单个main方法,不编译整个工程的问题
2021-09-06 09:57:22
Android 实现永久保存数据的方法详解
2023-06-23 22:13:23
JVM完全解读之GC日志记录分析
2022-09-22 12:43:08
Unity实现答题系统的示例代码
2022-05-09 18:31:00
关于java的九个预定义Class对象
2023-08-16 01:56:16
一篇文章带你使用C语言编写内核
2022-01-12 12:57:48
C#延迟执行方法函数实例讲解
2022-06-17 19:23:50