NtCreateFile上的WinDBG条件断点

WinDBG Conditional Breakpoint on NtCreateFile

使用WinDBG调试Windows 10,我已通过COM隧道连接到OS。
我正在运行一个进程,想打开一个名为" MyFile"的特定文件时,我想中断一下。
我所要做的是在ntdll!NtCreateFile上添加一个断点,当断点时,我使用以下命令来检查文件名:

1
dt _OBJECT_PROPERTIES @r8

哪个给我:

1
+ 0x10 ObjectName             : 0xADDRESS_OF_STRING C:/Folder/NotMyFile

问题是此函数被调用了很多次,所以调试太慢了。有没有一种方法可以使用WinDBG的条件断点自动执行此操作?


!process 0 0 YourProcessName

1
2
3
4
5
6
Example

kd> !process 0 0 calc.exe
PROCESS 85c9ed40  SessionId: 1  Cid: 0ae8    Peb: 7ffdd000  ParentCid: 075c
    DirBase: 7e248560  ObjectTable: e44da728  HandleCount:  71.
    Image: calc.exe

从此

获取EPROCESS地址

并设置特定于过程的断点,例如

1
bp /p 85c9ed40 nt!NtCreateFile

这应该大大减少匹配,并且只有在您的进程下调用NtCreateFile时才会中断

仅当您的进程打开许多文件或多次打开此特定条件时才使用条件语句,否则您将不需要任何条件语句