下面是实现软件自身CRC校检的C语言代码,它的原理是事先在软件的文件头位置写入CRC的校检值,然后每次启动软件后重新计算自身的CRC值,与刚才预存的值进行对比,如果发现不等就退出,从而起到防止软件代码被修改的功能,有没有谁可以把它翻译成VB代码?BOOL IsFileModified()
{
DWORD fileSize,OriginalCRC32,NumberOfBytesRW
BYTE*pMZheader,pPEheaderRVA;
TCHAR *pBuffer,szFileName[MAX PATH];
GetModuleFileName(NULL,saFileName, MAX PATH); ∥获得文件名,当前路径HANDLE hFile=CreatrFile( ∥打开文件
szFileName, ∥文件名字串指针
GENERIC READ, ∥只读方式
FILE_SHARE_READ , ∥共享方式
NULL, ∥安全结构
OPEN EXISTING, ∥打开已存在文件
FILE ATTRIBUTE NORMAL, ∥文件属性
NULL); ∥无模板
if(hFile ==INVALID_HANDLE_VALUE)return FALSE;
fileSize =GerFileSize(hFile,NULL); ∥获得文件长度
if(fileSize ==0xFFFFFFFF)return FALSE;
pBuffer=new TCHAR[fileSize]; ∥申请内存
ReadFile(hFile,pBuffer,fileSize,&NumberOfBytesRW,NULL); ∥关闭文件
CloseHandle(hFile);pMZheader= (BYTE*)pBuffer; ∥此时pMZheader指向文件头
pPEHeaderRVA=*( pMZheader+0x3c); ∥读3ch处的PE文件头指针
OriginalCRC32=(DWORD*)(pMZheader+ pPEheaderRVA_4); ∥定位到PE文件头(字符串“PE00”处)前4个字节处,并读取储存在这里的CRC32值
fileSize=fileSIze-DWORD(pPEheaderRVA); ∥将PE文件头前面那部分数据长度去除
pMZheader=pMZHeader+pPEHeaderRVA; ∥将pMZheader指向PE文件
if(CRC32(pMZheader,fileSize)==OriginalCRC32) ∥比较CRC32值
return TRUE;
else
return FALSE;
}CRC代码省略…..
有没有谁可以把它翻译成VB代码?
{
DWORD fileSize,OriginalCRC32,NumberOfBytesRW
BYTE*pMZheader,pPEheaderRVA;
TCHAR *pBuffer,szFileName[MAX PATH];
GetModuleFileName(NULL,saFileName, MAX PATH); ∥获得文件名,当前路径HANDLE hFile=CreatrFile( ∥打开文件
szFileName, ∥文件名字串指针
GENERIC READ, ∥只读方式
FILE_SHARE_READ , ∥共享方式
NULL, ∥安全结构
OPEN EXISTING, ∥打开已存在文件
FILE ATTRIBUTE NORMAL, ∥文件属性
NULL); ∥无模板
if(hFile ==INVALID_HANDLE_VALUE)return FALSE;
fileSize =GerFileSize(hFile,NULL); ∥获得文件长度
if(fileSize ==0xFFFFFFFF)return FALSE;
pBuffer=new TCHAR[fileSize]; ∥申请内存
ReadFile(hFile,pBuffer,fileSize,&NumberOfBytesRW,NULL); ∥关闭文件
CloseHandle(hFile);pMZheader= (BYTE*)pBuffer; ∥此时pMZheader指向文件头
pPEHeaderRVA=*( pMZheader+0x3c); ∥读3ch处的PE文件头指针
OriginalCRC32=(DWORD*)(pMZheader+ pPEheaderRVA_4); ∥定位到PE文件头(字符串“PE00”处)前4个字节处,并读取储存在这里的CRC32值
fileSize=fileSIze-DWORD(pPEheaderRVA); ∥将PE文件头前面那部分数据长度去除
pMZheader=pMZHeader+pPEHeaderRVA; ∥将pMZheader指向PE文件
if(CRC32(pMZheader,fileSize)==OriginalCRC32) ∥比较CRC32值
return TRUE;
else
return FALSE;
}CRC代码省略…..
有没有谁可以把它翻译成VB代码?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货