我需要比较一个字符串,作为参数传递给WinDbg用记忆中的字符串。如何才能实现这一目标?
例如,该字符串位于加载的 PE 内的特定偏移处。所以,我可以通过执行轻松读取字符串da /c 100 <addr>
。
但是,我如何使用这个字符串,将其与arg1
, in a WinDbg脚本,使用.if
? (and $SPAT()
, 我猜)
我试图读取的输出da
命令进入一个Alias or a 用户定义寄存器,但我没有成功。
您可以使用以下命令将字符串分配给别名as /c
:
0:012> as /c Hello .printf "%ma", 06130000
0:012> .echo @"${Hello}"
Hello world
然后你可以使用$spat()
on it:
0:012> ? $spat(@"${Hello}","*ell*")
Evaluate expression: 1 = 00000000`00000001
0:012> ? $spat(@"${Hello}","x*")
Evaluate expression: 0 = 00000000`00000000
要从命令行控制模式,请使用以下命令设置另一个别名-c
命令行开关:
windbg -c "as Pattern *ell*"
// this line is from the command line argument
0:006> as Pattern *ell*
0:006> .dvalloc 1000
Allocated 1000 bytes starting at 04610000
0:006> ea 04610000 "Hello world"
0:006> as /c Hello .printf "%ma", 04610000
0:006> .echo ${Pattern}
*ell*
0:006> .echo ${Hello}
Hello world
0:006> ? $spat(@"${Hello}", @"${Pattern}")
Evaluate expression: 1 = 00000001
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)