rewire/include/interface.hpp

22 lines
957 B
C++

#pragma once
#include "wirekit.hpp"
extern err_t(*wirekit_prepare_handle)();
extern err_t(*wirekit_command_start_handle)(int, const char* const*);
extern void(*wirekit_command_exit_handle)();
extern void(*wirekit_subject_start_handle)();
extern void(*wirekit_subject_exit_handle)();
// Exposure to wirekit is achieved by adding these functions to rewire's symbol tables
#define EXPOSED __attribute__((visibility("default")))
EXPOSED err_t rewire_syscall_hook(reg_t syscall, hook_t entry, hook_t exit);
EXPOSED err_t rewire_syscall_unhook(reg_t syscall);
EXPOSED err_t rewire_syscall_hook_default(hook_t entry, hook_t exit);
EXPOSED err_t rewire_syscall_unhook_default();
EXPOSED err_t rewire_subject_id(pid_t* pid);
EXPOSED err_t rewire_subject_get_regs(user_regs_struct* regs);
EXPOSED err_t rewire_subject_set_regs(const user_regs_struct* regs);
EXPOSED err_t rewire_subject_load_cstr(const char* subject_addr, char* buf, uint32_t* read, uint32_t n);