windbg脚本监控寄存器值的变化
调试遇到的一个问题:某一个函数的参数是通过寄存器传递的,要想搞明白寄存器的值从哪里来,在IDA里就要去找上面的赋值操作,但是遇到一个复杂的流程就不想看了,懒人写了脚本监控一小段代码段的寄存器变化,然后输出寄存器的EIP,效果如下图

$$ 监视给定EIP范围内执行流中某一寄存器值的变化
.echo "*****start*****"
.printf "[+] trace eax change\n"
r @$t0=013d13c0
r @$t1=013d13ea
.printf "[+] start address: %x\n",@$t0
.printf "[+] end address: %x\n",@$t1
bu @$t0
bl
.while(1)
{
r @eip
g
.if(@eip==@$t0)
{.break}
}
r @$t3=@eax
.printf "[+] eax: %x,eip: %x\n",@$t3,@eip
.while(@eip<@$t1)
{
r @$t4=@eip
p
.if(@$t3!=@eax)
{
r @$t3=@eax
.printf "[+] eax: %8x,eip: %8x\n",@$t3,@$t4
}
}
.echo "*****end*******"

浙公网安备 33010602011771号