windbg script------常用操作
1.使用别名和删除别名
aS ${/v:ScriptName} hgy ad ${/v:ScriptName}
注意不要用as,因为在没有任何名令参数时,as是把;也算在别名内的,也就是直接把hgy;ad...后所有的当成了别名
可以用一个分号来结束aS命令。这在需要将所有命令放在单行中的脚本文件中有用。
如果使用了/e、/ma、/mu、/msa、/msu或/x开关,as和aS 命令都会在遇到分号时结束
2.如果内部要使用传入参数,那么先要判断是否提供了参数
.if(${/d:$arg1}) { .echo "提供了参数1" } .else { .echo "未提供参数1" }
3.$ptrsize指定了指针的大小(参看帮助的伪寄存器)
r @$t0 = @ebp r @$t1 = @$t0 .printf "0 == 0n%d\n", poi(@$t1) .printf "1 == 0n%d\n", poi(@$t1+@$ptrsize)
4.使用DML实现超链接
需使用.printf /D
.printf /D "<link cmd = \"Your command here\">my string</link>"
<link cmd=\” \”</link> 中你可以使用别名
5.不要在$$>a<的脚本首行使用别名命令,否则会报错
ad /q ${/v:$str} .if(0!=${/d:$arg1}) { .echo ${$arg1} }
会报错
但你在ad前敲个回车,就OK了
ad /q ${/v:$str} .if(0!=${/d:$arg1}) { .echo ${$arg1} }当然你也可以用.block来达到同样的效果
ad /q ${/v:$str} .block { .if(0!=${/d:$arg1}) { .echo ${$arg1} } }