I know that obfuscation on the native binary level can be a bit overwhelming and confusing so I welcome you all to have a look at one of my de-obfuscations tools/research designed for 2 common obfuscation schemes I found in the wild!
Welcome to capitalism. I am a big fan of open-source but unfortunately, people are ripping off code from others in an attempt to monetize it. This is why obfuscation has become so important as it keeps those toxic people away for a bit.
The source you gave me refers to these A, B, C as 'registers'. Yes, you are correct that they are encoded inside the Lua instruction and can not be accessed globally.
Will make it more obvious that these registers are part of the instruction itself as it may confuse people that are familiar with more traditional VMs.
No, A, B and C are called "instruction field", not "register". The registers are referenced in the text like e.g. "R(A)" meaning "the register signified by instruction field A". E.g. the instruction "MOVE A B" is described as "R(A) := R(B)". Each register carries a Lua value. The registers are not part of the instructions, but part of the activation record, which is allocated when Lua enters a function.
How do you feel about all this? Do you think Blizzard overreacted or do you think they might have some justification to their quibbles with your anti-cheat tool?
I know that obfuscation on the native binary level can be a bit overwhelming and confusing so I welcome you all to have a look at one of my de-obfuscations tools/research designed for 2 common obfuscation schemes I found in the wild!