我读过苔丝关于转储asp.net请求的博客,我读过代码,我想知道为什么.foreach命令需要在博客中的代码中切换这么多"/ps 99“。
例如,代码:
$$ RETURNCODE = CONTEXT->RESPONSE->_STATUSCODE ((CONTEXT+0X14)+50)
$$ ----------------------------------------------------------------------------------
.foreach /pS 2 /ps 99 (token {?poi(poi(${hc}+0x14)+50)}){
.printf "${token}\t\t"
};这段代码在.net 2上,我在我自己的.net 4上做了一些测试,
RETURNCODE = CONTEXT->RESPONSE->_STATUSCODE ((CONTEXT+0X28)+b0),偏移量在.net4上更改。
0:000> ? poi(0x00000000ffc59a58+0x28)+0xb0
Evaluate expression: 4291217184 = 00000000`ffc6c720
0:000> ? poi(poi(0x000000011fa2b948+0x28)+0xb0)
Evaluate expression: 200 = 00000000`000000c8.foreach
发布于 2013-08-06 15:13:16
/ps 99的意思是“跳过下一个99个令牌,然后取下一个,然后跳过下一个99个,等等。”这里的99恰好是武断的。她只想得到一个令牌,但是没有办法使用.foreach命令。她选择了一个任意高的数字,有效地告诉它“跳过其余的代币”。
/ps和/pS之间的区别可以在WinDbg帮助文件中找到:
/pS InitialSkipNumber 导致一些初始标记被跳过。InitialSkipNumber指定不会传递给指定OutCommands的输出令牌的数量。 /ps SkipNumber 导致每次处理命令时重复跳过令牌。每次将令牌传递给指定的OutCommands后,将忽略与SkipNumber值相等的多个令牌。
https://stackoverflow.com/questions/17358518
复制相似问题