Rev 349 | Rev 351 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 349 | Rev 350 | ||
---|---|---|---|
Line 120... | Line 120... | ||
120 | i++; |
120 | i++; |
121 | } |
121 | } |
122 | return ~crc; |
122 | return ~crc; |
123 | } |
123 | } |
124 | 124 | ||
125 | - | ||
126 | static const uint64_t crc64_tab[256] = { |
125 | static const uint64_t crc64_tab[256] = { |
127 | 0x0000000000000000ULL, 0x42F0E1EBA9EA3693ULL, 0x85E1C3D753D46D26ULL, |
126 | 0x0000000000000000ULL, 0x42F0E1EBA9EA3693ULL, 0x85E1C3D753D46D26ULL, |
128 | 0xC711223CFA3E5BB5ULL, 0x493366450E42ECDFULL, 0x0BC387AEA7A8DA4CULL, |
127 | 0xC711223CFA3E5BB5ULL, 0x493366450E42ECDFULL, 0x0BC387AEA7A8DA4CULL, |
129 | 0xCCD2A5925D9681F9ULL, 0x8E224479F47CB76AULL, 0x9266CC8A1C85D9BEULL, |
128 | 0xCCD2A5925D9681F9ULL, 0x8E224479F47CB76AULL, 0x9266CC8A1C85D9BEULL, |
130 | 0xD0962D61B56FEF2DULL, 0x17870F5D4F51B498ULL, 0x5577EEB6E6BB820BULL, |
129 | 0xD0962D61B56FEF2DULL, 0x17870F5D4F51B498ULL, 0x5577EEB6E6BB820BULL, |
Line 230... | Line 229... | ||
230 | uint64_t obfusc(PARM_T* pparm) { |
229 | uint64_t obfusc(PARM_T* pparm) { |
231 | // Version 6 obfuscation (Introduced in Filter Foundry 1.7.0.10) |
230 | // Version 6 obfuscation (Introduced in Filter Foundry 1.7.0.10) |
232 | 231 | ||
233 | unsigned char* p; |
232 | unsigned char* p; |
234 | uint64_t initial_seed, rolseed; |
233 | uint64_t initial_seed, rolseed; |
235 | uint32_t seed1; |
234 | uint32_t xorseed; |
236 | 235 | ||
237 | pparm->unknown1 = 0; |
236 | pparm->unknown1 = 0; |
238 | pparm->unknown2 = 0; |
237 | pparm->unknown2 = 0; |
239 | pparm->unknown3 = 0; |
238 | pparm->unknown3 = 0; |
240 | 239 | ||
Line 243... | Line 242... | ||
243 | // so we will use the default initial_seed! |
242 | // so we will use the default initial_seed! |
244 | initial_seed = cObfuscSeed; |
243 | initial_seed = cObfuscSeed; |
245 | #else |
244 | #else |
246 | // Give always the same seed if the parameters are the same. No random values. |
245 | // Give always the same seed if the parameters are the same. No random values. |
247 | // This initial seed will be returned and built into the executable code by make_win.c |
246 | // This initial seed will be returned and built into the executable code by make_win.c |
248 | initial_seed = crc64((char*)pparm, sizeof(PARM_T)); |
247 | initial_seed = crc64((unsigned char*)pparm, sizeof(PARM_T)); |
249 | #endif |
248 | #endif |
250 | 249 | ||
251 | // AFTER unknown1-3 have been set to 0, calculate the checksum! |
250 | // AFTER unknown1-3 have been set to 0, calculate the checksum! |
252 | pparm->unknown1 = crc32b((char*)pparm, sizeof(PARM_T)); |
251 | pparm->unknown1 = crc32b((char*)pparm, sizeof(PARM_T)); |
253 | 252 | ||
254 | seed1 = initial_seed & 0xFFFFFFFF; |
253 | xorseed = initial_seed & 0xFFFFFFFF; |
255 | p = (unsigned char*)pparm; |
254 | p = (unsigned char*)pparm; |
256 | xorshift(&p, &seed1, sizeof(PARM_T)); |
255 | xorshift(&p, &xorseed, sizeof(PARM_T)); |
257 | 256 | ||
258 | rolseed = initial_seed; |
257 | rolseed = initial_seed; |
259 | p = (unsigned char*)pparm; |
258 | p = (unsigned char*)pparm; |
260 | rolshift(&p, &rolseed, sizeof(PARM_T)); |
259 | rolshift(&p, &rolseed, sizeof(PARM_T)); |
261 | 260 | ||
Line 379... | Line 378... | ||
379 | // Not compiler dependent, but individual for each build |
378 | // Not compiler dependent, but individual for each build |
380 | // It is important that this code works for both x86 and x64 indepdently from the used compiler, |
379 | // It is important that this code works for both x86 and x64 indepdently from the used compiler, |
381 | // otherwise, the cross-make x86/x64 won't work! |
380 | // otherwise, the cross-make x86/x64 won't work! |
382 | 381 | ||
383 | unsigned char* p; |
382 | unsigned char* p; |
384 | uint32_t seed1, checksum; |
383 | uint32_t xorseed, checksum; |
385 | uint64_t initial_seed, rolseed; |
384 | uint64_t initial_seed, rolseed; |
386 | 385 | ||
387 | initial_seed = cObfuscSeed; // this value will be manipulated during the building of each individual filter (see make_win.c) |
386 | initial_seed = cObfuscSeed; // this value will be manipulated during the building of each individual filter (see make_win.c) |
388 | 387 | ||
389 | rolseed = initial_seed; |
388 | rolseed = initial_seed; |
390 | p = (unsigned char*)pparm; |
389 | p = (unsigned char*)pparm; |
391 | rolshift(&p, &rolseed, sizeof(PARM_T)); |
390 | rolshift(&p, &rolseed, sizeof(PARM_T)); |
392 | 391 | ||
393 | seed1 = initial_seed & 0xFFFFFFFF; |
392 | xorseed = initial_seed & 0xFFFFFFFF; |
394 | p = (unsigned char*)pparm; |
393 | p = (unsigned char*)pparm; |
395 | xorshift(&p, &seed1, sizeof(PARM_T)); |
394 | xorshift(&p, &xorseed, sizeof(PARM_T)); |
396 | 395 | ||
397 | checksum = pparm->unknown1; |
396 | checksum = pparm->unknown1; |
398 | 397 | ||
399 | pparm->unknown1 = 0; |
398 | pparm->unknown1 = 0; |
400 | pparm->unknown2 = 0; |
399 | pparm->unknown2 = 0; |