原创  2012年09月15日 22:32:37

       对于软件逆向,有称手的工具往往事半功倍,这里简单罗列出一些常用工具,不做详细介绍,供新手一个入门指引。

        静态分析工具首推IDA,有了它其他的反汇编工具基本用不着。

        动态调试工具有OD和windbg。 调试应用层程序两个调试器都可以,OD因为主要面向逆向,窗口布局更为合理直观且插件众多,所以一般情况下都首选OD,windbg没那么方便,大部分操作通过命令来进行,但它也有它的优势,各种命令(内置命令、元命令和扩展命令)提供了强大的控制和分析能力,所以windbg有时也会用到。如果要调试内核程序或模块那OD就无能为力了,windbg可以说是唯一的选择,以前还有个softice,但softice已经停止更新和支持,现在已经没什么了用了。   

        侦壳工具一般用PEid,其他的工具也有,这里就不列出了。PEid功能强大,但很多时候也分析不准,不能过于相信它的结果。主要还是通过自己的分析来判断。

        对于脱壳,网上也有很多对某种壳的自动脱壳工具或者脚本,这里工具本人都不怎么用,不好推荐,对于想深入学习逆向这门手艺的新手我还是建议要多尝试自己手工脱壳,不要沦为被人鄙视的script kids。至于dump程序,我们可以用LordPE或者ollydump,dump好了之后可能还需要导入表修复工具importREC等。这只是比较理想的情况,有些时候还得自己手工去做些分析和修复。

        对于逆向工程师来说,二进制编辑工具和比较工具是少不了的,编辑工具主要选UltraEdit、Hex Workshop以及WinHex,他们各有优缺点,可以根据自己爱好选择。比较工具个人感觉比较好的是Beyond Compare,其他工具没怎么用过,不做推荐。

        提到逆向,很多人都觉得一定得对程序进行白盒分析,其实如果黑盒分析能更快搞定的话就不用那么费劲的去分析程序的汇编代码了。就算是不得不分析代码,在分析之前或者分析之中观察它的输入输出也是很有帮助的,常用的辅助分析工具有以下几个:

        网络包抓包分析工具,这方面用的比较多有Wireshark和Iris,wireshark是微软出的免费工具而Iris是收费软件,功能都很强大。

       文件和注册表监视工具一般用process monitor,以前是用Filemon监视文件,Regmon监视注册表,现在process monitor可以监视两种操作。其实这些工具都是同一个人写的,现在两个工具合并成一个了。说句题外话,这个作者就是写《深入解析windows操作系统》的作者,这本书的权威性对搞windows内核开发的可以说无人不晓,做逆向的话也很有必要好好读读这本书。

        另外就是虚拟机vmware和virtual pc了,装虚拟机有很多好处,对内核调试来说就可以实现在单个物理PC上调试内核,虚拟机崩溃也可以快速回复重启。

         对于内核代码逆向,DDK/WDK里面的工具也可以结合起来用,如查看对象winobj,查看设备栈的dev tree。观察IRP的有IRPtrace。工具比较多,这里不一一列举,毕竟大部分逆向都是应用层逆向。

        罗列到此结束,希望能对阅读这篇文章的人有些帮助。本人认为,工具的使用只是技,软件保护和逆向里面蕴藏的算法理论才是道,只有掌握了道才能走的更远,逆向如此,其他事亦如此。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐