1import os 2 3import lldb 4from lldb.plugins.scripted_process import ScriptedProcess 5 6class MyScriptedProcess(ScriptedProcess): 7 def __init__(self, target: lldb.SBTarget, args : lldb.SBStructuredData): 8 super().__init__(target, args) 9 10 def get_memory_region_containing_address(self, addr: int) -> lldb.SBMemoryRegionInfo: 11 return self.memory_regions[0] 12 13 def get_thread_with_id(self, tid: int): 14 return {} 15 16 def get_registers_for_thread(self, tid: int): 17 return {} 18 19 def read_memory_at_address(self, addr: int, size: int) -> lldb.SBData: 20 data = lldb.SBData().CreateDataFromCString( 21 self.target.GetByteOrder(), 22 self.target.GetCodeByteSize(), 23 "Hello, world!") 24 return data 25 26 def get_loaded_images(self): 27 return self.loaded_images 28 29 def get_process_id(self) -> int: 30 return 42 31 32 def should_stop(self) -> bool: 33 return True 34 35 def is_alive(self) -> bool: 36 return True 37 38def __lldb_init_module(debugger, dict): 39 if not 'SKIP_SCRIPTED_PROCESS_LAUNCH' in os.environ: 40 debugger.HandleCommand( 41 "process launch -C %s.%s" % (__name__, 42 MyScriptedProcess.__name__)) 43 else: 44 print("Name of the class that will manage the scripted process: '%s.%s'" 45 % (__name__, MyScriptedProcess.__name__))