首页
社区
课程
招聘
[旧帖] [求助]WATCHES 窗口的表达式编写求助! 0.00雪花
发表于: 2008-1-29 09:57 3420

[旧帖] [求助]WATCHES 窗口的表达式编写求助! 0.00雪花

2008-1-29 09:57
3420


     请各位兄弟帮忙,我现在正在用OD 跟踪程序,但是对于watches 窗口的使用不熟悉

   google 了一下,有关watches 说明如下:

   监视[Watches]和查看[inspectors]:每个监视都是一个表达式并能实时显示表达式的值。您可以使用寄存器、常数、地址表达式、布尔值以及任何复杂代数

   请问那位兄弟能帮忙就上面的说明,给出一些例子!

   小弟在此先谢谢各位先

   Call stack of main thread
    Address    Stack      Procedure / arguments                 Called from                   Frame
    0012FAC8   71A42EA3   <JMP.&WS2_32.WSARecv>                 wsock32.71A42E9E              0012FAF0
    0012FACC   00000278     Socket = 278
    0012FAD0   0012FAE8     pBuffers = 0012FAE8

    如果我想在watches 上随时显示  pBuffers  的值、对应的 0012FAE8 数据区地址的内容,这两个的表达式该如何编写呢?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 87
活跃值: (47)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
2
我也在学watch,是个有用的功能。
猜测如果pbuffer值是动态的,不固定。可能你用脚本在这里下断,然后动态打印到脚本日志窗口,可能更方便些。
如果要watch,可能,你要先找到那个不变的根指针,然后一层层的指过来,才能显示到watch窗口。
如果地址是固定的,就简单了,可以直接在表达式里输入[addr]就可以。我通常用类似这样的写法来监视[[addr]+4]+2d4]。
2008-1-29 11:37
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
坛子里头的另外一片文章中也提到了watches 功能,我把他们贴在这里,大家可以对照

http://bbs.pediy.com/showthread.php?t=59067
二、如果用监视(watches)窗口?
    这也是一个相当有用的功能,你可以在里面输入各种内存单元,堆栈单元和寄存器进行全程动态跟踪。方法是点菜单查看->监视调出监视窗口,然后在里面右击选添加监视,例如你想对eax寄存器进行监视,可以直接输入eax(有朋友说你有毛病吧,eax我在右边窗口可以看到,当然有时如果eax要和其它内存单元比较的话,把他们俩同时添加到一个地方,看着更舒服一点,如果你不介视你眼睛看成散光或脖子扭出毛病,你可以来回转动),其它寄存器也一样按名添加就可以了;你也可以输入[ebp-4]这样的表达式来监视堆栈,也可以输入00129FC0这样的表达式来监视内存区。你还可以右击点watchman然后选set watches,点ebp+x单选钮在下面框里输入4和18对ebp+4到ebp+18监视连续的堆栈区。当然最后一步一定不能忘,右击,界面选项->总在最前,把这个监视窗一定钉到左下角(当然也可以是别的位置,随自己的爱好),这样你在调试程关键CALL时,所有你关心的值可以动态的显示在这个窗口里,一目了然,怎么样,是不是爽多了。当然如果你可以随时改变或删除某个监视表达式,在这个监视窗口里右击选编辑监视和删除监视就可以了。
2008-1-29 15:48
0
雪    币: 87
活跃值: (47)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
4
学习了,顶下
2008-1-29 18:01
0
游客
登录 | 注册 方可回帖
返回
//