我向用vc对比两个dll文件是否相同,应该要比对二进制文件吧,具体该如何实现啊,大侠帮忙啊!

解决方案 »

  1.   

    用到的函数?
    MFC的话,直接用CFile类操作
    SDK的话 OpenFile?ReadFile?
    纯C++的话 fstream
    纯C的话 fopen
      

  2.   

    ::BYTE buffer[4096];
    ::BYTE bufferTwo[4096];
    ::DWORD dwRead;
    ::DWORD dwReadTwo;
    ::CFile SourceFile;
    ::CFile DesFile;
    ::CFileException ce;
    ::CString pFileName = _T("game.dll");
    if(!SourceFile.Open(pFileName,CFile::modeRead|CFile::typeBinary|CFile::shareDenyNone,&ce))
    {
    AfxMessageBox(_T("源文件打开失败!"));
    }else
    {
    if(!DesFile.Open(_T("game.dll"),CFile::modeRead|CFile::typeBinary|CFile::shareDenyNone,&ce))
    {
    AfxMessageBox(_T("目标文件打开失败!"));
    }
    }
    do{ dwRead=SourceFile.Read(buffer,4096);
    dwReadTwo = DesFile.Read(bufferTwo,4096);
    if(::memcmp(buffer,buffer,dwRead))
    {
    AfxMessageBox(_T("内存相同"));
    }else
    {
    AfxMessageBox(_T("内存不同"));
    }
    }while(dwRead>0);这是我写的对比两个dll文件的程序,就是相同的两个dll文件也提示内存不同啊!郁闷啊!大侠帮忙看看!
      

  3.   

    不好意思,是我自己搞错了,原来memcmp函数比较内存区域返回0时表示内存区域内容相同,麻烦大家了!现在给分了!