zoukankan      html  css  js  c++  java
  • windbg学习条件断点

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

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

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

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

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


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

    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

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



  • 相关阅读:
    转:同步、异步、阻塞和非阻塞
    转:回调函数
    转:同步/异步与阻塞/非阻塞的区别
    转:Socket在阻塞模式下的信息收发和文件接收
    转:直接用socket实现HTTP协议
    链接错误 LINK : fatal error LNK1104: 无法打开文件“XX.obj”
    转:MFC中常用类,宏,函数介绍
    转:线程同步技术剖析
    转:线程同步
    转:C++回调函数用法
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693415.html
Copyright © 2011-2022 走看看