.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  "Tencent\TSVulFw\TSVulFW.DAT"
  5. 0029ef03  "TSVulFw\TSVulFW.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  "Tencent\TSVulFw\TSVulFW.DAT"
  3. 0029ef03  "TSVulFw\TSVulFW.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  "TSVulFw\TSVulFW.DAT"
  3. ^ Syntax error in 'da 0029ef03;0029ef0b '
  4. 0:000> .foreach/s (place "0029ef03 0029ef0b"){da ${place}}
  5. 0029ef03  "TSVulFw\TSVulFW.DAT"
  6. 0029ef0b  "TSVulFW.DAT"

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

windbg-.foreach循环输入(windbg script)的更多相关文章

  1. Java语法糖1:可变长度参数以及foreach循环原理

    语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...

  2. 巧用array_map()和array_reduce()替代foreach循环

    1.array_reduce( $arr , callable $callback ) 使用回调函数迭代地将数组简化为单一的值. 其中$arr 为输入数组,$callback($result , $v ...

  3. 程序控制结构及for循环、foreach循环、迭代器

    结构化程序设计 三种基本控制结构:顺序结构.选择结构.循环结构. 在这种思想的指导下,发展出了面向过程编程方式.面向过程编程的核心是算法+数据结构.算法可以用顺序.选择.循环这三种基本控制结构来实现. ...

  4. 可变长度参数以及foreach循环原理

    语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...

  5. java——集合、泛型、ArrayList、LinkedList、foreach循环、模拟ktv点歌系统

    集合:一系列特殊的类,这些类可以存储任意类型的对象,长度可变,集合类都在java.util包中. 但是集合记不住对象的类型,当把对象从集合中取出时这个对象的编译类型就变成了Object类型.这样在取元 ...

  6. PHP数组foreach循环如何实现逆序访问?

    PHP数组foreach循环如何实现逆序访问? 一.总结 1.array_reverse($array) :foreach(array_reverse($array) as $key=>$val ...

  7. 项目遇到的问题:页面c:forEach循环的数据进行计算传回后台并保持到数据库

    应该还有更简单的方法 但是我不晓得 手动给文本框输入数据保存到数据库 A表 :通过订单编号 查询数据获得 B表 :通过A表中的字段查询遍历获得 问题: 手动输入文本框内容 保存到数据库 页面form提 ...

  8. java语法糖:(1)可变长度参数以及foreach循环原理

    语法糖 语法糖:是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用 ...

  9. for循环,for…in循环,forEach循环的区别

    for循环,for…in循环,forEach循环的区别for循环通关for循环,生成所有的索引下标for(var i = 0 ; i <= arr.length-1 ; i++){ 程序内容 } ...

随机推荐

  1. walmart weekly sales

    最近参加了kaggle的walmart weekly sales 预测比赛,已经过期但还能提交获得评分.Walmart Recruiting - Store Sales Forecasting 提供的 ...

  2. 一文读懂「Attention is All You Need」| 附代码实现

    https://mp.weixin.qq.com/s?__biz=MzIwMTc4ODE0Mw==&mid=2247486960&idx=1&sn=1b4b9d7ec7a9f4 ...

  3. 用keras实现lstm 利用Keras下的LSTM进行情感分析

    1    I either LOVE Brokeback Mountain or think it’s great that homosexuality is becoming more accept ...

  4. 阿里巴巴Java开发规约插件全球首发!(转)

    https://mp.weixin.qq.com/s?__biz=MzI0NTE4NjA0OQ==&mid=2658355901&idx=1&sn=3169172bfc6819 ...

  5. MSVC and MinGW DLLs

    Posted February 26th, 2009 by earnie dll faq msvc TODO: Reformat to new wiki syntax. !!! [Minimalist ...

  6. wifidog接口文档(转)

    目录(?)[-] 网关心跳协议 请求信息 回复格式 例子 用户状态心跳协议 请求格式 注意 回复格式 状态码 例子 跳转协议 请求格式 例子 注册协议 请求格式 例子 wifidog是搭建无线热点认证 ...

  7. node.js " The requested service provider could not be loaded or initialized"

    I'm trying to use any of the NodeJS or NPM commands but I always got the following error: socket: (1 ...

  8. [Canvas]首个小游戏告成

    英雄在地图上射箭杀怪兽,杀完了就胜利了. 点此下载程序试玩. 图例: 代码: <!DOCTYPE html> <html lang="utf-8"> < ...

  9. Android 高级 Jackson Marshalling(serialize)/Unmarshalling(deserialize)

    本文内容 高级 Jackson Marshalling 只序列化符合自定义标准的字段 把 Enums 序列化成 JSON 对象 JsonMappingException(没有找到类的序列化器) Jac ...

  10. @TargetAPI + 版本判断实现高低API版本兼容

    安卓开发中,在低版本SDK使用高版本的API会报错.一般处理方法是换一种实现方法,或者在高版本SDK中使用高版本API,低版本SDK中使用效果可能会差点的折衷方案:后者可以用如下技巧来实现. 步骤 S ...