首页
社区
课程
招聘
[求助]熟悉windbg调试脚本的大佬来看下
发表于: 2020-2-6 20:08 2755

[求助]熟悉windbg调试脚本的大佬来看下

2020-2-6 20:08
2755

下面的调试脚本是在CreateFileW打条件断点,然后在访问特定的文件断下来,但是调试一直打印如下,像是定义的变量fileName1没生效。如果把脚本里的两处ad *去掉,正常了许多,但是新问题又出现了,变量fileName1的值和poi(esp+4)不一样..., fileName1是上次断点的断下时获取的poi(esp+4)的值,这是什么原因?

 


插入代码
bp kernelbase!CreateFileW "
as /mu ${/v:fileName1} poi(esp+4);
.echo 'test1'
.echo '${fileName1}'
du poi(esp + 4)
.block {
    .if($spat(@\"${fileName1}\", @\"*.json\"))
    {
        du poi(esp+4)
        ad *;
        .echo 'find111...'
    }
    .else
    {
        .echo 'not find222...'
        ad *;
        gc;
    }
}
"

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

最后于 2020-2-6 20:10 被louguodong编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
帮顶
2020-2-7 13:59
1
雪    币: 4402
活跃值: (1366)
能力值: ( LV7,RANK:113 )
在线值:
发帖
回帖
粉丝
3
bp Kernel32!CreateFileW ".printf \"%mu\\n\", poi(esp+4); as /mu ${/v:FileName} poi(esp+4); .block{.if $spat(\"${FileName}\", \"*.json\") {.echo Hit} .else {.echo Not Yet;g;}}"

2020-2-7 15:34
0
雪    币: 577
活跃值: (910)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
Adventure bp Kernel32!CreateFileW ".printf \"%mu\\n\", poi( ...

感谢大侠,你的脚本跟我有相同的问题,条件断点触发后断下来了,但是此时poi(esp+4)已经变化了,就是变量FileName和poi(esp+4)的内容是不一致的。

2020-2-7 16:02
0
雪    币: 4402
活跃值: (1366)
能力值: ( LV7,RANK:113 )
在线值:
发帖
回帖
粉丝
5
我在测试的时候发现之前设置过windbg的条件断点对现在的有影响,建议你重新打开windbg,设置断点试试。
2020-2-7 22:27
0
雪    币: 577
活跃值: (910)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
Adventure 我在测试的时候发现之前设置过windbg的条件断点对现在的有影响,建议你重新打开windbg,设置断点试试。
是的,是因为你的脚本里没有ad ${/v:$fileName},这个变量是持续存在的,或者每次执行脚本前ad *清一下也行。 我说的问题不是这个问题。
2020-2-7 22:38
0
雪    币: 4402
活跃值: (1366)
能力值: ( LV7,RANK:113 )
在线值:
发帖
回帖
粉丝
7
暂时不确定跟这个有没有关系。。我清除所有断点后,再设置一个新的断点。 还是会报错,提示语法错误,提示的信息显示是已经清除过的断点
2020-2-7 22:51
0
雪    币: 577
活跃值: (910)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
Adventure 暂时不确定跟这个有没有关系。。我清除所有断点后,再设置一个新的断点。 还是会报错,提示语法错误,提示的信息显示是已经清除过的断点
不是断点啊。是脚本中变量fileName的缓存,这个变量是持续存在的。
2020-2-8 16:10
0
游客
登录 | 注册 方可回帖
返回
//