首先安装打开OBUG,可以看见分为4个区,左上角是反编译区,左下角和右下角相同,都是内存地址,但是左下角比右下角更详细,属于更深层次的人使用,右上角是寄存器,对于此次研究,有用的内存地址是栈底的位置EBP。
进去之后,在汇编代码区内找到main函数,并设置断点(F2快捷设置),
找到刚才函数的入口
按f8,运行到fun方法
到如图位置后,点击Debug Run运行,输入aaaaaa后
查看寄存器区并记录EBP值
在内存区域找到EBP地址,在其附近上划,可以找到我们输入aaaaaa以及原始密码
0019FED0是我们输入的4个a下面一行只有一个,还有一个a消失了猜测是因为/0的存在。接下来分析,若要才应该栈溢出,则至少要覆盖到0019FEDC上第一个字符,计算得6个原始+2+4+1=13
0019FED4最后两个字符不管输入什么都对结果无任何影响。
尝试破解
破解成功。
大家有疑惑地方可以评论区留言 ,互相解答探讨。