【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
在软件处理中,OllyDbg和IDA Pro一般是配合使用的。前者主要用于动态的程序调试,后者主要用于静态的代码分析。那么,如果遇到实际程序,该怎么处理呢?逻辑一般是这样的,
1、首先用OllyDbg验证此程序是否能够运行
分析程序的前提一般是判断程序是否可以运行起来。如果程序本身就是错的,那么就没有分析的必要了。当然为了防止木马、病毒,运行一般是在虚拟机里面进行的,这样不会对OS代码什么风险。
2、利用IDA Pro寻找可能的关键路径
对于比较简单的程序,关键路径是比较好找的,往往是从头执行到尾。就算是复杂的程序,关键路径往往就那么几个,依次处理就可以了。这个时候通过字符串变量查找就是不错的一个方法。
3、利用OllyDbg + F12暂停键获取关键路径
代码执行路径很多,但是往往关键的就1条,这个时候用OD暂停来分析,是最好的一个方法。
4、查看堆栈,获取函数调用路径和变量信息
回溯整个堆栈内容,根据ip地址依次查看函数的调用关系,并且将堆栈内容和软件功能参数进行联系。
5、获取关键函数反汇编代码
此时,如果已经获取关键函数,那么就可以利用IDA Pro的F5反汇编功能,获取对应的C函数。
6、将C函数和具体的物理意义联系起来
IDA Pro逆向生成的函数只是逻辑层面的东西,具体的物理意义还需要查看前后的调用逻辑。
7、验证优化、修改后的C函数是否正确
很多时候IDA优化后的函数冗余代码太多,需要删除、合并。为了验证代码的正确性,使用OllyDbg不停地进行数据验证。
8、直接修改OllyDbg代码,查看修改效果
OllyDbg的一个优势就是可以立即修改内存、保存到文件、重新加载,这对于提升逆向者的信心是很重要的。
9、继续使用IDA分析,对函数、变量添加注释、说明
等到所有关键路径上面的代码都已经被理解和注释了,并且用OllyDbg证明是正确的,这个时候才说明逆向成功。OllyDbg实时修改的能力很强,但是IDA Pro抽象逻辑分析能力很厉害,所以一般两者是相互补充的,不存在一个完全代替另外一个的情况。现实场景中两者也是交叉使用的。
来源:oschina
链接:https://my.oschina.net/u/4265788/blog/3223031