Solution:
1. Use IDA to disassemble the binary
Similar process as before, find the DialogFunc and analyze the disassembled assembly code or C pseudocode.

2. Getting in depth into assembly instruction
.text:004013AE add eax, 45370DF7h
.text:004013B3 add esp, 0Ch
.text:004013B6 xor eax, 0AAFBBCBEh
.text:004013BB add eax, 0D1507BAh
.text:004013C0 rol ecx, 5
.text:004013C3 xor eax, 0BA14C823h
.text:004013C8 cmp eax, 45BEB206h
.text:004013CD jnz short loc_4013F3
Here the assembly code perform a series of operations:
- Add
0x45370DF7 - XOR
0x0AAFBBCBE - Add
0x0D1507BA - Xor
OxBA14C823 - Finally it compares the value with
0x45BEB206, if matches then print out correct
3.Reverse the operation
Here is the C implementation code to reverse the operation
#include <stdio.h>
int main() {
int sum = 0x45BEB206;
sum ^= 0x0BA14C823;
sum -= 0x0D1507BA;
sum ^= 0x0AAFBBCBE;
sum -= 0x45370DF7;
printf("%x",sum);
return 0;
}
After running the code, it will return 1337c0de. This is the correct input string.
Flag: 1337c0de
