zoukankan      html  css  js  c++  java
  • windbg-.foreach循环输入(windbg script)

    .foreach

    .foreach 关键字分析一个或多个命令的输出并将该输出中每一个值作为另一个或多个命令的输入

    .foreach [Options( Variable  { InCommands } ) { OutCommands 

    .foreach 
    [Options/s ( Variable  "InString) { OutCommands 

    .foreach 
    [Options/f ( Variable  "InFile) { OutCommands } 

    Options
    可以是下面选项的任意组合:
    /pS InitialSkipNumber
    使得开头的一些符号被跳过。InitialSkipNumber 指定不传递给OutCommands 的输出关键字的数量。
    /ps SkipNumber
    每次执行命令时都会跳过一些符号。每次将符号传递给OutCommands 之后,SkipNumber 个数的符号都会被忽略

    我们首先搜索下带字符T的地址有哪些:

     
    1. 0:000> s -[1]a  0029eeec  L1000 "T"  
    2. 0x0029eefb  
    3. 0x0029ef03  
    4. 0x0029ef0b  
    5. 0x0029ef15  
    6. 0x0029f034  
    7. 0x0029f06a  
    8. 0x0029f07a  
    9. 0x0029f08a  
    10. 0x0029f09e  
    11. 0x0029f356  
    12. 0x0029f7f0  
    13. 0x0029f989  
    14. 0x0029fa50  

    然后我们用.foreach把它们da出来

     
    1. 0:000> .foreach(place{s -[1]a  0029eeec  L1000 "T"}){da ${place}}  
    2.                        ^ Syntax error in '.foreach(place{s -[1]a  0029eeec  L1000 "T"}){da ${place}}'  
    3. 0:000> .foreach(place {s -[1]a  0029eeec  L1000 "T"}){da ${place}}  
    4. 0029eefb  "TencentTSVulFwTSVulFW.DAT"  
    5. 0029ef03  "TSVulFwTSVulFW.DAT"  
    6. 0029ef0b  "TSVulFW.DAT"  
    7. 0029ef15  "T"  
    8. 0029f034  "T"  
    9. 0029f06a  "T"  
    10. 0029f07a  "T"  
    11. 0029f08a  "T"  
    12. 0029f09e  "T"  
    13. 0029f356  "TxSignDemo"  
    14. 0029f7f0  "T.)"  
    15. 0029f989  "Ti.."  
    16. 0029fa50  "T.)"  

    注意place和{之间必须有空格!

    现在从第三个开始,每隔一个显示一个:

    1. 0:000> .foreach/pS3 /ps1(place {s -[1]a  0029eeec  L1000 "T"}){da ${place}}  
    2. 0029ef15  "T"  
    3. 0029f06a  "T"  
    4. 0029f08a  "T"  
    5. 0029f356  "TxSignDemo"  
    6. 0029f989  "Ti.."  

    InFile
    /f 一起使用。指定要解析的文本文件;结果会传递给OutCommands 。文件名InFile 必须用引号括起来我们在C盘建立个2.txt,内容为:

     
    1. 0x0029eefb  
    2. 0x0029ef03  
    3. 0x0029ef0b  
    4. 0x0029ef15  
    5. 0x0029f034  
    6. 0x0029f06a  
    7. 0x0029f07a  
    8. 0x0029f08a  
    9. 0x0029f09e  
    10. 0x0029f356  
    11. 0x0029f7f0  
    12. 0x0029f989  
    13. 0x0029fa50  


    运行命令:

     
    1. 0:000> .foreach/f (place "c:2.txt"){da ${place}}  
    2. 0029eefb  "TencentTSVulFwTSVulFW.DAT"  
    3. 0029ef03  "TSVulFwTSVulFW.DAT"  
    4. 0029ef0b  "TSVulFW.DAT"  
    5. 0029ef15  "T"  
    6. 0029f034  "T"  
    7. 0029f06a  "T"  
    8. 0029f07a  "T"  
    9. 0029f08a  "T"  
    10. 0029f09e  "T"  
    11. 0029f356  "TxSignDemo"  
    12. 0029f7f0  "T.)"  
    13. 0029f989  "Ti.."  
    14. 0029fa50  "T.)"  

    InCommands 的输出、InString 字符串或InFile 被解析时,任何数量的空格、tab符或回车都将会被当作单个分隔符。文本被分隔成的小片段被用来替换OutCommands 中的Variable

    /s 一起使用。指定一个要解析的字符串;结果会传递给OutCommands

     
    1. 0:000> .foreach/s (place "0029ef03;0029ef0b"){da ${place} }  
    2. 0029ef03  "TSVulFwTSVulFW.DAT"  
    3.                    ^ Syntax error in 'da 0029ef03;0029ef0b '  
    4. 0:000> .foreach/s (place "0029ef03 0029ef0b"){da ${place}}  
    5. 0029ef03  "TSVulFwTSVulFW.DAT"  
    6. 0029ef0b  "TSVulFW.DAT"  


    所以,只是把空格,tab当成分隔符,不是分号!此原则适用于string和file

  • 相关阅读:
    Vue组件
    Vue内置指令
    [vue插件]基于vue2.x的电商图片放大镜插件
    Vue过渡与动画
    一个 VUE 组件:实现子元素 scroll 父元素容器不跟随滚动(兼容PC、移动端)
    ORM进阶之Hibernate中对象的三大状态解析
    jQuery的CSS操作
    SqlCommand.DeriveParameters failed
    Web Service学习-CXF开发Web Service实例demo(一)
    去哪网实习总结:如何配置数据库连接(JavaWeb)
  • 原文地址:https://www.cnblogs.com/renyuan/p/5700966.html
Copyright © 2011-2022 走看看