gpt4 book ai didi

arrays - WinDbg:如何以编程方式解析 `dt` 的输出?

转载 作者:行者123 更新时间:2023-12-02 00:54:55 26 4
gpt4 key购买 nike

WinDbg dt命令对于显示类型信息非常有用,我常用dt -a <memory-address> <type>输出元素数组的类型信息。

如何以编程方式操作 dt 输出的值?具体来说,对于数组中的每个元素,我想输出数组中每个元素的位移值(数组中每个值的 ??(array-element)>>1)。我已经对 100 个元素的数组进行了尝试(示例数组内存地址为 0xDEADBEEF,数据类型为 MY_TYPE):

.for (r $t0=0; @$t0<0n100; r $t0=@$t0+1) { ??(dt 0xDEADBEEF)+(@@c++(sizeof(MY_TYPE))*@$t0) MY_TYPE)>>1 }

基本上,对于数组中的每个元素,我想打印 dt 的输出, 数值移动 1。

最佳答案

尝试使用pykd。它为您提供用于调试 windbg 引擎的 python API。您可以通过两种方式使用类型化变量:

  1. 简单的方法:解析。

    dtoutput = pykd.dbgCommand("dt _MYTYPE 地址")

    callDtParser(dtoutput) # 尽可能地解析文本:re ....

  2. 正确的方法:pykd.typedVar

    myvar = pykd.typedVar("_MYTYPE", 地址)

    print myvar.arrayField[10] >> 2 # 与 C 比较

如何安装 pykd(使用 bootstarpper) https://pykd.codeplex.com/releases/view/614442

提示:不要使用 python 2.7.11 - 它有一个错误并且在嵌入应用程序中不起作用(您可以通过更改默认 python 注册来修复它)

关于arrays - WinDbg:如何以编程方式解析 `dt` 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36555458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com