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