diff --git a/lib/pykdlib/modules.py b/lib/pykdlib/modules.py index cfa091b..ac359ad 100644 --- a/lib/pykdlib/modules.py +++ b/lib/pykdlib/modules.py @@ -5,15 +5,52 @@ import pykd +moduleList = [] + +def kernelReloadModules(): + + global nt + global moduleList + + nt = pykd.loadModule("nt") + + modules = pykd.typedVarList( nt.PsLoadedModuleList, "nt", "_LDR_DATA_TABLE_ENTRY", "InLoadOrderLinks" ) + + moduleList = [] + + moduleList.append( nt ) + + for m in modules: + + baseName = str( pykd.loadUnicodeString( m.BaseDllName.getAddress() ) ) + + if baseName=="ntoskrnl.exe": + continue + + module = pykd.findModule( m.DllBase ) + + globals()[ module.name().lower() ] = module + + moduleList.append( module ) + + +def userReloadModules(): + + pass + + +def printModuleList(): + pykd.dprintln( "\n".join( [ str(m) for m in moduleList ] ) ) + + if pykd.isKernelDebugging(): - nt = pykd.loadModule("nt") - hal = pykd.loadModule("hal") + kernelReloadModules() +else: - - + userReloadModules()