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