Load the :class:`SymbolModule` associated with the loaded module ``name`` (as found in the PEB) :return: :class:`SymbolModule` Exemple: >>> sh = windows.debug.symbols.ProcessSymbolHandler(windows.test.pop_proc_64()) <windows.debug.symbols.ProcessSymbolHandl
(self, name)
| 643 | # module that is already loaded |
| 644 | # Question: should be able to load other module at other address ? |
| 645 | def load(self, name): |
| 646 | """Load the :class:`SymbolModule` associated with the loaded module ``name`` (as found in the PEB) |
| 647 | |
| 648 | :return: :class:`SymbolModule` |
| 649 | |
| 650 | Exemple: |
| 651 | |
| 652 | >>> sh = windows.debug.symbols.ProcessSymbolHandler(windows.test.pop_proc_64()) |
| 653 | <windows.debug.symbols.ProcessSymbolHandler object at 0x033A2C30> |
| 654 | >>> sh |
| 655 | <windows.debug.symbols.ProcessSymbolHandler object at 0x033A2C30> |
| 656 | >>> sh.load("kernelbase.dll") |
| 657 | <SymbolModule name="kernelbase" type=SymDeferred pdb="" addr=0x7ffb5b090000> |
| 658 | >>> sh["kernelbase!CreateProcessA"] |
| 659 | <SymbolInfoA name="CreateProcessA" start=0x7ffb5b2371f0 tag=SymTagPublicSymbol> |
| 660 | """ |
| 661 | mods = [x for x in self.target.peb.modules if x.name == name] |
| 662 | if not mods: |
| 663 | raise ValueError("Could not find module <{0}>".format(name)) |
| 664 | assert len(mods) == 1 # Load all if multiple match ? |
| 665 | mod = mods[0] |
| 666 | return self.load_module(addr=mod.baseaddr, path=mod.fullname) |
| 667 | |
| 668 | def refresh(self): |
| 669 | """Update the list of loaded modules to match the modules present in the target process |
nothing calls this directly
no test coverage detected