Scout Instructions¶
Scout is an instruction-based debugger, that commonly uses a TCP network session on which the instructions are received and their output is being sent.
Default Instructions¶
- NOP - Used as a Ping (or Keep-Alive) instruction to make sure the debugger is active and responds to commands
- Memory Read - Reads (virtual) memory from the given address, and sends it back
- Memory Write - Writes a given binary content to a (virtual) memory in the debuggee’s address space
Each supported instruction must be pre-registered by the debugger before it enters his server loop, usually by calling register_all_instructions()
.
Network API¶
Each instruction is sent together with a network header that includes the following:
- Instruction ID - 2 Bytes
- Length field - 4 Bytes
The length field specifies the length, in bytes, of the serialized instruction.
Note: All instructions should be serialized to NETWORK order.
See manager\scout_api.py
for a python sample that prepares the instructions for network transmission.