DWORD L2FileCheck(char *file)
`Qk
R
{
`Qk
R
DWORD Check=0xFFFFFFFF;
`Qk
R
HANDLE hFile;
`Qk
R
DWORD dwFileSize;
`Qk
R
DWORD dwNumberOfBytesReadWritten;
`Qk
R
HANDLE hMemory;
`Qk
R
LPVOID pMemory;
`Qk
R
char filename[MAX_PATH];
`Qk
R
BYTE *temp;
`Qk
R
BYTE temp1,temp2;
`Qk
R
int Max=0,Min=0;
`Qk
R
temp =(unsigned char *)malloc(0x1000);
`Qk
R
hFile=CreateFile(file, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, 0);
`Qk
R
if(hFile != INVALID_HANDLE_value)
`Qk
R
{
`Qk
R
dwFileSize=GetFileSize(hFile, NULL);
`Qk
R
hMemory=GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwFileSize);
`Qk
R
pMemory=GlobalLock(hMemory);
`Qk
R
Max = (dwFileSize-0x14)/0x1000;
`Qk
R
Min = (dwFileSize-0x14)%0x1000;
`Qk
R
for(int j=0;j<Max;j++)
`Qk
R
{
`Qk
R
ReadFile(hFile,pMemory,0x1000,&dwNumberOfBytesReadWritten,NULL);
`Qk
R
memcpy(temp,pMemory,0x1000);
`Qk
R
for(int k=0;k<0x1000;k++)
`Qk
R
{
`Qk
R
temp1=*(BYTE *)(temp+k);
`Qk
R
temp2=(Check&0x000000FF) ^ temp1;
`Qk
R
Check=(Check >> 8) ^ FileCheck[temp2];
`Qk
R
}
`Qk
R
}
`Qk
R
ReadFile(hFile,pMemory,Min,&dwNumberOfBytesReadWritten,NULL);
`Qk
R
memcpy(temp,pMemory,0x1000);
`Qk
R
for(j=0;j<Min;j++)
`Qk
R
{
`Qk
R
BYTE temp1,temp2;
`Qk
R
temp1=*(BYTE *)(temp+j);
`Qk
R
temp2=(Check&0x000000FF) ^ temp1;
`Qk
R
Check=(Check >> 8) ^ FileCheck[temp2];
`Qk
R
}
`Qk
R
_asm {
`Qk
R
push ecx
`Qk
R
mov ecx,Check
`Qk
R
not ecx
`Qk
R
mov Check,ecx
`Qk
R
pop ecx
`Qk
R
}
`Qk
R
CloseHandle(hFile);
`Qk
R
GlobalUnlock(pMemory);
`Qk
R
GlobalFree(hMemory);
`Qk
R
free(temp);
`Qk
R
return Check;
`Qk
R
}
`Qk
R
else
`Qk
R
{
`Qk
R
return 0;
`Qk
R
}
`Qk
R
}
'",
5Bu#C