mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-20 11:43:23 +08:00
75 lines
2.2 KiB
Python
75 lines
2.2 KiB
Python
|
|
import sys
|
|
import os.path
|
|
|
|
from pykd import dprintln
|
|
from pykd import dprint
|
|
|
|
def printAllSamples():
|
|
dprintln( "<b>User mode</b>", True)
|
|
dprintln( "Get critical sections list <link cmd=\"!py samples run um.critlist\">Run</link> <link cmd=\"!py samples source um.critlist\">Source</link>", True)
|
|
dprintln( "Get module list from PEB <link cmd=\"!py samples run um.ldr\">Run</link> <link cmd=\"!py samples source um.ldr\">Source</link>", True)
|
|
dprintln( "<b>Kernel mode</b>", True )
|
|
dprintln( "Get process list <link cmd=\"!py samples run km.proclist\">Run</link> <link cmd=\"!py samples source km.proclist\">Source</link>", True)
|
|
dprintln( "Get kernel service list <link cmd=\"!py samples run km.ssdt\">Run</link> <link cmd=\"!py samples source km.ssdt\">Source</link>", True)
|
|
dprintln( "Get driver object <link cmd=\"!py samples run km.drvobj\">Run</link> <link cmd=\"!py samples source km.drvobj\">Source</link>", True)
|
|
dprintln( "" )
|
|
|
|
def runSample( sampleName ):
|
|
|
|
try:
|
|
packageName, moduleName = sampleName.split(".")
|
|
|
|
module = __import__( name = sampleName, fromlist = moduleName )
|
|
|
|
module.__dict__[ "run" ]()
|
|
|
|
except ImportError:
|
|
dprintln("import error")
|
|
pass
|
|
|
|
dprintln( "" )
|
|
dprintln( "<link cmd=\"!py samples\">Sample list</link>", True )
|
|
dprintln( "" )
|
|
|
|
def printSample( sampleName ):
|
|
|
|
try:
|
|
packageName, moduleName = sampleName.split(".")
|
|
|
|
module = __import__( name = sampleName, fromlist = moduleName )
|
|
|
|
fileName = os.path.dirname( module.__dict__["__file__"] )
|
|
fileName = os.path.join( fileName, moduleName + ".py" )
|
|
|
|
with open( fileName ) as f:
|
|
for line in f:
|
|
dprint( line )
|
|
|
|
except ImportError:
|
|
dprintln("import error")
|
|
pass
|
|
|
|
dprintln( "" )
|
|
dprintln( "<link cmd=\"!py samples\">Sample list</link>", True )
|
|
dprintln( "" )
|
|
|
|
|
|
def main():
|
|
if len(sys.argv) <= 2:
|
|
return printAllSamples()
|
|
|
|
if sys.argv[1] == "run":
|
|
runSample( sys.argv[2] )
|
|
|
|
if sys.argv[1] == "source":
|
|
printSample( sys.argv[2] )
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|
|
|
|
|
|
|