Sentinel is a binary debugging engine designed for AI agents and intelligent scenarios. It encapsulates the complete process debugging capability as an HTTP+JSON standardized interface, allowing agents to directly drive reverse analysis, vulnerability mining, malicious sample analysis, data tracing, and other reverse tasks like calling a regular API, maximizing the speed of security experts.
Users may install the corresponding debugging engine toolkit via pip:
CMD> pip install binsentry
CMD> pip show binsentry
Name: BinSentry
Version: 1.0.3
Summary:
Home-page: http://sentry.lyshark.com
Author: lyshark
Author-email: me@lyshark.com
License: MIT LicenceThe following Python snippet demonstrates basic API invocation to connect to the local BinSentry service, create a debug session for a target Windows executable, and start execution control.
from BinSentry import *
if __name__ == "__main__":
# Configure connection parameters for local BinSentry service
config = Config(
address="127.0.0.1",
port=6891,
api_key="45d3552b12b12cdf2c831344311cf81e"
)
# Initialize BinSentry client instance
client = BinSentryClient(config=config)
# Print server connection information
print("config:", client.config.server_addr)
# Query current running status of debugging engine
print(client.status())
# Create a new debug session for target win32 executable
dbg = client.debug("c://win32.exe")
print(dbg)
# Launch target program and start debugging session
client.run()Continue testing the call scenario of the disassembly module interface, and you can directly use the following code to retrieve the data.
from BinSentry import *
import json
if __name__ == "__main__":
config = Config(
address="127.0.0.1",
port=6891,
api_key="45d3552b12b12cdf2c831344311cf81e"
)
client = BinSentryClient(config=config)
try:
client.detach()
except Exception:
pass
raw_dbg_resp = client.debug("c://win32.exe", "", "c://")
# SDK returns the original JSON string
dbg = json.loads(raw_dbg_resp)
print("Debug session:", dbg)
if dbg["status"] != "success":
print("Create debug session failed:", dbg["result"]["message"])
exit(-1)
# Read register values
raw_reg_resp = client.register()
resp = json.loads(raw_reg_resp)
eip_hex = resp["result"]["registers"]["eipHex"]
print(f"EIP hex = {eip_hex}")
# EIP disassembly
raw_disasm_resp = client.dissasembler(address=eip_hex,count=5)
print("Disassemble response: ", raw_disasm_resp)
# Subsequent resumption of operation
client.run()