|
程序员的吸星大法-IDA反汇编工具初探(5) 是不是一目了解了呢? 当我们通过阅读源码,能确定某一个子函数的作用及传入的参数类型时,我们可以双击这个函数名,跳到函数定义处,在函数定义处点右键,使用"设置函数类型"功能来编辑函数定义(C++语法),这样所有调用到这个函数的地方都会在入栈的参数后面加上其对应的变量注释. 还可以通过在函数定义处后面空白处点右键加上"可重复注释",这样所有调用此函数的地方都会在后面加上这个重复的注释. 如果想查看某个变量或函数被调用的情况,可以通过在函数或变量名上点右键,点击"查看操作数交叉索引处"功能,就可以在打开的窗口中查看到所有调用其的代码,并可通过双击跳到这段代码处.这是一个很有用的功能,能帮助你快速的搞清函数及变量的调用关系. 按下F12还可以查看到程序的流程图,CTRL+12可以查看到函数的调用图. IDA还拥有符号调试技术,能识别常见编释器编释的程序,例如下面反汇编出的VC6.0的程序代码段: .text:00405427 push edx .text:00405428 call _swscanf .text:0040542D lea eax, [esp+38h+arg_40] .text:00405431 push offset unk_0_5DB1A4 ; const wchar_t * .text:00405436 push eax ; const wchar_t * .text:00405437 call _wCScmp .text:0040543C add esp, 1Ch .text:0040543F test eax, eax .text:00405441 jz short loc_0_405459
|