您的位置:首页 > 其它

【原创】PE检测工具

2012-04-19 19:55 267 查看
工程下载地址:http://files.cnblogs.com/tk091/PECheck.zip

void CPECheckDlg::OnBtnbrowse()
{
// TODO: Add your control notification handler code here
CFileDialog dlg(TRUE);
if (dlg.DoModal()!=IDOK)   //如果用户没有选择确定按钮,则退出
{
return;
}
HANDLE hFile=::CreateFile(dlg.GetPathName(),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
SetDlgItemText(IDC_EDIT_FILEPATH,dlg.GetPathName());
if (hFile==INVALID_HANDLE_VALUE)
{
AfxMessageBox("无效的文件",MB_OK);
}
IMAGE_DOS_HEADER dosHeader;
IMAGE_NT_HEADERS32 ntHeader;

BOOL bValid=FALSE;
DWORD dwRead;
::ReadFile(hFile,&dosHeader,sizeof(dosHeader),&dwRead,NULL);
if(dwRead==sizeof(dosHeader))
{
if(dosHeader.e_magic==IMAGE_DOS_SIGNATURE)
{
if(::SetFilePointer(hFile,dosHeader.e_lfanew,NULL,FILE_BEGIN)!=-1)
{
::ReadFile(hFile,&ntHeader,sizeof(ntHeader),&dwRead,NULL);
if(ntHeader.Signature==IMAGE_NT_SIGNATURE)
bValid=TRUE;
}
}
}
if(bValid)
//MessageBox("是一个PE格式的文件","提示",MB_OK);
SetDlgItemText(IDC_EDIT_RESULT,"该文件是一个PE文件");
else
{
//MessageBox("不是一个PE格式的文件","提示",MB_OK);
SetDlgItemText(IDC_EDIT_RESULT,"该文件不是一个PE文件");
}
::CloseHandle(hFile);
return;
}


如果想支持拖拽,则添加

void CPECheckDlg::OnDropFiles(HDROP hDropInfo)
{
// TODO: Add your message handler code here and/or call default
UINT count;
char filePath[256];

count = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);
if(count)
{
for(UINT i=0; i<count; i++)
{
int pathLen = DragQueryFile(hDropInfo, i, filePath, sizeof(filePath));
//AfxMessageBox(filePath);
SetDlgItemText(IDC_EDIT_FILEPATH,filePath);
}
}

DragFinish(hDropInfo);

HANDLE hFile=::CreateFile(filePath,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
//SetDlgItemText(IDC_EDIT_FILEPATH,filePath);
if (hFile==INVALID_HANDLE_VALUE)
{
AfxMessageBox("无效的文件",MB_OK);
}
IMAGE_DOS_HEADER dosHeader;
IMAGE_NT_HEADERS32 ntHeader;

BOOL bValid=FALSE;
DWORD dwRead;
::ReadFile(hFile,&dosHeader,sizeof(dosHeader),&dwRead,NULL);
if(dwRead==sizeof(dosHeader))
{
if(dosHeader.e_magic==IMAGE_DOS_SIGNATURE)
{
if(::SetFilePointer(hFile,dosHeader.e_lfanew,NULL,FILE_BEGIN)!=-1)
{
::ReadFile(hFile,&ntHeader,sizeof(ntHeader),&dwRead,NULL);
if(ntHeader.Signature==IMAGE_NT_SIGNATURE)
bValid=TRUE;
}
}
}
if(bValid)
//MessageBox("是一个PE格式的文件","提示",MB_OK);
SetDlgItemText(IDC_EDIT_RESULT,"该文件是一个PE文件");
else
{
//MessageBox("不是一个PE格式的文件","提示",MB_OK);
SetDlgItemText(IDC_EDIT_RESULT,"该文件不是一个PE文件");
}
::CloseHandle(hFile);

CDialog::OnDropFiles(hDropInfo);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: