Skip to content

sentinel-stack/sentinel-vmi/src/npt_guard.c

sentinel-stack/sentinel-vmi/src/npt_guard.c

Section titled “sentinel-stack/sentinel-vmi/src/npt_guard.c”
Name
structguard_region
Name
intresolve_syscall_table(struct vmi_session * s)
uint64_tfnv1a64_init(void )
uint64_tfnv1a64_update(uint64_t h, const void * data, size_t len)
uint64_tmonotonic_time_us(void )
inthash_guest_region(struct vmi_session * s, uint64_t gpa, uint64_t size, uint64_t * out_hash)
intparse_env_u64(const char * key, uint64_t * out_value)
voidclear_guard_regions(void )
intadd_guard_region(const char * name, uint64_t gpa, uint64_t size, int critical)
intadd_env_guard_region(struct vmi_session * s, const char * name, const char * gva_env, const char * size_env, uint64_t default_size, int critical)
voidregister_optional_signature_regions(struct vmi_session * s)
intsnapshot_syscall_table(struct vmi_session * s)
intsnapshot_guard_region(struct vmi_session * s, struct guard_region * region)
intset_page_readonly(struct vmi_session * s, uint64_t gpa)
intarm_guard_regions(struct vmi_session * s)
intnpt_guard_arm(struct vmi_session * s)
voidnpt_guard_disarm(struct vmi_session * s)
voidreport_syscall_table_diffs(struct vmi_session * s)
voidreprotect_region_pages(struct vmi_session * s, const struct guard_region * region)
voidnpt_guard_handle_events(struct vmi_session * s)
intnpt_guard_protect_dynamic(struct vmi_session * s, uint64_t gpa, uint64_t size, int critical, const char * name)
intnpt_guard_check_bounds(uint64_t gpa, const char ** region_name, int * is_critical)
Name
uint64_t[512]clean_syscall_table
intsnapshot_taken
uint64_tclean_syscall_hash
uint64_tlast_integrity_check_us
struct guard_region[16]guard_regions
intguard_region_count
Name
KVM_MEM_READONLY
MAX_GUARD_REGIONS
REGION_NAME_MAX
INTEGRITY_CHECK_INTERVAL_US
SYS_CALL_TABLE_BASE_6_6
SYS_CALL_TABLE_SIZE
DEFAULT_IDT_SIZE
DEFAULT_GDT_SIZE
DEFAULT_LSTAR_SIZE
DEFAULT_KERNEL_TEXT_SIZE
static int resolve_syscall_table(
struct vmi_session * s
)
static uint64_t fnv1a64_init(
void
)
static uint64_t fnv1a64_update(
uint64_t h,
const void * data,
size_t len
)
static uint64_t monotonic_time_us(
void
)
static int hash_guest_region(
struct vmi_session * s,
uint64_t gpa,
uint64_t size,
uint64_t * out_hash
)
static int parse_env_u64(
const char * key,
uint64_t * out_value
)
static void clear_guard_regions(
void
)
static int add_guard_region(
const char * name,
uint64_t gpa,
uint64_t size,
int critical
)
static int add_env_guard_region(
struct vmi_session * s,
const char * name,
const char * gva_env,
const char * size_env,
uint64_t default_size,
int critical
)

function register_optional_signature_regions

Section titled “function register_optional_signature_regions”
static void register_optional_signature_regions(
struct vmi_session * s
)
static int snapshot_syscall_table(
struct vmi_session * s
)
static int snapshot_guard_region(
struct vmi_session * s,
struct guard_region * region
)
static int set_page_readonly(
struct vmi_session * s,
uint64_t gpa
)
static int arm_guard_regions(
struct vmi_session * s
)
int npt_guard_arm(
struct vmi_session * s
)
void npt_guard_disarm(
struct vmi_session * s
)
static void report_syscall_table_diffs(
struct vmi_session * s
)
static void reprotect_region_pages(
struct vmi_session * s,
const struct guard_region * region
)
void npt_guard_handle_events(
struct vmi_session * s
)
int npt_guard_protect_dynamic(
struct vmi_session * s,
uint64_t gpa,
uint64_t size,
int critical,
const char * name
)
int npt_guard_check_bounds(
uint64_t gpa,
const char ** region_name,
int * is_critical
)
static uint64_t[512] clean_syscall_table;
static int snapshot_taken = 0;
static uint64_t clean_syscall_hash = 0;
static uint64_t last_integrity_check_us = 0;
static struct guard_region[16] guard_regions;
static int guard_region_count = 0;
#define KVM_MEM_READONLY (1UL << 1)
#define MAX_GUARD_REGIONS 16
#define REGION_NAME_MAX 32
#define INTEGRITY_CHECK_INTERVAL_US 500000ULL
#define SYS_CALL_TABLE_BASE_6_6 0xffffffff82200300ULL
#define SYS_CALL_TABLE_SIZE (512 * 8)
#define DEFAULT_IDT_SIZE 0x1000ULL
#define DEFAULT_GDT_SIZE 0x1000ULL
#define DEFAULT_LSTAR_SIZE 0x100ULL
#define DEFAULT_KERNEL_TEXT_SIZE 0x200000ULL

Updated on 2026-05-26 at 13:25:29 +0000