• 1142阅读
  • 2回复

46.windbg-条件断点(windbg script) [复制链接]

上一主题 下一主题
离线啊冲
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2016-02-13


使用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命令把别名删除掉




[html] view plain copy

  1. 0:000> as /mu $ustr poi(@esp+4)  
  2. 0:000> al  
  3.   Alias            Value    
  4. -------          -------  
  5. $str             C:\Windows\system32\shell32.dll  
  6. $ustr            imm32.dll  
  7. 0:000> ad*  
  8. 0:000> al  
  9. No aliases  
  10. 0:000> as /mu $ustr poi(@esp+4)  
  11. 0:000> al  
  12.   Alias            Value    
  13. -------          -------  
  14. $ustr            imm32.dll  
  15. 0:000> ? $spat(@"$ustr", @"*mm32.dll")  
  16. Evaluate expression: 1 = 00000001  
  17. 0:000> ad /q $ustr  
  18. 0:000> al  
  19. No aliases  


综合起来


[html] view plain copy

  1. 0:000> ad*  
  2. 0:000> bc*  
  3. 0:000> bu Kernel32!LoadLibraryW"aS /mu $ustr poi(@esp+0x4);.block{r @$t0=$spat(@\"$ustr\", @\"*32.dll\");.if(0==@$t0){gc;}}"  
  4. 0:000> g  
  5. eax=00000001 ebx=00000001 ecx=76b36833 edx=773c7094 esi=76b367cf edi=00000000  
  6. eip=7687ef42 esp=00aff2ec ebp=00aff30c iopl=0         nv up ei pl nz na po nc  
  7. cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202  
  8. kernel32!LoadLibraryW:  
  9. 7687ef42 8bff            mov     edi,edi  
  10. 0:000> al  
  11.   Alias            Value    
  12. -------          -------  
  13. $ustr            imm32.dll  
  14. 0:000> ad*  
  15. 0:000> g  

这里要注意的是不要在.if中加ad*,不然下次就断到未知名的地方了,具体原因不清楚!


[html] view plain copy

  1. 0:000> al  
  2.   Alias            Value    
  3. -------          -------  
  4. $ustr            advapi32.dll  
  5. 0:000> ad*  
  6. 0:000> g  


[html] view plain copy

  1. 0:000> al  
  2.   Alias            Value    
  3. -------          -------  
  4. $ustr            C:\Windows\system32\ole32.dll  
  5. 0:000> ad*  
  6. 0:000> g  

去掉.block试下:


[html] view plain copy

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


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

善者 慈悲心常在 无怨无恨 以苦为乐
默认压缩密码www.hifyl.com
文件分享密码问题:http://www.hifyl.com/read-htm-tid-4444.html
离线v2680267313

只看该作者 沙发  发表于: 2016-04-30
用户被禁言,该主题自动屏蔽!
离线qq1156136807

只看该作者 板凳  发表于: 2017-12-29
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个