首页
社区
课程
招聘
[原创]Easy_CrackMe小练习
2017-4-11 17:40 5730

[原创]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直播授课

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 6085
活跃值: (3307)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MaYil 2017-4-11 19:30
2
0
感谢分享
雪    币: 4450
活跃值: (3497)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
木志本柯 2017-5-5 16:46
3
0
不要删等我学会用IDA
雪    币: 7
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
洛燕 2017-5-6 11:13
4
0
木志本柯 不要删等我学会用IDA[em_13]
不急不急,慢慢交流(新手一枚~)
雪    币: 1299
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
默小白 2017-5-11 15:37
5
0
有一些图片显示不出来。。。
游客
登录 | 注册 方可回帖
返回