Jaakko
Jaakko
Platform: CUSTOM | Category: Reversing | Type: Challenge | Difficulty: Easy | OS: N/A | **Author: XESXOR Techniques: byte_by_byte_comparison, static_analysis, string_reconstruction
Summary
Walkthrough of the CUSTOM Reversing Jaakko. Task: a PE32 crackme asks for a valid serial and contains an interesting embedded string in .rdata. Solution: reverse the validation routine, observe how it swaps two halves around an inserted undersc
Description
Download binary: jaakko.exe
We are given a Windows crackme. The goal is to recover the valid serial accepted by the program.
Analysis
Initial recon was enough to narrow the problem quickly:
fileidentifies the target as a PE32 Windows console executable.- Strings reveal the prompt
Input valid serial key: >and success/failure messages. - The same string dump also exposes
simple_answer, which is a strong hint that the serial is derived from embedded constant data rather than from any cryptography.
Static analysis of the check routine at 0x401080 confirms that idea. The program does not compare input against simple_answer directly. Instead, it rebuilds a new buffer on the stack from pieces of that string.
Solution
The validation logic is straightforward once the routine is decompiled:
- Copy
answerfrom offset+7insidesimple_answer. - Insert
_after it. - Copy
simplefrom the start ofsimple_answer. - Compare the reconstructed result against user input byte by byte.
So the expected serial is:
answer + _ + simple = REDACTED
A minimal reproduction script is:
python read-only • copy allowed#!/usr/bin/env python3 s = "simple_answer" serial = s[7:13] + "_" + s[:6] print(serial)
Key Takeaways / Lessons
- Mastering byte_by_byte_comparison, static_analysis, string_reconstruction was key to this challenge.
- Always check for common misconfigurations and verify assumptions.
Crafted by XESXOR Research • 2026-03-31 • CUSTOM • Jaakko • Difficulty: Easy