IOPCC

A 1st IOPCC Winner

Author:

Judges' Comments

Tallest house of cards.

It's VMs all the way down. Main point of interest is the byte-code conversion from Python to the bespoke VM provided here.

Author's Comments

The original source code is in original.py, and processed using a custom obfuscator I wrote in late 2022. The way obfuscation works is that it turns the code into virtual machine bytecode and ships the VM itself in the output file, so it operates on the source code level, but doesn't include any parts of the original source in the output. That output is step1.py. I have decided to keep original variable names, it's already obfuscated enough to hide the control flow. I went a step further and obfuscated step1.py into step2.py. I've also included obfuscated version of it (it's minified using python-minifier library, and some fake functions are included) in step2obf.py (they are essentially the same files). The original code isn't anything special, it just proves the functionality of double virtualization. The third virtual machine is the Python VM itself, that's why I called it "ThreefoldVM"

Python version: 3.9, 3.10, 3.11 OS: (tested on Windows, should work everywhere)