1.先查壳,发现无壳,拖入ida32
直接shift+f12,找到一个类似于flag的字符串
双击跟进aBjdDD2069a4579,选中ctrl+x,f5反汇编
分析这个函数,发现里面是多层嵌套的 if 判断语句,其中 sprintf(String, Format, ++dword_4099F0);会输出 “您已经点了 %d 次”,多少次就是 dword_4099F0 的值,然后到 19999 时候,会执行 sprintf(String, " BJD{%d%d2069a45792d233ac}", 19999, 0);
结合运行这个程序,可以直接猜到这个是要点击到 19999 次时候,输出 flag,两个 %d 的值分别是 19999 和 0最后得出flag
刮开有奖
1.先查壳,发现为32位
shift+f12查看字符串 ,发现base64加密的字符串
进入main函数,f5查看伪代码
进入DialogFunc函数
分析代码String是我们输入的flag,并且flag的长度为8
之后对v7-v17做某种处理
双击进入sub_4010F0函数查看
返回main函 数双击进入sub_401000函数
分析,双击跟进byte_407830
发现base64加密
返回main函数继续分析
flag的第一位要等于v7的首位+34,为u
v19==v11-->flag的第二位为j
v4和v5都是经过base64编码后的字符串,所以我们分析对ak1w和v1ax进行解码即可,分别为jmp和wp1连接