← Back to Writeups
CUSTOMEasyReversing

Jaakko

XESXOR9/2/20262 min read
#reversing#custom#easy#byte_by_byte_comparison#static_analysis#string_reconstruction

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:

  • file identifies 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:

  1. Copy answer from offset +7 inside simple_answer.
  2. Insert _ after it.
  3. Copy simple from the start of simple_answer.
  4. Compare the reconstructed result against user input byte by byte.

So the expected serial is: ‍​‌‌​​‌​​​‌‌​​‌​​​​‌‌​‌​​​​‌‌‌​​‌​​‌‌​​​‌​​‌‌‌​​​​​‌‌​‌‌​​​‌‌​​​​‍

answer + _ + simple = REDACTED

A minimal reproduction script is:

python
#!/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