Uttar
Uttar
Platform: CUSTOM | Category: Reversing | Type: Challenge | Difficulty: Easy | OS: N/A | **Author: XESXOR Techniques: input_transformation_reversal, static_analysis, string_extraction
Summary
Walkthrough of the CUSTOM Reversing Uttar. Task: a PE32 Windows console binary asks for a valid serial key and contains a hardcoded reference string. Solution: inspect the check routine, notice the XOR-swap of the 3rd and 4th input characters
Description
Download binary: uttar.exe
We are given a Windows PE32 console executable that asks for a serial key. The goal is to recover the exact input accepted by the validation routine.
Analysis
Initial triage shows that uttar.exe is a PE32 Windows console executable. Running strings immediately reveals two important strings:
really_trickyInput valid serial key: >
That strongly suggests a straightforward serial-check crackme with an embedded target string.
The main validation routine is located at 0x401080. In that function, the program:
- Copies the constant string
really_trickyinto a local buffer. - Reads user input.
- Swaps the 3rd and 4th characters of the input buffer using an XOR-swap sequence.
- Compares the transformed input against
really_tricky.
So the binary does not expect really_tricky directly. It expects an input that becomes really_tricky after swapping characters 3 and 4.
Starting from:
text read-only • copy allowedreally_tricky
Swap the 3rd and 4th characters (a and l in zero-based positions 2 and 3):
text read-only • copy allowedREDACTED
That reconstructed serial is accepted and triggers the success message.
Solution
The recovery logic is just the inverse of the program transformation: if the checker swaps positions 2 and 3 before comparing to really_tricky, then the valid input is the reference string with those positions already swapped.
Minimal reproduction:
python read-only • copy allowed#!/usr/bin/env python3 target = "really_tricky" buf = list(target) buf[2], buf[3] = buf[3], buf[2] print(''.join(buf))
Output:
text read-only • copy allowedREDACTED
Key Takeaways / Lessons
- Mastering input_transformation_reversal, static_analysis, string_extraction was key to this challenge.
- Always check for common misconfigurations and verify assumptions.
Crafted by XESXOR Research • 2026-03-31 • CUSTOM • Uttar • Difficulty: Easy