使用程序判断一个文件是否是有效的PE文件

688 篇文章 10 订阅 ¥99.90 ¥299.90
106 篇文章 3 订阅
该博客介绍了如何通过检查DOS头的e_magic字段(0x5A4D)和NT头的Signature字段(0x00004550)来确定一个文件是否为有效的PE文件。作者使用VC6创建了一个单文档工程,并进行了测试,分别用test.png和notepad.exe作为例子。代码实现中涉及类型转换问题,需要将dwFileAddr指针转换为PIMAGE_DOS_HEADER类型。如果是控制台程序,需要包含<windows.h>头文件。
摘要由CSDN通过智能技术生成

判断一个文件是否为有效的PE文件,判断2个字段:

    DOS头的e_magic字段是否为0x5A4D;

    NT头的Signature字段是否为0x00004550;

若都是的话则是一个有效的PE文件;

VC6,单文档工程;

void CIspeView::OnDraw(CDC* pDC)
{
	CIspeDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	//HANDLE hFile = CreateFile(TEXT("test.png"), GENERIC_ALL, NULL, NULL,OPEN_EXISTING,NULL,NULL);
	HANDLE hFile = CreateFile(TEXT("notepad.exe"), GENERIC_ALL, NULL, NULL,OPEN_EXISTING,NULL,NULL);
    if (hFile == INVALID_HANDLE_VALUE)
    {
        //std::cout << "打开文件失败!" << std::endl;
		pDC->TextOut(20,20,"打开文件失败!");
        CloseHandle(hFile);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值