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