2011-04-15 00:01:29 +08:00
|
|
|
#
|
|
|
|
#
|
|
|
|
#
|
|
|
|
|
|
|
|
from pykd import *
|
|
|
|
|
|
|
|
|
|
|
|
def bpCallback():
|
|
|
|
|
|
|
|
if is64bitSystem():
|
|
|
|
objAttr = typedVar( "ntdll", "_OBJECT_ATTRIBUTES", reg("r8") )
|
|
|
|
else:
|
|
|
|
objAttr = typedVar( "ntdll", "_OBJECT_ATTRIBUTES", ptrPtr(reg("esp") + 0xC) )
|
|
|
|
|
|
|
|
name = loadUnicodeString( objAttr.ObjectName )
|
|
|
|
|
|
|
|
dprintln( "NtCreateFile: " + name )
|
|
|
|
|
2011-04-15 14:18:25 +08:00
|
|
|
return DEBUG_STATUS_GO_HANDLED
|
2011-04-15 00:01:29 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not isWindbgExt():
|
|
|
|
startProcess("notepad.exe")
|
|
|
|
|
|
|
|
|
2011-04-15 14:18:25 +08:00
|
|
|
|
2011-04-15 00:01:29 +08:00
|
|
|
if not isDumpAnalyzing() and not isKernelDebugging():
|
|
|
|
|
|
|
|
nt = loadModule("ntdll")
|
|
|
|
|
|
|
|
b1 = bp( nt.NtCreateFile, bpCallback )
|
2011-04-15 14:18:25 +08:00
|
|
|
|
|
|
|
# wait for user break, exceptions or process exit
|
|
|
|
go()
|
2011-04-15 00:01:29 +08:00
|
|
|
|
2011-04-15 14:18:25 +08:00
|
|
|
dprintln( "stopped" )
|
2011-04-15 00:01:29 +08:00
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
dprintln( "The debugger must be connected to live usermode process" )
|
|
|
|
|
|
|
|
|