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