Tags: radare2 entrypoints angr
The main is a lie. The actual pass/fail branching occurs in a function called from atexit. ANSI codes are used to clear the fail message and replace it with the success one.
The user input is encrypted from the main function, and checked against a reference. The xor/substitute tables are modified from extra entry points, and will be wrong if you’re running with a non-interactive stdout.
More details here: http://code.alaiwan.org/blog/writeup-thepoint.html