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

  • 相关阅读:
    1026: [SCOI2009]windy数 (数位DP)
    Codeforces Round #603 (Div. 2)
    小明种苹果(续)
    1001: [BeiJing2006]狼抓兔子 (最小割)
    codeforces 990C Bracket Sequences Concatenation Problem
    codeforces990D
    codeforces 1037D. Valid BFS?
    pytorch inception v3 KeyError: <class 'tuple'>解决方法
    codeforces 1025C Plasticine zebra
    codeforces1027D
  • 原文地址:https://www.cnblogs.com/renyuan/p/5700966.html
Copyright © 2011-2022 走看看