第二卷 OllyDBG 技巧系列 第六篇 条件断点技巧

  友人该说了,不会用工具怎么办啊,那就直接在过程入口下SHIFT+F4啦,条件和表达都空着,只选记录函数参数,那么就能得到一堆记录了,找到显示有WM_COMMAND的消息,把他的内容里的ID做为[ESP+C]的数值,一个个试啦在某条语句上按了SHIFT+F4后出现了个对线)第一行是条件: 要输入的肯定是你感兴趣的条件啦,比如说下面的俩句

  你在0041150处下条件记录中断,假如这时候你要是想知道ESI等不等于0,那就可以设置条件 ESI0或ESI!0反正是关于ESI的条件了而不是只能利用这行的EAX.当然一样可以在0041150处下断追消息,比如说你想知道按了老鼠标移动消息,那么就设置 MSGWM_MOUSEMOVE 或是MSG0200(移动的数字代码).有人该问了,消息记录好象应该在下一行有函数的下断才正确吧?其实不一定非要在传递消息的那行0041151下断的,但在那行下断的好处是可以记录到函数参数,这在下面会讲到~

  这个要是你下在没函数的那行,那么这行就变灰了~~记录函数的参数很有意义啊,直接可以看到很多信息,我们比如说在有函数的那行下条件记录.条件是EAX0表达是[EAX+4],然后在这选择记录函数参数在条件满足时;当然你若只想记录运行到此处的函数参数,那么就空着条件和表达吧,同时3)和4)的选择也要变为永不了…也许你在记录了啥也看不到,因为运行到这行可能EAX总不0,那么好换换EAX0 ,好象看了到一堆,然后还有PMSGXXXX HwXXXX,这就是运行到这里这个函数的参数啦~~我们也可以记录CREATFILEA 函数,那么就知道都打开什么文件了~~

  又该问了,为什么这么写? 请记住:由于是过程调用,肯定要先向堆栈里压数据的,也就是标准说法:传递参数!对于对话况过程或窗口过程,执行到入口处的时候堆栈内肯定压入的是MSG消息结构的数据,那么[ESP+8]正好是WM_xxx消息,由于点了按钮我们肯定要抓的是WM_COMMAND消息也就是111啦,这个不明白去看书~[ESP+C]是Wm参数,就是窗口的ID号了,这个条件就是当你按下了ID为422的注册按钮的时候中断,接下来你就可以单步看了~~当然,你用窗口工具的时候也能看到按钮的子窗口句柄,这时候ESP+10]就是它的数值了,也一样可以代替ESP+C]0422的条件了.其实都一样的,

发表评论

电子邮件地址不会被公开。 必填项已用*标注