就是把用ReadFile()从.exe中读取出来的一块数据在.exe中查找小弟我已经实现(MFC做的),就是想看看还有没有更好的,效率更高的,有兴趣的朋友来讨论下,小弟将分送上!

解决方案 »

  1.   

    那这样吧 我把实现的代码贴出来 大家给点意见
    char lpFileName[] = "D:\\test.exe";
     
       CFile file;
       if(!file.Open(lpFileName,CFile::modeReadWrite,NULL))
       {
       AfxMessageBox("未打开文件!");
           return FALSE;
       }    CFileStatus FileStatus;    
     if(!file.GetStatus(FileStatus))
     return FALSE;
         file.SeekToBegin();
     
       CString strBuff;
       int nRes=-1,SameNum=0,nReturn;
       
     strBuff.GetBufferSetLength(1024);
     
       for(long i=0;(i+1024-                nStrLen)<(FileStatus.m_size);)
       {
          memset(strBuff.GetBuffer(0),'\0',1024); 
          nReturn= file.Read(strBuff.GetBuffer(0),1024);
       
      nRes=strBuff.Find(m_cCopyData);
     
       if(nRes!=-1)
       {
       SameNum++;
           if(SameNum>=5)//&&m_bCurrent
            //发现
       {
      //m_bCurrent=FALSE;
                                  m_cResult="发现!";
      UpdateData(FALSE); //报警                
          
             file.Close();
             return TRUE;
       
       }
       }
     else 
     
     {         
         //i=(i+1024)-nStrLen;
     if((long)(i+1024-    nStrLen)>=(FileStatus.m_size))
     break;
     
         file.Seek(i+1024-nStrLen,CFile::begin);

            i=i+1024-nStrLen;
         
      }  
       

       }
       file.Close();