首页
社区
课程
招聘
[原创]超简易pe文件判别程序api实现 编译器dev
发表于: 2011-2-11 08:06 3016

[原创]超简易pe文件判别程序api实现 编译器dev

2011-2-11 08:06
3016
#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;

int main(int argc, char *argv[])
{
   
   BYTE *base= new BYTE[500];
    char filename[500];
    cout<<"请输入文件名"<<endl;
    cin>>filename;
     
    cout<<filename<<endl;
    //打开文件,使用win32api
    HANDLE hFile= CreateFile(filename,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    DWORD ReadSize;
    if(ReadFile(hFile,base,500,&ReadSize,NULL)==true)
    {
       if(*base=='M')
       {
                      if(*(base+1)=='Z')
                       MessageBox(NULL,"exe文件","已确定",MB_OK);
                       //接下来进行PE文件的分析,先分析mz头
                       IMAGE_DOS_HEADER dosHeader;
                       ReadFile(hFile,&dosHeader,sizeof(dosHeader),&ReadSize,NULL);
                       SetFilePointer( hFile,dosHeader.e_lfanew,NULL,FILE_BEGIN);
                       IMAGE_NT_HEADERS ntHeader;
                       
                       ReadFile(hFile,&ntHeader,sizeof(ntHeader),&ReadSize,NULL);
                       printf("%x",ntHeader.Signature);
                       if(ntHeader.Signature==0x00004550)
                       {
                                             MessageBox(NULL,"PE文件","我靠",MB_OK);
                       }
                       else
                       {
                           MessageBox(NULL,"非PE文件","我靠",MB_OK);
                       }
       }
       else
       {
           MessageBox(NULL,"非exe文件","我靠",MB_OK);
       }
    }
    else
    {
        
         MessageBox(NULL,"打开文件失败","打开文件失败",MB_OK);
    }
     CloseHandle( hFile);

     system("PAUSE");
    return EXIT_SUCCESS;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//