拿到程序放入PE里查看发现有Aspack壳
用脱壳软件进行脱壳处理
打开文件让我们注册,随意输入后如图所示:
发现弹出一个框,这是很重要的线索,打开od下断点分析:
随意输入后到达登录失败弹出窗附近
通过分析附近的汇编可以发现两个值不相等时始终跳转至004012A1
数了一下有十六个,大致估计可能正确格式是输入16个字符,在004012A4 下断点重新启动程序输入16个字符,开始分析:
Pass[0]==B,该字符直接与0x42比较,0x42转换成ASCII再转换成字符为B
Pass[15]==Y 可以看出将字符存到eax寄存器,然后加上0x42等于0x57,计算和转换后的值为Y
Pass[1]==Z 这次将值存放到ecx中,然后用lea命令,意思是将ecx中的值减3存到eax中,用0x57减3转换后为Z,后面大致相同的计算方式,注意排序方式为从ebp-0x240到ebp-0x231为pass[0]到pass[15]
Pass[14]==A
Pass[2]==9
Pass[13]==b
Pass[3]==d
Pass[12]==7
Pass[4]==m
Pass[11]==G
Pass[5]==q
Pass[10]==9
Pass[6]==4
Pass[9]==g
Pass[7]==c
Pass[8]==8
排序后得出所需字符串为 BZ9dmq4c8g9G7bAY
邮箱输入格式为 [email protected]
注册码为: BZ9dmq4c8g9G7bAY
flag{ BZ9dmq4c8g9G7bAY }