3 ms·
It's called an Obfuscation Virtual Machine running custom opcodes. These opcodes were decoded in a special way and a single x86 instruction like mov imm, reg
by farmdve 3y ago
It's called an Obfuscation Virtual Machine running custom opcodes. These opcodes were decoded in a special way and a single x86 instruction like
mov imm, reg
would get translated in 20-30 instructions most of them junk, but they were not laid out contiguously, you would execute one junk instruction and then return to the dispatcher to get to the next one, if I remember correctly. This made the VM and tracing dog slow.
Additionally it used a small 256 or 1024 byte scratch buffer for the virtual registers that held data. I've forgotten now how it was exactly.
The entire VM used only jmp instructions which was how you would spot it.
- markus_zhang 3y agoThanks. I got the idea. Looks like they really wanted to slow you guys down :D I wonder if modern AI could solve that for you. "Oh look, that huge block essentially just set some variable to 127".