pykd

Форк
0
/
arm64dumptest.py 
50 строк · 1.7 Кб
1
import unittest
2
import pykd
3
import sys
4
import os
5

6
class ARM64DumpTest(unittest.TestCase):
7
    def setUp(self):
8
        dump_file = os.path.join( os.path.dirname(sys.argv[0]),
9
                                  r"..\..\kdlibcpp\kdlib\tests\dumps\win10_arm64_mem\win10_arm64_mem.cab" )
10
        self.dump_id = pykd.loadDump( dump_file )
11

12
    def tearDown(self):
13
        pykd.closeDump( self.dump_id )
14

15
    def testArm64(self):
16
        # dbgmem
17
        self.assertEqual( 0, pykd.addr64(0) )
18
        self.assertEqual( 0x80000000, pykd.addr64(0x80000000) )
19

20
        # dbgeng
21
        self.assertEqual( pykd.CPUType.ARM64, pykd.getCPUType() )
22
        self.assertEqual( pykd.CPUType.ARM64, pykd.getCPUMode() )
23

24
        self.assertTrue( pykd.is64bitSystem() )
25
        self.assertEqual( 8, pykd.ptrSize() )
26

27
        self.assertEqual( pykd.expr("@$retreg"), pykd.reg("x0") )
28

29
        # typeinfo
30
        self.assertEqual( 8, pykd.typeInfo("nt!_IRP*").size() )
31

32
        # symexport
33
        self.assertEqual( pykd.expr("clipsp!ClipSpInitialize"), pykd.module("clipsp").ClipSpInitialize )
34

35
        # cpu context
36
        cpu = pykd.cpu()
37
        self.assertEqual( pykd.expr("@$ip"), cpu.ip )
38
        self.assertEqual( pykd.expr("@$csp"), cpu.sp )
39
        self.assertEqual( pykd.expr("@fp"), cpu.fp )
40

41
        # stack
42
        stack = pykd.getStack()
43

44
        self.assertTrue( len(stack) > 11 )
45

46
        self.assertEqual( "nt!KeBugCheck2", pykd.findSymbol(stack[0].ip, False) )
47

48
        self.assertEqual( "Wdf01000!FxRequest::CompleteInternal", pykd.findSymbol(stack[11].ip, False) )
49
        self.assertEqual( 0, stack[11].getParam("Status") )
50
        self.assertEqual( 0xffffc18eaa798940, stack[11].getLocal("irp").m_Irp )
51

52

53

54

55

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

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

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

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