还是继续第三章的内容,这里使用OD来跟踪第三章那个程序的运行情况,看看各个函数的调用情况;
0:是如下程序:
1:把程序载入OD:
2:鼠标右键--查找(如下图),或者直接(Ctrl + N)
来到下图:
中这些函数上面设置断点,并加上注释:(如下函数)
bp DispatchMessageW
bp TranslateMessage
bp GetMessageW
bp RegisterClassW
bp CreateWindowExw
bp ShowWindow
bp UpdateWindow
3:F9运行起来:如下图:
F9运行起来,程序断在RegisterClassW 函数上面,即注册窗口类,上图右下角可以看到RegisterClassW的参数地址,在数据窗口跟踪注册的窗口类地址(按如下图操作);
依据WNDCLASS 的结构体定义,上图中的“3” 即为窗口过程函数的地址(WndProc函数的地址),按照下图操作,跟踪到WndProc函数;
定位的窗口过程函数:(如下图),然后中此函数入口处设置断点:
4:再F9运行:
运行的createWindow函数,再按照下面操作,在CreateWindowExW函数返回地址处设置断点:
定位到CreateWindowExW函数返回地址处,设置断点:
5:再F9运行:
此时会断在窗口过程处理函数那,这时候把RegisterClassW函数处的断点去掉(不去掉程序会退出,原因不详)。
一直F9运行,直到断在CreateWindowExW函数返回地址处(上图设置的断点),来到如下图:
5:再F9运行:F9一直运行下去,看看其他函数的调用;(这里不截图啦)