C++判断pe文件实例

本文实例讲述了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++程序设计有所帮助。

(0)

相关推荐

  • C++文件读写代码分享

    编写一个程序,统计data.txt文件的行数,并将所有行前加上行号后写到data1.txt文件中. 算法提示: 行与行之间以回车符分隔,而getline()函数以回车符作为终止符.因此,可以采用getline()函数读取每一行,再用一个变量i计算行数. (1)实现源代码 #include <iostream> #include <fstream> #include <string> #include <sstream> using namespace std

  • C++获得文件状态信息的方法

    本文实例讲述了C++获得文件状态信息的方法.分享给大家供大家参考.具体如下: //C++ 获得文件状态信息源码, //C++ 获得文件所在磁盘盘符源码, //C++ 文件创建时间源码, //C++ 访问时间源码, //C++ 最后修改日期源码,No such file or directory(无此文件或索引) #include<iostream.h> #include <time.h> #include <sys/types.h> #include <sys/s

  • C++读写INI配置文件的类实例

    本文实例讲述了C++读写INI配置文件的类.分享给大家供大家参考.具体如下: 1. IniReader.h文件: #ifndef INIREADER_H #define INIREADER_H #include <windows.h> class CIniReader { public: CIniReader(LPCTSTR szFileName); int ReadInteger(LPCTSTR szSection, LPCTSTR szKey, int iDefaultValue); fl

  • C++遍历文件夹下文件的方法

    本文实例讲述了C++遍历文件夹下文件的方法.分享给大家供大家参考.具体如下: #include <windows.h> #include <stdio.h> #include <string.h> #define LEN 1024 // 深度优先递归遍历目录中所有的文件 BOOL DirectoryList(LPCSTR Path) { WIN32_FIND_DATA FindData; HANDLE hError; int FileCount = 0; char Fi

  • C++实现显示MP3文件信息的方法

    本文实例讲述了C++实现显示MP3文件信息的方法.分享给大家供大家参考.具体实现方法如下: /** * This is small example how to use libZPlay library to play files. * This example is using OpenFile functions to open disk files and play. */ #define WIN32_LEAN_AND_MEAN #include <windows.h> #include

  • C++选择文件夹代码的封装

    本文实例讲述了C++选择文件夹代码的封装,分享给大家供大家参考.具体方法如下: 该实例分为DirDialog.h头文件与DirDialog.cpp源文件. DirDialog.h头文件代码如下: 复制代码 代码如下: #pragma once  #ifndef __DIRDIALOG_H_HH  #define __DIRDIALOG_H_HH #include <Shlobj.h> class CDirDialog  {  protected:      BROWSEINFO m_bi; 

  • C++的头文件和实现文件详解

    在C++编程过程中,随着项目的越来越大,代码也会越来越多,并且难以管理和分析.于是,在C++中就要分出了头(.h)文件和实现(.cpp)文件,并且也有了Package的概念. 对于以C起步,C#作为"母语"的我刚开始跟着导师学习C++对这方面还是感到很模糊.虽然我可以以C的知识面对C++的语法规范,用C#的思想领悟C++中类的使用.但是C#中定义和实现是都在一个文件中(其实都是在类里面),而使用C的时候也只是编程的刚刚起步,所写的程序也只要一个文件就够了.因此对于C++的Package

  • C++判断pe文件实例

    本文实例讲述了C++判断pe文件的方法.分享给大家供大家参考. 具体实现方法如下: #include <afxdlgs.h>是为了使用CFileDialog main.h如下: 复制代码 代码如下: #include <afxwin.h>    class CMyApp:public CWinApp  {      BOOL InitInstance();  }; main.cpp如下: 复制代码 代码如下: #include "main.h"  #includ

  • C++ 实现PE文件特征码识别的步骤

    目录 打开PE文件映射: 判断是否为PE文件: 判断PE文件特征码: 打开PE文件映射: 在读取PE结构之前,首先要做的就是打开PE文件到内存,这里打开文件我们使用了CreateFile()函数该函数可以打开文件并返回文件句柄,接着使用CreateFileMapping()函数创建文件的内存映像,最后使用MapViewOfFile()读取映射中的内存并返回一个句柄,后面的程序就可以通过该句柄操作打开后的文件了. #include <stdio.h> #include <Windows.h

  • Python判断一个文件夹内哪些文件是图片的实例

    如下所示: def is_img(ext): ext = ext.lower() if ext == '.jpg': return True elif ext == '.png': return True elif ext == '.jpeg': return True elif ext == '.bmp': return True else: return False 调用时 for x in os.listdir(directory): if is_img(osp.splitext(x)[1

  • 判断java文件类型TikaToolKit的实例

    引入依赖 <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-core</artifactId> <version>1.20</version> </dependency> 或 compile 'org.apache.tika:tika-core:1.20' 工具类 import lombok.AllArgsConstructor;

  • C#判断DLL文件是32位还是64位的示例代码

    c#判断dll文件是32位还是64位,实例代码如下所示: using System; using System.IO; namespace GetDllVersionDemo { /// <summary> /// https://www.cnblogs.com/LifeDecidesHappiness/p/15711169.html /// C#判断DLL文件是32位还是64位 /// LDH @ 2021-12-20 /// </summary> internal class

  • Go语言判断指定文件是否存在的方法

    本文实例讲述了Go语言判断指定文件是否存在的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main    import (     "fmt"     "os" )    func main() {     f, err := os.Open("dotcoo.com.txt")     if err != nil && os.IsNotExist(err) {         fmt.Pri

  • Mybatis映射文件实例详解

     一.输入映射 parameterType 指定输入参数的Java类型,可以使用别名或者类的全限定名.它可以接收简单类型.POJO.HashMap. 1.传递简单类型 根据用户ID查询用户信息: <select id="findUserById" parameterType="int" resultType="com.itheima.mybatis.po.User"> SELECT * FROM USER WHERE id =#{id

  • PHP+AjaxForm异步带进度条上传文件实例代码

    在使用ajaxForm方法之前,首先需要安装form.js的插件,网上有: 一.首先说用法,ajaxForm可以接收0或1个参数,该参数可以是一个变量.一个对象或回调函数,这个对象主要有以下参数: var object= { url:url, //form提交数据的地址 type:type, //form提交的方式(method:post/get) target:target, //服务器返回的响应数据显示的元素(Id)号 beforeSerialize:function(){} //序列化提交

  • PHP使用get_headers函数判断远程文件是否存在的方法

    本文实例讲述了PHP使用get_headers函数判断远程文件是否存在的方法.分享给大家供大家参考.具体实现方法如下: 以前讲过程关于php判断远程文件是否存在的文章都是利用fopen,sockt,curl函数来实现检查远程文件是否存在,下面我再介绍利用 get_headers来检查远程文件是否存在,感兴趣的朋友可以参考一下. 先来简单了解get_headers()函数 get_headers() 返回一个数组m包含有服务器响应一个 HTTP 请求所发送的标头. get_headers:发送服务

  • C#判断指定文件是否是只读的方法

    本文实例讲述了C#判断指定文件是否是只读的方法.分享给大家供大家参考.具体如下: C#可以通过FileInfo类获得文件属性,文件属性包含了文件是否是只读的 using System; using System.IO; static class Test { static void Main() { FileInfo file = new FileInfo("test.cs"); Console.WriteLine(file.Attributes.ToString()); if(fil

随机推荐