zoukankan      html  css  js  c++  java
  • windbg学习$$(注释说明符)和*(注释行说明符)和.echo

    如果命令开头出现两个美元符号( $$ ),则该行剩下的部分被当成注释,除非碰到分号,$$ 关键字使得后面的文本被忽略掉,直到行末或者碰到分号。分号结束注释;分号后的文本被解析为标准的命令


    如果命令开头带星号( * )字符,则行中剩下的部分被当成注释,即使中间有分号

    0:000> r eax; $$ some text; r ebx; * more text; r ecx
    eax=00000000
    ebx=00000000

    以下是显示eax,ebx,但不显示ecx


    .echo命令显示注释字符串

    .echo String 
    .echo "String" 

    1.两种形式都可以包含任意数量的空格,逗号,和单引号

    0:000> .echo  hgy ,h'gy
    hgy ,h'gy
    0:000> .echo  "hgy ,h'gy"
    hgy ,h'gy
    

    2.如果用双引号括起来,就可以包含分号,但不能包含其他双引号

    0:000> .echo  "hgy ,h'gy"
    hgy ,h'gy
    0:000> .echo  "hgy ,h'gy;;"
    hgy ,h'gy;;
    0:000> .echo  "hgy ,h'gy;;""
                             ^ Malformed string in '.echo  "hgy ,h'gy;;""'

    3.如果不用双引号,可以在除了第一个字符的任意位置包含双引号(如果是第一个字符,那就成用双引号的表示形式了!),但是不能包含分号,分号是用来分隔.echo和后面命令的

    0:000> .echo  hgy ,h'gy""
    hgy ,h'gy""
    0:000> .echo  hgy ,h'gy";"
    hgy ,h'gy"
                             ^ Syntax error in '.echo  hgy ,h'gy";"'
    0:000> .echo  hgy ,h'gy"";
    hgy ,h'gy""
    

    .echo 命令和$$  (Comment Specifier)关键字以及*  (Comment Line Specifier)关键字不同,因为这些关键字会使得调试器忽略输入的文本而不会显示出来,而.echo会立即显示.

    .echo可以用于条件语句中:

    0:000> bu kernel32!LoadLibraryW "as /mu ${/v:$str} dwo(esp+4);.block{.if(1==$spat(@\"$str\", \"*mm*\")){.echo \"ok\";dds}.else{gc}}"
    breakpoint 0 redefined
    0:000> bl
     0 e 7627ef42     0001 (0001)  0:**** kernel32!LoadLibraryW "as /mu ${/v:$str} dwo(esp+4);.block{.if(1==$spat(@\"$str\", \"*mm*\")){.echo \"ok\";dds}.else{gc}}"
     2 e 014f418a     0001 (0001)  0:**** VerifyTxSignDemo!VerifyEmbeddedSignatureW+0xea
    0:000> g
    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\COMCTL32.dll - 
    ok
    7627ef42  8b55ff8b
    7627ef46  6a006aec
    7627ef4a  0875ff00
    7627ef4e  ffffcce8
    7627ef52  04c25dff
    7627ef56  90909000
    7627ef5a  25ff9090
    7627ef5e  76231b54 kernel32!_imp__FreeLibrary
    7627ef62  90909090
    7627ef66  55ff8b90
    7627ef6a  eb5dec8b
    7627ef6e  909090ed
    7627ef72  ff8b9090
    7627ef76  5dec8b55
    7627ef7a  909005eb
    7627ef7e  ff909090
    7627ef82  2318d425
    7627ef86  90909076
    7627ef8a  25ff9090
    7627ef8e  76231d1c kernel32!_imp__GetEnvironmentVariableW
    7627ef92  90909090
    7627ef96  55ff8b90
    7627ef9a  b70fec8b
    7627ef9e  c9330c45
    7627efa2  0f084d39
    7627efa6  ff2d7384
    7627efaa  0fc13bff
    7627efae  ff2d6b84
    7627efb2  ffff3dff
    7627efb6  0a740000
    7627efba  040c45f6
    7627efbe  2d4d850f
    eax=00000001 ebx=00000001 ecx=77da6833 edx=77c87094 esi=77da67cf edi=00000000
    eip=7627ef42 esp=001bf958 ebp=001bf978 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:
    7627ef42 8bff            mov     edi,edi
    0:000> du dwo(esp+4)
    750c4e00  "imm32.dll"
    







  • 相关阅读:
    360安全浏览器发布
    搬家了
    驾驶员考试科目一通过
    脑海中总有些新念头
    2008汤姆斯杯尤伯杯羽毛球赛事直播时刻表
    操作日期和时间
    数据库设计中的14个技巧
    字段属性(空值、缺省值、标记字段/自增字段)
    SQL触发器
    数据库质疑事件 总结
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693412.html
Copyright © 2011-2022 走看看