pykd

Форк
0
/
samples.py 
75 строк · 2.1 Кб
1

2
import sys
3
import os.path
4

5
from pykd import dprintln
6
from pykd import dprint
7

8
scriptPath = sys.argv[0]
9

10
def printCommand(sampleDescription, sampleName):
11
    dprintln( f'{sampleDescription} <link cmd="!pykd.py {scriptPath} run {sampleName}">Run</link> <link cmd="!pykd.py {scriptPath} source {sampleName}">Source</link>', True)
12

13
def printAllSamples():
14
    dprintln( "<b>User mode</b>", True)
15
    printCommand ("Get critical sections list", "um.critlist")
16
    printCommand ("Get module list from PEB", "um.ldr")
17
    #printCommand ("CreateFile", "um.createfile")
18
    dprintln( "<b>Kernel mode</b>", True )
19
    printCommand ("Get process list", "km.proclist")
20
    printCommand ("Get kernel service", "km.ssdt")
21
    printCommand ("Get driver object", "km.drvobj")
22
    dprintln( "" )
23

24
def runSample( sampleName ):
25

26
    try:
27
        packageName, moduleName = sampleName.split(".")
28

29
        module = __import__( name = sampleName, fromlist = moduleName  )
30

31
        module.__dict__[ "run" ]()
32

33
    except ImportError:
34
        dprintln("import error")
35
        pass
36

37
    dprintln( "" )
38
    dprintln( f'<link cmd="!pykd.py {scriptPath}">Sample list</link>', True )
39
    dprintln( "" )  
40

41
def printSample( sampleName ):
42

43
    try:
44
        packageName, moduleName = sampleName.split(".")
45

46
        module = __import__( name = sampleName, fromlist = moduleName )
47

48
        fileName = os.path.dirname( module.__dict__["__file__"] )
49
        fileName = os.path.join( fileName, moduleName + ".py" )
50

51
        with open( fileName ) as f:
52
            for line in f:
53
                dprint( line )            
54

55
    except ImportError:
56
        dprintln("import error")
57
        pass
58

59
    dprintln( "" )
60
    dprintln( f'<link cmd="!pykd.py {scriptPath}">Sample list</link>', True )
61
    dprintln( "" )  
62
  
63

64
def main():
65
    if len(sys.argv) <= 2:
66
        return printAllSamples()
67

68
    if sys.argv[1] == "run":
69
        runSample( sys.argv[2] )
70

71
    if sys.argv[1] == "source":
72
        printSample( sys.argv[2] )
73
        
74

75
if __name__ == "__main__":
76
    main()
77

78

79

80

81

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.