【原创】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); }
相关文章推荐
- 【PE】如何使用Valgrind memcheck工具进行C/C++的内存泄漏检测
- [原创]什么是内存泄露?附内存泄露检测工具
- [置顶] 【PE】Valgrind工具检测内存错误实例分析
- [原创][开源]跨浏览器的JavaScript性能检测工具 - 至于你信不信,我反正信了
- [原创][开源]跨浏览器的JavaScript性能检测工具 - 至于你信不信,我反正信了
- [原创][开源]跨浏览器的JavaScript性能检测工具 - 至于你信不信,我反正信了
- iOS内存泄漏自动检测工具PLeakSniffer
- iOS性能检测之Instrunments - 几种常用工具简单介绍
- C++ 复制控制 Copy Control 示例, 及内存泄漏检测工具 Valgrind 的简单使用
- (原创工具)CnCrypt磁盘痕迹擦除工具,彻底杜绝数据恢复。
- 微信号码检测工具为什么不能免费使用?(2017)
- 【华磊原创】安装程序自动检测安装.Net Framework运行环境(使用InnoSetup)
- 网络连接状态检测服务 小工具
- 简单实用的黄金分割工具【原创】
- 网站检测工具10款
- Windows/Linux下C/C++内存泄露检测工具
- myeclipse2014 java代码检测工具安装(Find Bugs/PMD/Checkstyle)
- 15个在线网站检测工具
- 【转】 SqlServer性能检测和优化工具使用详细
- Java虚拟机工具之堆栈跟踪工具jstack检测输入等待