zl程序教程

您现在的位置是:首页 >  其它

当前栏目

随想录(OllyDbg和IDA Pro的配合使用)

Pro 配合 随想录 IDA 使用
2023-09-27 14:27:11 时间

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱: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抽象逻辑分析能力很厉害,所以一般两者是相互补充的,不存在一个完全代替另外一个的情况。现实场景中两者也是交叉使用的。

 

PS:

对于具体的算法而言,逆向出算法和变量并不难,但是如果想知道每个函数的物理意义,还需要对应专业同学的帮忙。