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?
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.
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.
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:
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:
gcc 9.3.0
g++ 9.3.0 -std=c++17
go 1.13.8
nim 1.0.6
rustc 1.53.0
swiftc 5.5.2
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?