If you’ve read a beginner writeup on reverse engineering in the last decade or so, chances are it used one of the IOLI crackmes. Ten tiny exercises by Pau Oliva Fora (pof) from 2007, each adding a small new twist, none taking more than an evening. I know them from the radare2 book, and they’re still surprisingly good.
The binaries, though, haven’t aged well. They’re 32-bit only: Linux x86, Windows x86, and Windows CE on ARM, which is a fun museum piece by now. There’s no x64 version at all. IOLI64 did port them to x86-64, but it’s archived, Linux-only, and built from approximately reconstructed sources.
So I rebuilt them. The goal was C sources that compile to code as close to the originals as a modern compiler allows: the same compilation flags, the same functions in the same order, the same conditions, and even the dead code the original compiler left in. Then I checked every level against the original Linux and Windows binaries, function by function. The result comes pre-compiled for Linux, Windows, and macOS on x32, x64, and arm64, and there’s a CMakeLists.txt if you want to try other architectures, operating systems, or compilers.
It’s all here: IOLI-crackmes-rebuilt.
Happy hacking!