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++){ 程序内容 } ...
随机推荐
- jQuery 图片裁剪插件 Jcrop
Jcrop是一个jQuery图片裁剪插件,它能为你的WEB应用程序快速简单地提供图片裁剪的功能.特点如下: 对所有图片均unobtrusively(无侵入的,保持DOM简洁) 支持宽高比例锁定 支持 ...
- javascript获取时间差
function GetDateDiff(startTime, endTime, diffType) { //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式 startTime ...
- 【python】安装py3-bencode 及小例程
C:\Users\horn1\Desktop\python\35-bencode-ng>pip install py3-bencodeCollecting py3-bencode Downloa ...
- python 导出mongoDB数据中的数据
import pymongo,urllibimport sysimport timeimport datetimereload(sys)sys.setdefaultencoding('utf8')fr ...
- springboot微信sdk方式进行微信支付
https://blog.csdn.net/xsg6509/article/details/80342744
- 014-Go Web 对pg增删改查测试
1:data/data.go package data import( "fmt" "database/sql" _"github.com/lib/p ...
- JAVA eclipse 安装lombok
1.下载lombok http://projectlombok.org/download.html 2.点击安装: 如果eclipse没有安装到默认目录,那么需要点击Specify选择eclipse的 ...
- 创新大师Steve Blank: 你真的知道什么是真正的精益创业吗?
编者注:本文来自被誉为当代创新大师的Steve Blank的博客. 中文版由天地会珠海分舵编译. 全文从当今非常多人对精益创业的误解作为一个切入点,深入的分析了为什么人们这么easy就对精益创业产生误 ...
- 元素高度、宽度获取 style currentStyle getComputedStyle getBoundingClientRect
1.示例代码 (1)html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- Java多线程之Future与FutureTask
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561154.html 一:Future 在使用实现Callable创建线程时,call()方法是有返回值的. ...