您的位置:首页 > 其它

Easy_CrackMe练习

2017-04-11 00:00 197 查看
Reversing.Kr上的第一个题目---Easy_CrackMe

1.先打开程序看看:



一个标准的输入框和一个按钮,试着输入‘123456’然后点击按钮,看看有什么反应......



果然,它easily弹出一个错误框,显示‘Incorrect Password’。看到此处我试着把它放进IDA。

2.IDA分析:



通过View->String我看到了弹窗显示的字符串,直接双击跟到代码窗口,



此处可以看到‘Incorrect Password’与‘Congratulation!!’均被引用,Ctrl+x跟踪上去。



跟踪到弹出错误消息框处,发现有4处可到达弹出错误消息框,此处跟踪上去看太劳神,返回看看成功消息框的调用,



发现只有一处能调用弹出成功消息框。此时可以大胆猜测一下,程序的关键逻辑是判断输入的Password是否满足条件,不满足则直接跳转到弹出错误消息框,满足则顺下继续判断...最后所有的条件都满足了则直接弹出成功消息框。

3.尝试OD动态调试:

大致清楚程序逻辑后,将它放入OD动态调试。首先Ctrl+G转到401135(IDA中可知)下断点,然后F9运行,输入‘123456’并按下按钮,断点起效。


跟踪左侧红线直达调用处


看到jnz跳转指令之上还有GetDlgItemTextA用于获取我们输入的‘123456’。说明从GetDlgItemTextA之后就是对我们的输入内容进行对比(与正确的Password),经过分析得到下图......





4.总结:

由此,我们得到Password为‘Ea5yR3versing’,程序首先判断第二个字符是否是‘a’(0x61),其次在判断二三字符是否为‘5y’,接下来循环判断后面的字符是否为‘R3versing’,最后判断第一个字符是否为‘E’(0x45)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息