Subversion Repositories filter_foundry

Compare Revisions

Regard whitespace Rev 317 → Rev 318

/trunk/obfusc.c
86,7 → 86,8
 
uint32_t crc32b(char *data, int nLength) {
int i, j, k;
unsigned int byte, crc, mask;
uint32_t crc, mask;
char byte;
 
i = 0;
crc = 0xFFFFFFFF;
95,7 → 96,7
byte = data[k];
crc = crc ^ byte;
for (j = 7; j >= 0; j--) {
mask = -(crc & 1);
mask = (-1) * (crc & 1);
crc = (crc >> 1) ^ (0xEDB88320 & mask);
}
i++;
119,7 → 120,8
obfusc_version = 4;
#else
// In obfuscation version 5, the seed is also the checksum. It will be verified at deobfusc()!
initial_seed = crc32b((char*)&pparm,sizeof(PARM_T));
pparm->unknown2 = 0; // make sure crc32b matches always
initial_seed = crc32b((char*)pparm,sizeof(PARM_T));
obfusc_version = 5;
#endif
 
239,7 → 241,8
xorshift(&p, &seed, size - seed_position - 4);
 
if (obfusc_version == 5) {
if (crc32b((char*)&pparm,sizeof(PARM_T)) != initial_seed) {
pparm->unknown2 = 0; // make sure crc32b matches always
if (crc32b((char*)pparm,sizeof(PARM_T)) != initial_seed) {
// Integrity check failed!
memset(pparm, 0, sizeof(PARM_T)); // invalidate everything
}