代碼分析
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}