最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++判斷pe文件實例

 更新時間:2014年10月14日 11:46:49   投稿:shichen2014  
這篇文章主要介紹了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區(qū)對寫 
    if (bIsPe) 
    { 
        MessageBoxA(NULL, "is a pe file", "", MB_OK); 
    } 
    else 
    { 
        MessageBoxA(NULL, "not a pe file", "", MB_OK); 
    } 
    return FALSE; 
}

希望本文所述對大家的C++程序設計有所幫助。

相關文章

  • C語言使用posix正則表達式庫的實現

    C語言使用posix正則表達式庫的實現

    在C語言中,你可以使用 POSIX 正則表達式庫(regex.h)來進行正則表達式的模式匹配,本文主要介紹了C語言使用posix正則表達式庫的實現,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 堆排序算法(選擇排序改進)

    堆排序算法(選擇排序改進)

    這篇文章主要介紹了堆排序算法(選擇排序改進),有需要的朋友可以參考一下
    2014-01-01
  • C++自動析構時的順序問題

    C++自動析構時的順序問題

    這篇文章主要介紹了C++自動析構時的順序,通過實例代碼給大家講解了C++ 構造與析構的執(zhí)行順序,代碼簡單易懂,非常不錯對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • C語言數組學習之特殊矩陣的壓縮存儲

    C語言數組學習之特殊矩陣的壓縮存儲

    矩陣在計算機圖形學、工程計算中都占有舉足輕重的地位,本文將討論如何將矩陣更有效地存儲在內存中,并且能夠方便地提取矩陣中的元素。感興趣的同學可以了解一下
    2021-12-12
  • C語言函數調用基礎應用詳解

    C語言函數調用基礎應用詳解

    函數就是一段封裝好的,可以重復使用的代碼,它使得我們的程序更加模塊化,不需要編寫大量重復的代碼。這篇文章主要介紹了c語言是如何處理函數調用的?需要的朋友可以參考下
    2023-02-02
  • C++報錯`Null Pointer Dereference`的解決方法

    C++報錯`Null Pointer Dereference`的解決方法

    在軟件開發(fā)中,Null Pointer Dereference 是一種常見的錯誤,它發(fā)生在程序試圖訪問或操作一個空指針指向的內存位置時,這種情況通常會導致程序崩潰,給 debug 工作帶來很大困擾,今天,我們將探討如何解決 Null Pointer Dereference 報錯,需要的朋友可以參考下
    2024-07-07
  • C++實現簡單射擊小游戲

    C++實現簡單射擊小游戲

    這篇文章主要為大家詳細介紹了C++實現簡單射擊小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • C++ clock()解析如何使用時鐘計時的應用

    C++ clock()解析如何使用時鐘計時的應用

    本篇文章是對c++中的clock()函數進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • C++替換棧中和.data中的cookie實現步驟詳解

    C++替換棧中和.data中的cookie實現步驟詳解

    這篇文章主要介紹了C++替換棧中和.data中的cookie實現步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-10-10
  • C++ std::condition_variable 條件變量用法解析

    C++ std::condition_variable 條件變量用法解析

    condition_variable(條件變量)是 C++11 中提供的一種多線程同步機制,它允許一個或多個線程等待另一個線程發(fā)出通知,以便能夠有效地進行線程同步,這篇文章主要介紹了C++ std::condition_variable 條件變量用法,需要的朋友可以參考下
    2023-09-09

最新評論

万荣县| 霞浦县| 连平县| 江山市| 景宁| 慈溪市| 永顺县| 平南县| 自贡市| 鹤庆县| 子长县| 宁蒗| 永胜县| 云安县| 灵宝市| 东乌珠穆沁旗| 乌鲁木齐市| 新巴尔虎右旗| 陈巴尔虎旗| 柳江县| 淄博市| 东城区| 雅江县| 望城县| 新竹市| 鄂州市| 高密市| 东城区| 修水县| 定西市| 龙州县| 马公市| 淮南市| 英德市| 都匀市| 长沙县| 洪雅县| 尼勒克县| 德昌县| 怀柔区| 辉县市|