首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PyKd从崩溃转储文件中获取进程ID

使用PyKd从崩溃转储文件中获取进程ID
EN

Stack Overflow用户
提问于 2021-12-14 12:19:09
回答 3查看 478关注 0票数 0

我正在使用Pykd分析很多崩溃转储,我想从崩溃转储中获取进程ID (PID)。

在WinDbg中,我会使用命令|并使用我的大脑来解决它。过了一段时间,我会想出一个命令

代码语言:javascript
复制
.foreach /pS 3 /ps 999 ( pid {|}) {.echo ${pid}}

为我提取进程ID。

稍微聪明一点,我会用一个伪寄存器来代替:

代码语言:javascript
复制
.printf "%p", $tpid

如何使用PyKD从用户模式崩溃转储文件(.dmp)获取进程ID?

当然,我总是可以做一个pykd.dbgCommand(),但是我想使用一种更健壮的内置方式。

我试过了

  • pykd.getCurrentProcessId(),但它返回0。
  • pykd.reg("tpid"),但上面写着“无效注册名”
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-12-14 17:28:07

代码语言:javascript
复制
0:000> dx Debugger.Sessions.First().Processes
Debugger.Sessions.First().Processes
    [0x294c]         : wait.exe
0:000> .shell -ci ".echo " type f:\src\wait\pid.py
from pykd import *
print(hex(expr("@$tpid"))).shell: Process exited
0:000> !py f:\src\wait\pid.py
0x294c
0:000> |
.  0    id: 294c        examine name: F:\src\wait\wait.exe
0:000>                                                        
票数 0
EN

Stack Overflow用户

发布于 2021-12-14 12:42:43

假雷鬼的想法并没有那么糟糕:

代码语言:javascript
复制
pykd.expr("$tpid")

将进程ID作为数字提供。如果需要与|相同的格式,则将其格式化为十六进制。

票数 0
EN

Stack Overflow用户

发布于 2021-12-20 11:06:29

尝试使用pykd.getProcessSystemID

https://githomelab.ru/pykd/pykd/-/wikis/API%20Reference#function-getprocesssystemid

如果您正在调试多个进程,并且需要切换它们的上下文,getCurrentProcessId是有意义的(例如,AC.26命令)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70348779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档