IDA这款软件相信大家都已经十分熟悉了,现在的版本应该是5.5,我在这里把这个软件给破解了。IDA无论是在软件破解还是在软件分析中都有着十分重要的作用,尤其当你对IDA的使用了如指掌的时候,你就会发现,IDA几乎可以做任何事情。本篇文章就通过使用IDA破解一个小的crackme来展示一下IDA的魅力。
这个crackme的破解十分简单,你几乎可采用OD瞬间将其爆破,我们来看一下在IDA的平台下可以怎样来做。由于目标软件是没有加壳的,所以这里就直接用IDA载入了。这里IDA已经为我们分析出了程序的入口点,从给出的入口点代码可以看出,这个程序是采用VC写的。程序运行之后要求输入序列号,我们在任意输入序列号之后出现了错误提示。既然有错误提示:我想大家已经考虑到应该采用什么方式进行破解了,一般来说采用的是字符串查找法,这个crackme我相信大家之前也有看到过,因为我在之前的危险漫步博客中也说到过。
我们点击菜单栏的“EDIT”,选择代码模式,此时IDA将会把我们带到这个crackme的代码位置,我们从代码的位置来分析这个程序。顺着代码的方向向下查看我们会找到一些关键的提示。
在这里我们可以看到有正确的提示以及错误的提示,更好的一点就是IDA给出了这些提示的是在哪里被调用的,DATA XREF就是交叉调用的指示。其中Incorrect try again!!这个错误提示的调用位置就是401512+A2,我们顺着向前寻找这个代码位置。当然也可以采用更加直接的方式,在XREF上点击右键,选择跳转,如图5所示。此时就会弹出窗口,我们点击确定即可来到调用这些代码的位置。
来到调用错误提示的位置,在代码的右边我们可以看到跳转过来的指向箭头,这个箭头的来源就是判断输入错误的地方。我们顺着箭头向上回溯,可以发现跳转的来源就在前面不远的地方。
这几句代码就是这个crackme的关键所在了,通过IDA的提示我们可以看出,程序将两个字符串压入了堆栈,然后用一个call,就是lstrcmnA对这两个字符串进行对比,然后通过test eax,eax检测对比的结果,如果结果不同则执行jnz short loc_4015AD这个跳转,从而弹出错误的提示。既然找到了关键所在,下面我们要做的就是修改这个跳转了。
我们下面就要在IDA中修改代码。选中要修改的代码jnz,然后点击“Hex View”。此时将会来到HEX模式下,同时会出现我们选中的代码所对应的HEX值。我们在75这个数值,就是jnz的16进制模式,在这里点击右键选择“EDIT”,此时75所在的位置就可编写了。
我们将5修改为4,就是对应的jnz修改为jz,然后点击右键选择确认。这样我们就将代码修改完了。此时返回到反汇编模式我们可以看到原来的代码已经能够推算出需要用到的代码了,如果推算不出来可以联系我哟。
说明我们修改了成功,然后点击保存即可实现更改,这样我们的破解工作就完成了。
使用IDA破解软件虽然有时不如OD更为直观,但IDAX程序的分析却是0D所不能及的,尤其是在模块间的调用以及模块交叉。IDA还有这交叉参考视图的功能,这更为我们快速的分析程序提供了更为强大的支持。很好的掌握OD以及IDA的使用,不仅在软件破解中能够起到事倍功半的效果,在其他的软件逆向分析以及漏洞挖掘中更会起到意想不到的作用。
本文内容所提及均为本地测试或经过目标授权同意,旨在提供教育和研究信息,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,作者不鼓励或支持任何形式的非法破解行为。