mirror of
https://github.com/Karmaz95/Snake_Apple.git
synced 2026-03-30 14:00:16 +02:00
Uploading LLDB helper for setting XPC breakpoints
This commit is contained in:
50
X. NU/python/set_xpc_breaks.py
Normal file
50
X. NU/python/set_xpc_breaks.py
Normal file
@@ -0,0 +1,50 @@
|
||||
import lldb
|
||||
|
||||
def set_xpc_breaks(debugger, command, result, internal_dict):
|
||||
"""
|
||||
Set up tracing for XPC communication.
|
||||
This includes breakpoints for sending/receiving messages and connection creation.
|
||||
"""
|
||||
target = debugger.GetSelectedTarget()
|
||||
if not target:
|
||||
result.PutCString("No target selected. Please attach to a process first.")
|
||||
return
|
||||
|
||||
# List of XPC functions for setting breakpoints
|
||||
send_functions = [
|
||||
"xpc_connection_send_message",
|
||||
"xpc_connection_send_message_with_reply",
|
||||
"xpc_connection_send_message_with_reply_sync"
|
||||
]
|
||||
recv_function = "xpc_connection_set_event_handler"
|
||||
connect_functions = [
|
||||
"xpc_connection_create",
|
||||
"xpc_connection_create_mach_service",
|
||||
]
|
||||
|
||||
# Set breakpoints for XPC connection creation
|
||||
for func in connect_functions:
|
||||
bp = target.BreakpointCreateByName(func)
|
||||
if bp.IsValid():
|
||||
result.PutCString(f"Breakpoint set on {func}")
|
||||
else:
|
||||
result.PutCString(f"Failed to set breakpoint on {func}")
|
||||
|
||||
# Set breakpoints for sending functions
|
||||
for func in send_functions:
|
||||
bp = target.BreakpointCreateByName(func)
|
||||
if bp.IsValid():
|
||||
result.PutCString(f"Breakpoint set on {func}")
|
||||
else:
|
||||
result.PutCString(f"Failed to set breakpoint on {func}")
|
||||
|
||||
# Set breakpoint for receiving messages
|
||||
bp_recv = target.BreakpointCreateByName(recv_function)
|
||||
if bp_recv.IsValid():
|
||||
result.PutCString(f"Breakpoint set on {recv_function}")
|
||||
else:
|
||||
result.PutCString(f"Failed to set breakpoint on {recv_function}")
|
||||
|
||||
def __lldb_init_module(debugger, internal_dict):
|
||||
debugger.HandleCommand('command script add -f set_xpc_breaks.set_xpc_breaks set_xpc_breaks')
|
||||
print("The 'set_xpc_breaks' command has been loaded. Use 'set_xpc_breaks' to set up XPC message tracing.")
|
||||
Reference in New Issue
Block a user