Flag 自动机
看了很多大佬的WP。这个题有很多种解法,这里分享一种比较简单而又不是很简单的方法——直接改汇编
其实这样可以比较了解整个程序结构。
>整个主程序MainWindow 函数为 SUB_401510.直接对此函数进行分析操作
>先对主判断函数进行修改
在.text:0040180A处有一个关键比较:
assembly
.text:0040180Acmp[ebp+lParam],1BF52h .text:00401811jz short loc_401840
这里1BF52h就是十进制的114514。当lParam == 114514时,程序会跳转到loc_401840生成 flag。
将条件跳转改为无条件跳转,即用 jmp 代替 jz

>再对乱动的按钮进行修改
从pfnSubclass函数可以看到:
当鼠标移动时(
WM_MOUSEMOVE = 0x200),按钮会随机改变位置直接禁用按钮乱动
修改pfnSubclass函数,让它不处理鼠标移动消息:
定位到:.text:0040195F
直接跳到函数结尾
然后应用程序,直接运行即可


明显可以对上焦并且直接点击,这个方法粗暴简单
得到flag>
flag{Y0u_rea1ly_kn0w_Win32API_89ab91ac0c}