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