46.windbg-条件断点(windbg script)

使用j命令的条件断点的基本语法如下:

0:000>  bp  Address  "j ( Condition ) ' OptionalCommands '; 'gc' "

使用.if命令的条件断点的基本语法如下:

0:000>  bp  Address  ".if ( Condition ) { OptionalCommands } .else {gc}"

其实结合起来看就是双引号括起来了判断条件语句


可以通过windbg搜索conditinal breakpoints查到相关示例


要注意的是,一旦使用别名:

1.必须使用.block{}把使用别名的包含在里面

2.必须在使用别名前,先用ad命令把别名删除掉


0:000> as /mu $ustr poi(@esp+4)
0:000> al
  Alias            Value  
 -------          ------- 
 $str             C:\Windows\system32\shell32.dll 
 $ustr            imm32.dll 
0:000> ad*
0:000> al
No aliases
0:000> as /mu $ustr poi(@esp+4)
0:000> al
  Alias            Value  
 -------          ------- 
 $ustr            imm32.dll 
0:000> ? $spat(@"$ustr", @"*mm32.dll")
Evaluate expression: 1 = 00000001
0:000> ad /q $ustr
0:000> al
No aliases

综合起来

0:000> ad*
0:000> bc*
0:000> bu Kernel32!LoadLibraryW"aS /mu $ustr poi(@esp+0x4);.block{r @$t0=$spat(@\"$ustr\", @\"*32.dll\");.if(0==@$t0){gc;}}"
0:000> g
eax=00000001 ebx=00000001 ecx=76b36833 edx=773c7094 esi=76b367cf edi=00000000
eip=7687ef42 esp=00aff2ec ebp=00aff30c iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202
kernel32!LoadLibraryW:
7687ef42 8bff            mov     edi,edi
0:000> al
  Alias            Value  
 -------          ------- 
 $ustr            imm32.dll 
0:000> ad*
0:000> g
这里要注意的是不要在.if中加ad*,不然下次就断到未知名的地方了,具体原因不清楚!

0:000> al
  Alias            Value  
 -------          ------- 
 $ustr            advapi32.dll 
0:000> ad*
0:000> g
0:000> al
  Alias            Value  
 -------          ------- 
 $ustr            C:\Windows\system32\ole32.dll 
0:000> ad*
0:000> g
去掉.block试下:

0:000> bu Kernel32!LoadLibraryW"aS /mu $ustr poi(@esp+0x4);r @$t0=$spat(@\"$ustr\", @\"*32.dll\");.if(0==@$t0){gc;}"
0:000> BL
 0 e 7687ef42     0001 (0001)  0:**** kernel32!LoadLibraryW "aS /mu $ustr poi(@esp+0x4);r @$t0=$spat(@\"$ustr\", @\"*32.dll\");.if(0==@$t0){gc;}"
0:000> G

直接跑完了,一个都没断下来



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值