mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-05-13 22:23:24 +08:00
[0.1.x] fixed : sample km/drvobj.py fixed for win7
git-svn-id: https://pykd.svn.codeplex.com/svn@76653 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
3f42d04cff
commit
9ad5767580
@ -6,6 +6,29 @@ def loadSymbols():
|
|||||||
global nt
|
global nt
|
||||||
nt = loadModule( "nt" )
|
nt = loadModule( "nt" )
|
||||||
|
|
||||||
|
def getObjNameFromObjHeader( objHeader ):
|
||||||
|
|
||||||
|
if hasattr( objHeader, "NameInfoOffset"):
|
||||||
|
objName = typedVar( "nt!_OBJECT_HEADER_NAME_INFO", objHeader.getAddress() - objHeader.NameInfoOffset )
|
||||||
|
else:
|
||||||
|
if (0 == (objHeader.InfoMask & 2)):
|
||||||
|
return ""
|
||||||
|
|
||||||
|
offsetNameInfo = ptrByte( nt.ObpInfoMaskToOffset + (objHeader.InfoMask & 3) )
|
||||||
|
|
||||||
|
if (0 == offsetNameInfo):
|
||||||
|
return ""
|
||||||
|
|
||||||
|
objName = nt.typedVar("_OBJECT_HEADER_NAME_INFO", objHeader.getAddress() - offsetNameInfo)
|
||||||
|
|
||||||
|
return loadUnicodeString( objName.Name.getAddress() )
|
||||||
|
|
||||||
|
def getObjTypeFromObjHeader( objHeader ):
|
||||||
|
|
||||||
|
if hasattr( objHeader, "Type"):
|
||||||
|
return objHeader.Type
|
||||||
|
|
||||||
|
return ptrPtr( nt.ObTypeIndexTable + ptrSize() * objHeader.TypeIndex )
|
||||||
|
|
||||||
def getObjectInDir( dirObj, objName ):
|
def getObjectInDir( dirObj, objName ):
|
||||||
|
|
||||||
@ -21,22 +44,21 @@ def getObjectInDir( dirObj, objName ):
|
|||||||
|
|
||||||
while dirEntry != 0:
|
while dirEntry != 0:
|
||||||
|
|
||||||
objHeader = containingRecord( dirEntry.Object, "nt!_OBJECT_HEADER", "Body" )
|
objHeader = containingRecord( dirEntry.Object, "nt!_OBJECT_HEADER", "Body" )
|
||||||
|
|
||||||
objName = typedVar( "nt!_OBJECT_HEADER_NAME_INFO", objHeader.getAddress() - objHeader.NameInfoOffset )
|
objName = getObjNameFromObjHeader( objHeader )
|
||||||
name = loadUnicodeString( objName.Name.getAddress() )
|
|
||||||
|
|
||||||
if name.lower() == dirSubName.lower():
|
if objName.lower() == dirSubName.lower():
|
||||||
|
|
||||||
if objHeader.Type == ptrPtr( nt.ObpDirectoryObjectType ):
|
if getObjTypeFromObjHeader( objHeader ) == ptrPtr( nt.ObpDirectoryObjectType ):
|
||||||
return getObjectInDir( typedVar( "nt!_OBJECT_DIRECTORY", dirEntry.Object), objSubName )
|
return getObjectInDir( typedVar( "nt!_OBJECT_DIRECTORY", dirEntry.Object), objSubName )
|
||||||
else:
|
else:
|
||||||
return dirEntry.Object
|
return dirEntry.Object
|
||||||
|
|
||||||
if dirEntry.ChainLink != 0:
|
if dirEntry.ChainLink != 0:
|
||||||
dirEntry = typedVar( "nt!_OBJECT_DIRECTORY_ENTRY", dirEntry.ChainLink )
|
dirEntry = typedVar( "nt!_OBJECT_DIRECTORY_ENTRY", dirEntry.ChainLink )
|
||||||
else:
|
else:
|
||||||
dirEntry = 0
|
dirEntry = 0
|
||||||
|
|
||||||
|
|
||||||
def getObjectByName( objName ):
|
def getObjectByName( objName ):
|
||||||
|
Loading…
Reference in New Issue
Block a user