一直想找到OD的记录运行过的代码的功能,今天终于弄出来了,使用RUN跟踪,然后在OD的查看-》RUN跟踪里就可以看到所有运行过的代码了。
首先讨论一下寻找消息处理函数的方法-》寻找USER32.DefWindowProcA函数法,这个寻找消息处理函数的方法基于一个事实:程序只对自己感兴趣的消息进行处理,而对自己不感兴趣的消息则交给windows默认的方法处理,这个方法就是USER32.DefWindowProcA,因此找到了程序中对这个函数的调用就意味着找到了消息响应函数。但是这种方法的局限性很大,比如对于MFC程序,由于MFC程序的消息处理机制基本是一个新的结构,所以,第一,找不到USER32.DefWindowProcA,第二,找到了也没用。对于其他编译器生成的程序还没有试验,不知道这个方法有没有效果,有待验证。
OD提供的RUN跟踪功能正合我的心意,这个功能基本上将程序走过的每一步都记录下来,实现的办法是在想要记录的程序断的前后两头下断点,然后右键-》添加函数过程的分支 右键-》添加函数过程的入口,然后F9运行程序,程序暂停以后点击查看-》RUN跟踪就能看到记录下来的代码了。RUN跟踪的功能暂时还没有完全摸清,还要再实验一阵子,这是一把利器,一定要掌握好啊!
首先讨论一下寻找消息处理函数的方法-》寻找USER32.DefWindowProcA函数法,这个寻找消息处理函数的方法基于一个事实:程序只对自己感兴趣的消息进行处理,而对自己不感兴趣的消息则交给windows默认的方法处理,这个方法就是USER32.DefWindowProcA,因此找到了程序中对这个函数的调用就意味着找到了消息响应函数。但是这种方法的局限性很大,比如对于MFC程序,由于MFC程序的消息处理机制基本是一个新的结构,所以,第一,找不到USER32.DefWindowProcA,第二,找到了也没用。对于其他编译器生成的程序还没有试验,不知道这个方法有没有效果,有待验证。
OD提供的RUN跟踪功能正合我的心意,这个功能基本上将程序走过的每一步都记录下来,实现的办法是在想要记录的程序断的前后两头下断点,然后右键-》添加函数过程的分支 右键-》添加函数过程的入口,然后F9运行程序,程序暂停以后点击查看-》RUN跟踪就能看到记录下来的代码了。RUN跟踪的功能暂时还没有完全摸清,还要再实验一阵子,这是一把利器,一定要掌握好啊!