18/08/2019 - 04:27 pm
int GetObscuredIntValue(uint64_t location){ 

    int cryptoKey = *(int *)location;
    int obfuscatedValue = *(int *)(location + 0x4);
    return obfuscatedValue ^ cryptoKey;
1. line: "int GetObscuredIntValue(uint64_t location){" Definition of the function GetObscuredIntValue, taking the offset(uint64_t location) as parametre to know where it's at.
uint64_t = unsigned 64 bit integer and _t is a type naming convention, so no big meaning. 

2. line: "int cryptoKey = *(int *)location;" cryptoKey is an encryption key used by the anticheat toolkit from unity to encrypt/decrypt variables. Now casting the "location" pointer to an int probably gets that key and decodes the obscurebools with it.

3. line: "int obfuscatedValue = *(int *)(location + 0x4);" When we remember instance variables, the first parametre passed into a function is the this pointer pointing to the object(important) of the member function call. So now we use the value of the this pointer and add the location of the obscuredbool to it. example: the obscurebool is at 0x4, so he adds 0x4 to the this pointer as in here.

4. line: "return obfuscatedValue ^ cryptoKey;
}" return value and end of function, ok so to get what that does we need to know what ^ is, it's a bitwise operator taking two numbers as parametre and performing a XOR(one of the is different or not), and returns 1 if the bits are different, which they will always be Lol, they cant have same bits because you've added something to "ObfuscatedValue".