如何使用 WinDBG 按名称搜索进程

逆向工程 调试器 风袋 过程
2021-06-18 18:52:23

我知道如何通过运行列出系统中的所有进程:

0: kd>dx -r1 Debugger.Sessions[0].Processes  

OR
0: kd>.tlist

但是如何按名称搜索进程?
我尝试使用该Contains功能,但没有用:

0: kd> dx -r1 Debugger.Sessions[0].Processes.Contains("chrome.exe")
Error: Cannot compare non-intrinsic values to each other. 
2个回答

这是如何做到的:

dx @$cursession.Processes.Where(p => p.Environment.EnvironmentBlock.ProcessParameters->CommandLine->ToDisplayString().Contains("chrome"))  

如果你有其他方法,请分享。

您不能将包含用于它们不是字符串的对象
仅当您有部分大小写敏感模式时才有意义

这是您可以如何使用 contains

0: kd> dx Debugger.Sessions.First().Processes.Where(p=>p.Name.Contains("Taskm"))
Debugger.Sessions.First().Processes.Where(p=>p.Name.Contains("Taskm"))
    [0x2c14]         : Taskmgr.exe

或者如果你有一个完整的区分大小写的模式,你可以简单地在进程名称上使用 ==

0: kd> dx Debugger.Sessions.First().Processes.Where(p=>p.Name  == "Taskmgr.exe")
Debugger.Sessions.First().Processes.Where(p=>p.Name  == "Taskmgr.exe")
    [0x2c14]         : Taskmgr.exe
0: kd> dx Debugger.Sessions.First().Processes.Where(p=>p.Name  == "tAskmgr.exe")
Debugger.Sessions.First().Processes.Where(p=>p.Name  == "tAskmgr.exe")
0: kd>