Saves are comprised of sections separated by "|" characters. Some sections are compressed to reduce the length of the save code.
The compression takes binary sequences, breaks them into groups of up to 14 bits, and encodes the bits as text characters.
For example, if there were 6 achievements, and you had won the first 3, this would be represented as "111000", which compresses to the letter "x".
The bug happens when binary data encodes to a string containing a "|" character.
When the game tries to load the save, it reads that character as a section separator, and things break from there.
This can happen when the game has 7n + 3 upgrades and/or 14n + 6 achievements or game settings.
In the above example, if you earned the 4th achievement it would encode "111100" to "|".
v2.0042 has 444 upgrades, or 7 * 63 + 3, and is susceptible to the bug.
Cookies Save Fixer reads the save code accounting for the bug. It then adds dummy data to unbreak the save, in effect changing any compressed "|" into "ǰ".
The dummy data doesn't hurt loading the save, since the game ignores any well formed extra data.
If loaded after a version change, it would see the dummy data as a locked and unbought upgrade, 2 unearned achievements, or 2 game settings that are currently off.