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