2013-04-22 23:53:28 +08:00
|
|
|
"""Public microsoft symbols tests"""
|
|
|
|
|
|
|
|
import unittest
|
|
|
|
import pykd
|
|
|
|
import os
|
|
|
|
|
|
|
|
class PeFileAsDumpLoader:
|
|
|
|
"""Load/unload PE-file from System as crash dump file"""
|
|
|
|
def __init__(self, fileName):
|
|
|
|
self._fileName = fileName
|
|
|
|
self._loaded = False
|
|
|
|
|
|
|
|
def __enter__(self):
|
|
|
|
pykd.loadDump(self._fileName)
|
|
|
|
self._loaded = True
|
|
|
|
|
|
|
|
def __exit__(self, exc_type, exc_value, exc_tb):
|
|
|
|
if self._loaded:
|
|
|
|
pykd.detachProcess()
|
|
|
|
self._loaded = False
|
|
|
|
|
|
|
|
class MsPdbTest(unittest.TestCase):
|
|
|
|
"""Public Microsoft symbols tests"""
|
|
|
|
|
|
|
|
def testFindMethodOffset(self):
|
|
|
|
"""Lookup method offset by name"""
|
|
|
|
with PeFileAsDumpLoader( os.environ["WINDIR"] + r"\System32\ole32.dll" ) as loadedDump:
|
2013-04-26 01:39:09 +08:00
|
|
|
print "\n" + str( pykd.module("ole32") )
|
2013-04-22 23:53:28 +08:00
|
|
|
self.assertNotEqual( 0, pykd.getOffset("ole32!CPackagerMoniker::AddRef") )
|