一道熟悉od使用的经典题

拿到程序放入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 }

猜你喜欢

转载自blog.csdn.net/weixin_46148324/article/details/108582832