当前位置:  编程技术>c/c++/嵌入式

C++实现查壳程序代码实例

    来源: 互联网  发布时间:2014-10-29

    本文导语:  本文实例讲述了C++实现查壳程序代码,分享给大家供大家参考。具体方法分析如下: 一般来说,PEID是基于特征码的,用python只需要两行代码,用VC实现用了这么多代码……。 python中只要引入pefile模块,第一句代码指定数据库...

本文实例讲述了C++实现查壳程序代码,分享给大家供大家参考。具体方法分析如下:

一般来说,PEID是基于特征码的,用python只需要两行代码,用VC实现用了这么多代码……。

python中只要引入pefile模块,第一句代码指定数据库文件,第二句代码返回结果。具体的看pefile官方介绍吧

下面是C++的代码:

代码如下:
void CMyPeidDlg::OnBnClickedBtnOpen() 

    // 获取当前工作路径 
    CString strAppName;//当前工作目录 
    ::GetModuleFileName(NULL, strAppName.GetBuffer(_MAX_PATH), _MAX_PATH); 
    strAppName.ReleaseBuffer(); 
    int nPos = strAppName.ReverseFind('//'); 
    strAppName = strAppName.Left(nPos + 1); 
 
    // AfxMessageBox(strAppName); 
 
 
    // 文件扩展名过滤器 
    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; iFileHeader.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[] = "x60xE8x03x00x00x00xE9xEB4x5Dx45x55xC3xE8x01"; 
    char fileBuf[16]; 
    memcpy(fileBuf, strBuf.GetBuffer(16),16); 
    char ctype[20]; 
    for (int i=0;i

    
 
 

您可能感兴趣的文章:

  • Base64编码原理详解及c++编码解码实现
  • 我实现了个J2EE技术的服务器,支持TCP、UDP和数据库,由于性能的原因,需要改为C或C++实现,我是C、C++新手,我该如何入手呢?看什么样的
  • c++实现MD5算法代码示例
  • java 与 C++ 实现后绑定的方法
  • c++通用模板类(template class)定义实现详细介绍
  • Qt实现的C++框架 qtioccontainer
  • 用C或C++实现主存的分配与回收
  • 在linux系统上,如何用C++实现获取和设置系统时间?
  • 文本压缩算法C++实现 Golden Huffman
  • C++标准库实现 libc++
  • C++的XMLRPC实现 XMLRPC++
  • Java/JavaScript API 的 C++ 实现 libj
  • c++ 连接两个字符串实现代码 实现类似strcat功能
  • c++在unix中如何实现CString的方法?或者说有没有替换CString的类?
  • 请问:java中如何实现C++中的sizeof()方法?
  • 用C或C++编程,模拟可变分区存储管理且首次适应的算法实现存储器的分配与回收
  • vim中如何实现c++代码编写的自动格式化和语法高亮的功能?
  • C++实现CreatThread函数主线程与工作线程交互的方法
  • 请教为什么在C++编译通过并实现的程序,在linux下就会出错
  • linux下c++怎样实现回调(CALLBACK)函数?
  • 在linux下如何用c++实现建立一个文件夹
  • 请问在一个servlet里取得一个用singleton模式实现的类实例,那么这个类实例的生命周期是怎样的?
  • 高分求c 实现线程池的一个实例
  • python实现的重启关机程序实例
  • 怎样检测一个对象的实例的存在,并且删除它?程序是怎样实现的?谢谢!
  • python调用短信猫控件实现发短信功能实例
  • Java调用DOS实现定时关机的实例
  • C语言实现杨辉三角实例
  • 那位牛人可以说说实例池的原理和实现??
  • C#实现让窗体永远在窗体最前面显示的实例
  • C语言实现堆排序的简单实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 用正则实现提取代码内容的代码
  • 通过javascript库JQuery实现页面跳转功能代码
  • 请问高手:Ctrl+Alt+F1~F8可以切换虚拟终端,这个代码是在哪儿实现的?我搞不懂,最好指点源代码大概位置。
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • servlet中怎么实现java代码和html代码的分离????
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 如何用代码手工实现激活事件发生
  • php实现socket实现客户端和服务端数据通信源代码
  • python 实现文件的递归拷贝实现代码
  • C#/.NET字符串加密和解密实现(AES和RSA代码举例)
  • 代码实现Radius服务模拟的问题,熟悉Radius服务的大虾请进!
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • JQuery实现元素屏幕居中显示的代码
  • Session id实现通过Cookie来传输方法及代码参考
  • css创意ul+li实现的细线表格实现代码
  • JavaScript实现页面跳转的几种方法(参考代码)
  • winform下实现win7 Aero磨砂效果实现代码
  • java实现判断字符串是否全是数字的四种方法代码举例
  • Qt实现的C++框架 qtioccontainer iis7站长之家
  • windows下c/c++读写锁实现原理及代码参考
  • 如何实现代码的提示
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • interface 到底有什么用???实现接口,怎么实现??
  • flash AS3反射实现(describeType和getDefinitionByName)
  • 怎么用Jsp实现在页面实现树型结构?
  • boost unordered_map和std::list相结合的实现LRU算法
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3