-
-
[原创]Easy_CrackMe小练习
-
2017-4-11 17:40
5730
-
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)。
(P.S.---逆向新手,初次发帖,如有错误之处敬请指出~)
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课