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的地址有哪些:
- 0:000> s -[1]a 0029eeec L1000 "T"
- 0x0029eefb
- 0x0029ef03
- 0x0029ef0b
- 0x0029ef15
- 0x0029f034
- 0x0029f06a
- 0x0029f07a
- 0x0029f08a
- 0x0029f09e
- 0x0029f356
- 0x0029f7f0
- 0x0029f989
- 0x0029fa50
然后我们用.foreach把它们da出来
- 0:000> .foreach(place{s -[1]a 0029eeec L1000 "T"}){da ${place}}
- ^ Syntax error in '.foreach(place{s -[1]a 0029eeec L1000 "T"}){da ${place}}'
- 0:000> .foreach(place {s -[1]a 0029eeec L1000 "T"}){da ${place}}
- 0029eefb "Tencent\TSVulFw\TSVulFW.DAT"
- 0029ef03 "TSVulFw\TSVulFW.DAT"
- 0029ef0b "TSVulFW.DAT"
- 0029ef15 "T"
- 0029f034 "T"
- 0029f06a "T"
- 0029f07a "T"
- 0029f08a "T"
- 0029f09e "T"
- 0029f356 "TxSignDemo"
- 0029f7f0 "T.)"
- 0029f989 "Ti.."
- 0029fa50 "T.)"
注意place和{之间必须有空格!
现在从第三个开始,每隔一个显示一个:
- 0:000> .foreach/pS3 /ps1(place {s -[1]a 0029eeec L1000 "T"}){da ${place}}
- 0029ef15 "T"
- 0029f06a "T"
- 0029f08a "T"
- 0029f356 "TxSignDemo"
- 0029f989 "Ti.."
InFile
和/f 一起使用。指定要解析的文本文件;结果会传递给OutCommands 。文件名InFile 必须用引号括起来我们在C盘建立个2.txt,内容为:
- 0x0029eefb
- 0x0029ef03
- 0x0029ef0b
- 0x0029ef15
- 0x0029f034
- 0x0029f06a
- 0x0029f07a
- 0x0029f08a
- 0x0029f09e
- 0x0029f356
- 0x0029f7f0
- 0x0029f989
- 0x0029fa50
运行命令:
- 0:000> .foreach/f (place "c:\2.txt"){da ${place}}
- 0029eefb "Tencent\TSVulFw\TSVulFW.DAT"
- 0029ef03 "TSVulFw\TSVulFW.DAT"
- 0029ef0b "TSVulFW.DAT"
- 0029ef15 "T"
- 0029f034 "T"
- 0029f06a "T"
- 0029f07a "T"
- 0029f08a "T"
- 0029f09e "T"
- 0029f356 "TxSignDemo"
- 0029f7f0 "T.)"
- 0029f989 "Ti.."
- 0029fa50 "T.)"
当InCommands 的输出、InString 字符串或InFile 被解析时,任何数量的空格、tab符或回车都将会被当作单个分隔符。文本被分隔成的小片段被用来替换OutCommands 中的Variable
和/s 一起使用。指定一个要解析的字符串;结果会传递给OutCommands
- 0:000> .foreach/s (place "0029ef03;0029ef0b"){da ${place} }
- 0029ef03 "TSVulFw\TSVulFW.DAT"
- ^ Syntax error in 'da 0029ef03;0029ef0b '
- 0:000> .foreach/s (place "0029ef03 0029ef0b"){da ${place}}
- 0029ef03 "TSVulFw\TSVulFW.DAT"
- 0029ef0b "TSVulFW.DAT"
所以,只是把空格,tab当成分隔符,不是分号!此原则适用于string和file
windbg-.foreach循环输入(windbg script)的更多相关文章
- Java语法糖1:可变长度参数以及foreach循环原理
语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...
- 巧用array_map()和array_reduce()替代foreach循环
1.array_reduce( $arr , callable $callback ) 使用回调函数迭代地将数组简化为单一的值. 其中$arr 为输入数组,$callback($result , $v ...
- 程序控制结构及for循环、foreach循环、迭代器
结构化程序设计 三种基本控制结构:顺序结构.选择结构.循环结构. 在这种思想的指导下,发展出了面向过程编程方式.面向过程编程的核心是算法+数据结构.算法可以用顺序.选择.循环这三种基本控制结构来实现. ...
- 可变长度参数以及foreach循环原理
语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...
- java——集合、泛型、ArrayList、LinkedList、foreach循环、模拟ktv点歌系统
集合:一系列特殊的类,这些类可以存储任意类型的对象,长度可变,集合类都在java.util包中. 但是集合记不住对象的类型,当把对象从集合中取出时这个对象的编译类型就变成了Object类型.这样在取元 ...
- PHP数组foreach循环如何实现逆序访问?
PHP数组foreach循环如何实现逆序访问? 一.总结 1.array_reverse($array) :foreach(array_reverse($array) as $key=>$val ...
- 项目遇到的问题:页面c:forEach循环的数据进行计算传回后台并保持到数据库
应该还有更简单的方法 但是我不晓得 手动给文本框输入数据保存到数据库 A表 :通过订单编号 查询数据获得 B表 :通过A表中的字段查询遍历获得 问题: 手动输入文本框内容 保存到数据库 页面form提 ...
- java语法糖:(1)可变长度参数以及foreach循环原理
语法糖 语法糖:是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用 ...
- for循环,for…in循环,forEach循环的区别
for循环,for…in循环,forEach循环的区别for循环通关for循环,生成所有的索引下标for(var i = 0 ; i <= arr.length-1 ; i++){ 程序内容 } ...
随机推荐
- C#获取程序启动目录
//WCF service: string servicePath = System.Web.Hosting.HostingEnvironment.MapPath("~"); // ...
- PHP ECSHOP中 诡异的问题:expects parameter 1 to be double
使用Ecshop给客户做了一个商城系统,在测试时发现后台在更改订单的配送方式时出现了以下问题 "PHP Warning: number_format() expects parameter ...
- C# Winform 未能加载文件或程序集"System.Data.SQLite"或它的某一个依赖项。试图加载格式不正确的程序
在使用Winform 开发了一个小软件,其中使用了SQLite作为数据库 但在我的Win7 64位系统上却出现了以下错误: System.BadImageFormatException: 未能加载文件 ...
- DOM对象操作html元素1
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 【Python】torrentParser1.02
#------------------------------------------------------------------------------------ # torrentParse ...
- register_shutdown_function函数详解--脚本退出时执行回调函数
register_shutdown_function — Register a function for execution on shutdown. ps:Registers a callback ...
- C#.NET常见问题(FAQ)-如何使用2D绘图控件ZedGraph绘制坐标轴和坐标曲线
添加数据:示例添加了一条sin曲线和一条cos曲线,注意cos曲线比sin曲线点更密集(可以用这种方式控制点的采样疏密程度) 默认显示效果如下图所示,可以框选一个部分看放大效果 右击某个点可以 ...
- 轻松python文本专题-字符与字符值转换
场景: 将字符转换成ascii或者unicode编码 在转换过程中,注意使用ord和chr方法 >>> print(ord('a')) 97 >>> print(c ...
- C/C++——程序的内存分配
C/C++程序内存分配 一.预备知识-程序的内存分配 一个由c/C++编译的程序占用的内存分为下面几个部分 1.栈区(stack):由编译器自己主动分配释放 ,存放函数的參数值,局部变量的值等.其操作 ...
- 关于微服务、SOA、以及API的理解
现在微服务.SOA.RESTful API设计等在各大公司很流行.微服务(micro services)这个概念不是新概念,很多公司已经在实践了,例如亚马逊.Google.FaceBook,Aliba ...