4.windbg script-常用操作

1.使用别名和删除别名

aS ${/v:ScriptName} hgy

ad ${/v:ScriptName}



注意不要用as,因为在没有任何名令参数时,as是把;也算在别名内的,也就是直接把hgy;ad...后所有的当成了别名

可以用一个分号来结束aS命令。这在需要将所有命令放在单行中的脚本文件中有用。

如果使用了/e/ma/mu/msa/msu/x开关,asaS 命令都会在遇到分号时结束


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了

</pre><pre name="code" class="html">ad /q ${/v:$str}
.if(0!=${/d:$arg1})
{
   .echo ${$arg1}
}
当然你也可以用.block来达到同样的效果

ad /q ${/v:$str}
.block
{
.if(0!=${/d:$arg1})
{
   .echo ${$arg1}
}
}






 

你可能感兴趣的:(4.windbg script-常用操作)