摘要:利用Windbg配合IDA過程分析
Windbg是一款强大的调试工具,而IDA Pro则是一款强大的静态分析工具。我个人一直倾向于静态分析,不过很多时候我还是需要动态调试进行一些流程上的帮助。这一般是由于程序调用了虚函数或者是动态调用了一些动态链接库函数或者是仅仅是为了加快程序分析的速度。尤其是在实际的分析过程中,我们经常需要对过程进行详细的跟踪。但是,IDA Pro很难满足这些需求,尤其是对分支结构的执行过程中的各个情况无法加以判断标识。因此,IDA Pro通常只能进行简单的大致分析,无法进行详细的判断。
本文则是提供一种可行的程序流分析方法,通过这种方法,可以让IDA结合实际的程序执行流程,方便我们对程序流进行详细的分析。
例子是XP自带的计算器程序中的DoOperation函数。
0:000> u DoOperation
calc!DoOperation:
01005a7a b816290101 mov eax,offset calc!terminate+0x2e (01012916)
01005a7f e8cccb0000 call calc!_EH_prolog (01012650)
01005a84 83ec0c sub esp,0Ch
01005a87 8b4508 mov eax,dword ptr [ebp+8]
01005a8a 53 push ebx
01005a8b 56 push esi
01005a8c 33f6 xor esi,esi
01005a8e 83f85a cmp eax,5Ah
先在这里下一个断点
0:000> bp DoOperation
DoOperation函数的结尾是在01005C23处
0:000> u 01005C23
calc!DoOperation+0x1a9:
01005c23 c20c00 ret 0Ch
需要首先打开Log文件,然后执行到返回
0:000> .logopen "C:\calc.log"
Opened log file 'C:\calc.log '
0:000> pa 01005c23
执行完成之后
0:000> .logclose
这样会在C:\下产生一个calc.log。然后可以通过脚本进行导入到IDA中,并对结果进行标记。
如图所示,绿色为标记出来的路径:
------------------------------
文章的授權使用CC BY-ND2.5協議。凡是標示“轉載”的文章,均來源於網絡並儘可能標註作者。如果有侵犯您的權益,請及時聯繫刪除或者署名、授權。
Gtalk/Email: cmd4shell [at] gmail.com