代码分析
int __stdcall start(int a1, int a2, int a3, int a4) { int v4; // eax CHAR Text[128]; // [esp+0h] [ebp-84h] int v7; // [esp+80h] [ebp-4h] v4 = sub_401160(Text, &unk_402008, 28); v7 = v4; Text[v4] = 0; MessageBoxA(0, Text, Caption, 0); return 0; }
unk_402008这个变量打开之后,发现长度不止28,实际为0xAF,结合弹窗I never broke the encoding,就应该把这里操作字符数改为0xAF就行,
我们需要将0x1c压入栈中,在栈中修改(因为修改代码会导致后面的代码偏移改变)
get flag!
flag{I_a_M_t_h_e_e_n_C_o_D_i_n_g@flare-on.com}