一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C/C++ - C++實(shí)現(xiàn)查殼程序代碼實(shí)例

C++實(shí)現(xiàn)查殼程序代碼實(shí)例

2021-02-05 14:45C++教程網(wǎng) C/C++

這篇文章主要介紹了C++實(shí)現(xiàn)查殼程序代碼實(shí)例,有比較詳細(xì)的注釋,包含了對(duì)原理的說明,有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了C++實(shí)現(xiàn)查殼程序代碼,分享給大家供大家參考。具體方法分析如下:

一般來說,PEID是基于特征碼的,用python只需要兩行代碼,用VC實(shí)現(xiàn)用了這么多代碼……。

python中只要引入pefile模塊,第一句代碼指定數(shù)據(jù)庫(kù)文件,第二句代碼返回結(jié)果。具體的看pefile官方介紹吧

下面是C++的代碼:

 

復(fù)制代碼 代碼如下:
void CMyPeidDlg::OnBnClickedBtnOpen() 

    // 獲取當(dāng)前工作路徑 
    CString strAppName;//當(dāng)前工作目錄 
    ::GetModuleFileName(NULL, strAppName.GetBuffer(_MAX_PATH), _MAX_PATH); 
    strAppName.ReleaseBuffer(); 
    int nPos = strAppName.ReverseFind('//'); 
    strAppName = strAppName.Left(nPos + 1); 
 
    // AfxMessageBox(strAppName); 
 
 
    // 文件擴(kuò)展名過濾器 
    LPCTSTR szFilter = "EXE Files (*.EXE)|*.EXE|DLL Files (*.DLL)|*.DLL|All Files (*.*)|*.*||"; 
 
    //初始目錄是c:/windows, 初始選擇的文件名是test,初始后綴過濾器是 Chart Files (*.xlc) 
    CFileDialog dlg(TRUE,NULL ,strAppName.GetBuffer(_MAX_PATH) ,OFN_ENABLESIZING ,szFilter,NULL); 
    if(dlg.DoModal() == IDOK) 
    { 
        CString strFile = dlg.GetPathName(); // 全路徑 
        GetDlgItem(IDC_EDT_FILE)->SetWindowText(strFile.GetBuffer(_MAX_PATH)); 
 
        TRACE("/n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/n"); 
        TRACE(strFile); 
        TRACE("/n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/n"); 
    } 

 
void CMyPeidDlg::OnBnClickedBtnOk() 

    GetDlgItem(IDC_EDT_FILE)->SetWindowText("c:\\1.exe"); 
 
    char buf[_MAX_PATH]; 
    ZeroMemory(buf, _MAX_PATH); 
    GetDlgItemText(IDC_EDT_FILE, buf, _MAX_PATH-1); 
    HANDLE hFile = CreateFile(buf, GENERIC_READ,FILE_SHARE_READ, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 
    if (!hFile) 
    { 
        MessageBox("createFile failed.."); 
        return; 
    } 
    HANDLE hMap = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0,NULL); 
    if (!hMap) 
    { 
        MessageBox("hMap failed.."); 
        return; 
    } 
    LPVOID lpBase = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0); 
    if (!lpBase) 
    { 
        MessageBox("lpBase failed.."); 
        return; 
    } 
 
    DWORD dwOEP; 
    IMAGE_DOS_HEADER *pDosHeader = (IMAGE_DOS_HEADER*)lpBase; 
    IMAGE_NT_HEADERS *pNtHeader = (IMAGE_NT_HEADERS*)((char*)lpBase + pDosHeader->e_lfanew); 
    dwOEP = pNtHeader->OptionalHeader.AddressOfEntryPoint; 
 
    PIMAGE_SECTION_HEADER pSectionHeader = IMAGE_FIRST_SECTION(pNtHeader); 
     
    CString strTemp; 
    strTemp.Format("%0x",dwOEP); 
    SetDlgItemText(IDC_EDT_OEP, strTemp.GetBuffer(4)); 
 
    DWORD FileOffset; 
    for(int i=0; i<pNtHeader->FileHeader.NumberOfSections;i++) 
    { 
        if (dwOEP >= pSectionHeader->VirtualAddress &&  
            dwOEP < pSectionHeader->VirtualAddress + pSectionHeader->SizeOfRawData) 
        { 
            FileOffset = dwOEP - pSectionHeader->VirtualAddress + pSectionHeader->PointerToRawData; 
        } 
        pSectionHeader++; 
    } 
 
    strTemp.Empty(); 
    strTemp.Format("%0x",FileOffset); 
    SetDlgItemText(IDC_EDT_FILEOFFSET, strTemp.GetBuffer(4)); 
 
    //從文件偏移開始讀特征碼 
    CString strBuf; 
    DWORD dwReaded; 
    SetFilePointer(hFile, FileOffset,0, FILE_BEGIN); 
    ReadFile(hFile, strBuf.GetBuffer(16), 16, &dwReaded,NULL); 
    MessageBox(strBuf.GetBuffer(16)); 
 
    char code[] = "\x60\xE8\x03\x00\x00\x00\xE9\xEB\04\x5D\x45\x55\xC3\xE8\x01"; 
    char fileBuf[16]; 
    memcpy(fileBuf, strBuf.GetBuffer(16),16); 
    char ctype[20]; 
    for (int i=0;i<16;i++) 
    { 
        if (code[i]!=fileBuf[i]) 
        { 
            StrCpy(ctype,"not found"); 
            break; 
        } 
        else if (i==15) 
        { 
            StrCpy(ctype, "aspack"); 
        } 
    } 
    SetDlgItemText(IDC_EDT_SHELLTYPE, ctype); 
}

 

希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产99精品成人免费视频 | 福利视频导航大全 | 免费片在线观看 | 日韩精品欧美 | 青青久久久 | 麻豆天美精东果冻传媒在线 | 91视频无限看 | 亚洲AV蜜桃永久无码精品红樱桃 | 国产精品福利在线观看入口 | 国产精品亚洲一区二区久久 | 99久久99久久久精品齐齐鬼色 | 日一日操一操 | 色网在线视频 | 亚洲 在线 日韩 欧美 | 国产午夜精品久久理论片小说 | 日韩欧美成末人一区二区三区 | 为什么丈夫插我我却喜欢被打着插 | 暖暖 免费 高清 日本 中文 | 美女草b | 久久精品午夜一区二区福利 | 久久婷婷丁香五月色综合啪免费 | 国产欧美va欧美va香蕉在线观 | 国产精品青青在线观看香蕉 | 91精品国产高清久久久久久 | 国产成人福利免费视频 | 日本一区二区免费在线 | 草草视频在线观看 | 色哟哟在线观看 | 色噜噜 男人的天堂在线观看 | 国产成人免费视频 | 超级乱淫伦短篇小说做车 | 亚洲熟区 | 糖心视频在线观看 | 精品久久久久久久久免费影院 | 村妇超级乱淫伦小说全集 | 好男人在线观看hd中字 | 久久se精品一区二区国产 | 深夜网站在线观看 | 被夫上司侵犯了中文字幕 | 久久免费资源福利资源站 | 女人爽到喷水的视频免费 |