Subversion Repositories filter_foundry

Rev

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;