危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2304 浏览18595022

IDA静态分析爆破crackme

危险漫步最近一直在写代码,闲逛的时候看见一个crackme,就拿下来看一下,哎,就那么几下就搞下来了,写写心得跟大家分享一下吧。

软件运行后,我就不查壳了,这个程序确实没有壳,我就直接用IDA载入了。我们尝试填一下用户名跟验证码,看看有什么提示之类的信息。用户名长度不能少于5。我再次输入,出现了错误提示信息。既然有错误提示信息,那么我们就看看能不能找到这些信息。我们将鼠标移动到IDA的彩色条带位置,这里其实是IDA对我们程序分析的结果,各种的函数以及数据,在这里都可以发现。我们将鼠标移动上去,这时候会出现提示。我们找到.dat数据资源区,在这里我们可以找到程序里面的字符串资源。找到了我们需要的字符串提示信息,下一步就是看看那里使用了这些字符串。我们把鼠标移动到DAl'AⅪF:sub一4014DF+1D4720这样的数据上面,IDA就会给出调用提示。然后我们双击这个位置,就可以来到使用这个字符串信息的代码位置了。很显然这部分代码仅仅是字符串装载,并不是验证检测的代码。

我们在这里点击右键,选择“Jump to a cross reference“,就来到了交叉代码区域。

在这里我们就能很直观的看出代码调用的次序以及跳转的流程了。在这里我们可以看到两个比较关键的区域。左侧的是我们发现的字符串的调用区域,而右侧怎是显示我们字符串的窗口代码,所以这个跳转就是关键。当然这里有一些经验之谈,做的多了自然就会有感觉,就像英语语感一样。我们把这里的代码修改成je试一下。

修改保存后的程序,运行测试,OK了。

IDA里面修改程序不太好用,建议使用其他的编辑工具对程序进行修改。IDA的交叉引用功能相当强大,利用这个功能我们可以看出程序的运行流程以及跳转机制,这样我们就可以方便的在OD或者其他的动态调试工具中进行跟踪了。