Debugging 当需要非整数类型时,使用整数类型的伪寄存器

Debugging 当需要非整数类型时,使用整数类型的伪寄存器,debugging,windbg,Debugging,Windbg,在我的Windbg脚本中,我定义了一个存储整数的伪寄存器。接下来,在我的脚本中调用了一个.writeme。.writeem的第一个参数采用文件名。我希望文件名是伪寄存器的值 这是我的Windbg脚本的简化版本,它不起作用(因为伪寄存器是整数,并且.writemem的第一个参数要求的类型与整数不同) r$t0=0 下面的$$代码序列可能会更改$t0的值 .writemem$t0eip L100伪寄存器可与允许为寄存器分配类型的r?一起使用 下面是一个向寄存器分配字符串的示例 r@$t0=(_UNI

在我的Windbg脚本中,我定义了一个存储整数的伪寄存器。接下来,在我的脚本中调用了一个.writeme。.writeem的第一个参数采用文件名。我希望文件名是伪寄存器的值

这是我的Windbg脚本的简化版本,它不起作用(因为伪寄存器是整数,并且.writemem的第一个参数要求的类型与整数不同)

r$t0=0

下面的$$代码序列可能会更改$t0的值


.writemem$t0eip L100

伪寄存器可与允许为寄存器分配类型的
r?
一起使用

下面是一个向寄存器分配字符串的示例

r@$t0=(_UNICODE_STRING*)0x0139df70+0x8


下面是一个关于如何使用它的示例。

您可以从伪寄存器的值中创建一个别名字符串并使用它。例如:

0: kd> r @$t0 = 5+5
0: kd> aS /x ${/v:fileName} @$t0
0: kd> .writemem ${fileName}.txt @eip L100
Writing 100 bytes.
将创建一个名为“0xa.txt”的文件


-斯科特

是的,那很好,但我把上面的例子说得太简单了,对不起。在真实的脚本中,$t0是一个循环变量,因此我必须按照上面所写的那样定义它?你不能做什么?我已经看了你提供的链接,但我认为我现在不能使用它。对$t0执行算术运算,因为$t0的值存储为整数,将指针转换为unicode字符串,而不是整数unicode字符串。当然,我可以将整数转换为unicode字符串和引用,但这会使简单的脚本更加复杂。我相信有一个直截了当的解决办法。