Decompetition

Congratulations to ppp for taking first place!

Calling all reverse engineers! Test your reversing skills against the systems languages of the twenty-first century: C, C++, Go, Rust, and Swift. Given only a binary, can you recreate the original source code?

Sign Up!

Your candidate source code will be compiled, and the resulting binary will be tested and disassembled. The majority of your score will come from the intersection over union of your disassembly versus the target disassembly. How close can you get to a perfect reconstruction?

The Details

Playing

Anyone with an internet connection and a web browser can play. Access to a reverse engineering program is recommended but not required. If you don't have any reversing software installed, check out Binary Ninja Cloud.

This is a team competition. There's no team size limit.

Scoring

Your candidate source code will be compiled, and the resulting binary will be tested and disassembled. Your score on any challenge is made up of:

The test case points and the binary diff points can be partial—you'll get more and more points as you improve your source code—but the final 20% bonus for a perfect match is all-or-nothing.

Prizes

The top three teams will win themselves some Amazon gift cards. In the case of a tie, the team that achieved the high score first wins. All prizes are in USD:

Additionally, Vector 35 is donating Binary Ninja licenses—personal edition, one license per team—for the first and second place teams!

Environment

All challenges were built for x86-64 and run on Ubuntu 20.04. Compilers are:

Disclaimer

Decompetition is part of a research project on the process of reverse engineering. Our research is mainly exploratory:

We'll record your source code submissions so we can follow the reversing process. So don't upload any private information in your source. Not that you were going to do that, right?