Decompetition v2.0

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 may be helpful, but isn't required. If you don't have any reversing software locally, 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, prizes will be combined and split evenly. All prizes are in USD:

Environment

All challenges were built for x86-64 and run on Ubuntu 20.04. The builder container is named decompetition/builder-2021 and is available on DockerHub. 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?