Bitdefender Hypervisor Memory Introspection
lixguest.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020 Bitdefender
3  * SPDX-License-Identifier: Apache-2.0
4  */
5 #ifndef _LIXGUEST_H_
6 #define _LIXGUEST_H_
7 
8 #include "detours.h"
9 
10 // According to Documentation/x86/x86_64/mm.txt
11 #define IS_KERNEL_POINTER_LIX(p) (((p) >= 0xFFFF800000000000) && ((p) < 0xffffffffffe00000))
12 
13 
17 typedef struct _LIX_PROTECTED_PROCESS
18 {
20 
27 
29  struct
30  {
33 
36  } Protection;
38 
39 
40 #define LIX_MAX_HOOKED_FN_COUNT 512
41 #define LIX_MAX_VERSION_STRINGS 3
42 
43 #define MAX_VERSION_LENGTH 256
44 
45 
49 typedef struct _LIX_FUNCTION
50 {
54 } LIX_FUNCTION;
55 
56 
61 typedef enum LIX_STRUCTURE
62 {
81 
82 
87 typedef enum _LIX_FIELD_INFO
88 {
109 
110 
115 typedef enum _LIX_FIELD_MODULE
116 {
138 
139 
144 typedef enum _LIX_FIELD_BINPRM
145 {
156 
157 
162 typedef enum _LIX_FIELD_VMA
163 {
173 } LIX_FIELD_VMA;
174 
175 
180 typedef enum _LIX_FIELD_DENTRY
181 {
189 
190 
196 {
213 
214 
220 {
248 
249 
254 typedef enum _LIX_FIELD_FS
255 {
260 } LIX_FIELD_FS;
261 
262 
267 typedef enum _LIX_FIELD_FDTABLE
268 {
273 
274 
279 typedef enum _LIX_FIELD_FILES
280 {
285 
286 
291 typedef enum _LIX_FIELD_INODE
292 {
299 
300 
305 typedef enum _LIX_FIELD_SOCKET
306 {
313 
314 
319 typedef enum _LIX_FIELD_SOCK
320 {
333 
334 
339 typedef enum _LIX_FIELD_CRED
340 {
346 
347 
352 typedef enum _LIX_FIELD_NSPROXY
353 {
362 
363 
369 {
380 
381 
386 typedef struct _LIX_OPAQUE_FIELDS
387 {
389 
392 
393  struct
394  {
411  } OpaqueFields;
412 
416 
418 
419 
429 #define LIX_FIELD(Structure, Field) gLixGuest->OsSpecificFields.OpaqueFields.Structure[lixField##Structure##Field]
430 
431 
436 typedef struct _LIX_SYMBOL
437 {
441 
442 
448 {
452 
455 
456 
461 typedef struct _LIX_ACTIVE_PATCH
462 {
465  BYTE Data[32];
466 
468  DETOUR_TAG DetourTag;
471 
472 
476 typedef struct _LINUX_GUEST
477 {
479  union
480  {
482 
483  struct
484  {
489  };
490  } Version;
491 
492  CHAR VersionString[MAX_VERSION_LENGTH];
493 
494  // WARNING: These may not be page aligned!
495  struct
496  {
499 
502 
505 
508  } Layout;
509 
511 
513  LIX_SYMBOL MemoryFunctions[5];
514 
515  struct
516  {
518 
521 
524  } Vdso;
525 
528 
531 
533 
534  struct
535  {
536  struct
537  {
540 
541  struct
542  {
545 
546  void *HookObject;
547  } Code;
548 
549  struct
550  {
551  QWORD Address;
552  DWORD Length;
553 
554  void *HookObject;
555  } Data;
556  } Detour;
557 
558  struct
559  {
561  BOOLEAN Cleared;
562 
563  QWORD Address;
564  DWORD Length;
565 
566 
567  void *HookObject;
568  } Agent;
569 
570  struct
571  {
574  } PerCpuData;
575 
577  } MmAlloc;
578 
581 
585 #define LIX_SYMBOL_NAME_LEN 128
586 
587 
592 #define LIX_GET_VERSION(Version) ((Version) >> 24)
593 #define LIX_GET_PATCH(Version) (((Version) & 0x00ff0000) >> 16)
594 #define LIX_GET_SUBLEVEL(Version) (((Version) & 0x0000ffff))
595 
596 #define LIX_CREATE_VERSION(K, Patch, Sublevel) ((Sublevel) | ((Patch) << 16) | ((K) << 24))
597 
602 extern const LIX_FN_DETOUR gLixHookHandlersx64[];
603 
604 INTSTATUS
606  _In_ void *Detour
607  );
608 
609 INTSTATUS
611  _In_ void *Detour
612  );
613 
614 INTSTATUS
616  _In_ void *Detour
617  );
618 
619 INTSTATUS
621  _In_ QWORD SyscallGva
622  );
623 
624 INTSTATUS
626  void
627  );
628 
629 void
631  void
632  );
633 
634 int
636  void
637  );
638 
639 void
641  void
642  );
643 
644 BOOLEAN
646  void
647  );
648 
649 INTSTATUS
651  _In_ DWORD FullStringSize,
652  _In_ DWORD VersionStringSize,
653  _Out_ CHAR *FullString,
654  _Out_ CHAR *VersionString
655  );
656 
657 #endif
INTSTATUS IntLixGuestNew(void)
Starts the initialization and enable protection for a new Linux guest.
Definition: lixguest.c:2561
The offset of proto.name.
Definition: lixguest.h:371
The offset of task_struct.pid.
Definition: lixguest.h:225
The guest has is build with VSYSCALL support.
Definition: lixguest.h:103
DWORD CurrentCpuOffset
The offset of the CPU from GS.
Definition: lixguest.h:414
The offset of cred.usage.
Definition: lixguest.h:342
LIX_OPAQUE_FIELDS OsSpecificFields
OS-dependent and specific information.
Definition: lixguest.h:579
Describes a Linux function used by the detour mechanism.
Definition: lixguest.h:49
The offset of task_struct.nsproxy.
Definition: lixguest.h:239
#define _Out_
Definition: intro_sal.h:22
_Bool BOOLEAN
Definition: intro_types.h:58
struct _LIX_SYMBOL LIX_SYMBOL
Describes a Linux ksym.
_LIX_FIELD_INFO
Describes information about a Linux guest.
Definition: lixguest.h:87
INTSTATUS IntLixGuestIsKptiActive(QWORD SyscallGva)
Checks if the Linux guest has the KPTI active.
Definition: lixguest.c:1032
#define MAX_VERSION_LENGTH
Definition: lixguest.h:43
struct _LIX_PROTECTED_PROCESS LIX_PROTECTED_PROCESS
Encapsulates a protected Linux process.
The offset of mm_struct.end_data.
Definition: lixguest.h:204
Describes the information about a Linux active-patch.
Definition: lixguest.h:461
The offset of module.init.
Definition: lixguest.h:124
The offset of task_struct.group_leader.
Definition: lixguest.h:240
The tag for LIX_FIELD_MMSTRUCT.
Definition: lixguest.h:68
The offset of vm_area_struct.vm_start.
Definition: lixguest.h:164
QWORD OriginalPagesAttr
The original page protection-attributes for the allocated region.
Definition: lixguest.h:576
The offset of linux_binprm.argc.
Definition: lixguest.h:153
QWORD End
The end guest virtual address of ksym (exclusive).
Definition: lixguest.h:439
INTSTATUS IntGetVersionStringLinux(DWORD FullStringSize, DWORD VersionStringSize, CHAR *FullString, CHAR *VersionString)
Gets the version string for a Linux guest.
Definition: lixguest.c:2730
uint8_t BYTE
Definition: intro_types.h:47
The offset of task_struct.thread_node.
Definition: lixguest.h:234
The offset of linux_binprm.file.
Definition: lixguest.h:148
The offset of module.init_layout.
Definition: lixguest.h:134
DWORD HookHandler
Used to identify the index of the LIX_FN_DETOUR the in the gLixHookHandlersx64.
Definition: lixguest.h:52
The offset of nsproxy.net_ns.
Definition: lixguest.h:359
The offset of mm_struct.start_code.
Definition: lixguest.h:201
The size of a &#39;kallsym_markers&#39; entry is 4.
Definition: lixguest.h:104
#define _In_
Definition: intro_sal.h:21
BYTE Patch
The patch field of the version string.
Definition: lixguest.h:486
INTSTATUS IntLixFtraceHandler(void *Detour)
Handles the incoming &#39;text_poke&#39; patches from the guest.
Definition: lixguest.c:1481
The value of sizeof(struct fs_struct).
Definition: lixguest.h:256
BOOLEAN SkipOnBoot
Unused.
Definition: lixguest.h:53
The offset of fdtable.max_fds.
Definition: lixguest.h:269
The offset of task_struct.execve.
Definition: lixguest.h:243
uint16_t WORD
Definition: intro_types.h:48
The value of the system_state.RUNNING.
Definition: lixguest.h:375
The offset of module.init_layout.
Definition: lixguest.h:125
The offset of task_struct.exit_code.
Definition: lixguest.h:233
_LIX_FIELD_SOCKET
The index for offsets of &#39;struct socket&#39;.
Definition: lixguest.h:305
struct _LIX_PROTECTED_PROCESS * PLIX_PROTECTED_PROCESS
The offset of inode.i_uid.
Definition: lixguest.h:295
The tag for LIX_FIELD_DENTRY.
Definition: lixguest.h:67
_LIX_FIELD_FDTABLE
The index for offsets of &#39;struct fdtable&#39;.
Definition: lixguest.h:267
The offset of task_struct.usage.
Definition: lixguest.h:222
The offset of mm_struct.flags.
Definition: lixguest.h:205
QWORD Start
The start guest virtual address of ksym.
Definition: lixguest.h:438
The end of tags.
Definition: lixguest.h:79
QWORD RoDataStart
The guest virtual address where the read-only data starts.
Definition: lixguest.h:503
The offset of task_struct.mm.
Definition: lixguest.h:229
enum _LIX_FIELD_MMSTRUCT LIX_FIELD_MMSTRUCT
The index for offsets of &#39;struct mm_struct&#39;.
The offset of mm_struct.context.vdso.
Definition: lixguest.h:210
struct _LIX_OPAQUE_FIELDS * PLIX_OPAQUE_FIELDS
The end of tags.
Definition: lixguest.h:187
DWORD FunctionsCount
The number of function to be hooked.
Definition: lixguest.h:390
The end of tags.
Definition: lixguest.h:211
BOOLEAN IsDetour
Definition: lixguest.h:467
The guest emit an absolute value in the range [0, S32_MAX] or a relative value in the range [base...
Definition: lixguest.h:98
The offset of module.sum_syms.
Definition: lixguest.h:121
The offset of dentry.d_hash.
Definition: lixguest.h:186
The offset of vm_area_struct.flags.
Definition: lixguest.h:169
The offset of sock.sk_dport.
Definition: lixguest.h:323
void * InitProcessObj
The LIX_TASK_OBJECT of the &#39;init&#39; process.
Definition: lixguest.h:532
The offset of signal_struct.nr_threads.
Definition: lixguest.h:377
The end of tags.
Definition: lixguest.h:283
The tag for LIX_FIELD_FILES.
Definition: lixguest.h:72
WORD Length
The patch length.
Definition: lixguest.h:464
QWORD Vdso32Start
The guest virtual address where the vDSO x32 starts.
Definition: lixguest.h:522
The offset of task_struct.cred.
Definition: lixguest.h:236
The offset of task_struct.tgid.
Definition: lixguest.h:226
The offset of fs_struct.fdt.
Definition: lixguest.h:282
The end of tags.
Definition: lixguest.h:271
enum _LIX_FIELD_CRED LIX_FIELD_CRED
The index for offsets of &#39;struct cred&#39;.
The offset of linux_binprm.vma.
Definition: lixguest.h:152
The offset of socket.type.
Definition: lixguest.h:308
The offset of mm_struct.end_code.
Definition: lixguest.h:202
The binprm->cred is altered by LSM.
Definition: lixguest.h:106
The end of tags.
Definition: lixguest.h:360
The offset of mm_struct.start_data.
Definition: lixguest.h:203
int INTSTATUS
The status data type.
Definition: introstatus.h:24
QWORD Vdso32End
The guest virtual address where the vDSO x32 end.
Definition: lixguest.h:523
The offset of fs_struct.pwd.
Definition: lixguest.h:258
QWORD CodeEnd
The guest virtual address where the code ends.
Definition: lixguest.h:498
enum _LIX_FIELD_MODULE LIX_FIELD_MODULE
The index for offsets of &#39;struct module&#39;.
_LIX_FIELD_CRED
The index for offsets of &#39;struct cred&#39;.
Definition: lixguest.h:339
QWORD CodeStart
The guest virtual address where the code starts.
Definition: lixguest.h:497
_LIX_FIELD_UNGROUPED
The index for offsets of structures that are not grouped.
Definition: lixguest.h:368
The offset of linux_binprm.interp.
Definition: lixguest.h:151
int IntLixGuestGetSystemState(void)
Get the system state of the Linux guest.
Definition: lixguest.c:2201
The offset of task_struct.in_execve.
Definition: lixguest.h:242
The offset of task_struct.stack.
Definition: lixguest.h:221
The offset of task_struct.thread_group.
Definition: lixguest.h:235
QWORD PerCpuAddress
The guest virtual address of the &#39;per-cpu&#39; allocated region.
Definition: lixguest.h:572
The value of sizeof(struct files_struct).
Definition: lixguest.h:281
DWORD ThreadStructOffset
The offset of the thread_struct from task_struct.
Definition: lixguest.h:415
The tag for LIX_FIELD_MODULE.
Definition: lixguest.h:64
PCHAR NamePattern
Full application file name.
Definition: lixguest.h:24
The offset of linux_binprm.mm.
Definition: lixguest.h:147
The offset of task_struct.exit_signal.
Definition: lixguest.h:241
_LIX_FIELD_FILES
The index for offsets of &#39;struct files_struct&#39;.
Definition: lixguest.h:279
The offset of sock.sk_v6_daddr.
Definition: lixguest.h:329
The offset of module.core_layout.size.
Definition: lixguest.h:128
The offset of module.init_layout.size.
Definition: lixguest.h:127
The size of a thread.
Definition: lixguest.h:89
The tag for LIX_FIELD_SOCK.
Definition: lixguest.h:75
The offset of module.core_layout.text_size.
Definition: lixguest.h:130
INTSTATUS IntLixJumpLabelHandler(void *Detour)
Handles the incoming read (arch_jmp_label_transform) from the guest.
Definition: lixguest.c:1497
The offset of module.init_layout.text_size.
Definition: lixguest.h:129
The offset of module.list.
Definition: lixguest.h:118
The offset of mm_struct.pgd.
Definition: lixguest.h:197
Encapsulates a protected Linux process.
Definition: lixguest.h:17
The offset of sock.sk_daddr.
Definition: lixguest.h:324
_LIX_FIELD_BINPRM
The index for offsets of &#39;struct linux_binprm&#39;.
Definition: lixguest.h:144
void IntLixGuestUninitGuestCode(void)
Removes the EPT hooks from detours/agents memory zone and clears these memory zones.
Definition: lixguest.c:2524
The guest has module layout.
Definition: lixguest.h:90
The offset of mm_struct.mm_users.
Definition: lixguest.h:198
struct _LIX_SYMBOL * PLIX_SYMBOL
The offset of vm_area_struct.vm_end.
Definition: lixguest.h:165
struct _LIX_ACTIVE_PATCH LIX_ACTIVE_PATCH
Describes the information about a Linux active-patch.
enum _LIX_FIELD_FILES LIX_FIELD_FILES
The index for offsets of &#39;struct files_struct&#39;.
The offset of sock.sk_state.
Definition: lixguest.h:327
The tag for LIX_FIELD_BINPRM.
Definition: lixguest.h:65
DWORD PerCpuLength
The length (bytes) of the &#39;per-cpu&#39; region.
Definition: lixguest.h:573
The offset of dentry.d_parent.
Definition: lixguest.h:182
The guest detour API.
BOOLEAN IntLixGuestDeployUninitAgent(void)
Inject the &#39;uninit&#39; agent to free the previously allocated memory for detours/agents.
Definition: lixguest.c:2238
The offset of mm_struct.mmlist.
Definition: lixguest.h:200
QWORD Feedback
Flags that will be forced to feedback only mode.
Definition: lixguest.h:35
The offset of socket.state.
Definition: lixguest.h:307
QWORD ExTableStart
The guest virtual address where the ex-table starts.
Definition: lixguest.h:506
The guest emit the symbol references in the kallsyms table as 32-bit entries, each containing a relat...
Definition: lixguest.h:95
The end of tags.
Definition: lixguest.h:136
The offset of mm_struct.start_stack.
Definition: lixguest.h:208
Used for &#39;arch_jump_label_transform&#39;.
Definition: lixguest.h:451
enum _LIX_FIELD_NSPROXY LIX_FIELD_NSPROXY
The index for offsets of &#39;struct nsproxy&#39;.
The end of tags.
Definition: lixguest.h:154
The offset of vm_area_struct.vm_prev.
Definition: lixguest.h:167
The offset of module.core_layout.ro_size.
Definition: lixguest.h:132
QWORD Current
The currently used protection flags.
Definition: lixguest.h:32
The offset of task_struct.fs.
Definition: lixguest.h:237
The offset of mm_struct.mmap.
Definition: lixguest.h:207
LIX_STRUCTURE
Structure tags used for the Linux structures.
Definition: lixguest.h:61
QWORD DataStart
The guest virtual address where the data starts.
Definition: lixguest.h:500
_LIX_ACTIVE_PATCH_TYPE
Describes the type of an Linux active-patch.
Definition: lixguest.h:447
The offset of nsproxy.count.
Definition: lixguest.h:354
The offset of module.core_layout.
Definition: lixguest.h:126
The offset of nsproxy.uts_ns.
Definition: lixguest.h:355
The guest has the vdso image struct.
Definition: lixguest.h:91
The tag for LIX_FIELD_NSPROXY.
Definition: lixguest.h:77
Used for &#39;text_poke&#39;.
Definition: lixguest.h:449
The offset of dentry.d_iname.
Definition: lixguest.h:184
_LIX_FIELD_MMSTRUCT
The index for offsets of &#39;struct mm_struct&#39;.
Definition: lixguest.h:195
The offset of module.symbols.
Definition: lixguest.h:120
DWORD Value
The Linux full version number.
Definition: lixguest.h:481
The offset of task_struct.flags.
Definition: lixguest.h:223
QWORD Original
The original protection flags as received from integrator.
Definition: lixguest.h:31
The offset of file.f_path.
Definition: lixguest.h:376
Describes a Linux guest.
Definition: lixguest.h:476
unsigned long long QWORD
Definition: intro_types.h:53
The offset of socket.flags.
Definition: lixguest.h:309
The offset of dentry.d_inode.
Definition: lixguest.h:185
The offset of module.num_gpl_syms.
Definition: lixguest.h:123
enum _LIX_FIELD_VMA LIX_FIELD_VMA
The index for offsets of &#39;struct vm_area_struct&#39;.
enum _LIX_FIELD_FDTABLE LIX_FIELD_FDTABLE
The index for offsets of &#39;struct fdtable&#39;.
void * HookObject
The hook-object for detours-code region.
Definition: lixguest.h:546
_LIX_FIELD_SOCK
The index for offsets of &#39;struct sock&#39;.
Definition: lixguest.h:319
enum _LIX_FIELD_SOCK LIX_FIELD_SOCK
The index for offsets of &#39;struct sock&#39;.
The offset of task_struct.real_parent.
Definition: lixguest.h:227
The offset of module.gpl_syms.
Definition: lixguest.h:122
enum _LIX_FIELD_INFO LIX_FIELD_INFO
Describes information about a Linux guest.
The end of tags.
Definition: lixguest.h:172
The tag for LIX_FIELD_FS.
Definition: lixguest.h:70
PCHAR CommFullPattern
Full application name pattern.
Definition: lixguest.h:25
The offset of task_struct.tasks.
Definition: lixguest.h:224
QWORD Context
The context supplied in the protection policy.
Definition: lixguest.h:26
QWORD VdsoEnd
The guest virtual address where the vDSO ends.
Definition: lixguest.h:520
WORD Sublevel
The sublevel field of the version string.
Definition: lixguest.h:485
struct _LIX_OPAQUE_FIELDS LIX_OPAQUE_FIELDS
Contains information about various Linux structures.
The tag for LIX_FIELD_VMA.
Definition: lixguest.h:66
const LIX_FN_DETOUR gLixHookHandlersx64[]
An array that contains the descriptors about the function that will be hooked (see lixapi...
Definition: lixapi.c:69
struct _LIX_FUNCTION LIX_FUNCTION
Describes a Linux function used by the detour mechanism.
The end of tags.
Definition: lixguest.h:246
The offset of fs_struct.root.
Definition: lixguest.h:257
The offset of linux_binprm.cred.
Definition: lixguest.h:149
The value of sizeof(struct inode).
Definition: lixguest.h:293
CHAR CommPattern[16]
Process name pattern (supports glob patterns). Will be used if there is no path.
Definition: lixguest.h:22
char * PCHAR
Definition: intro_types.h:56
The slack region contains INT3s.
Definition: lixguest.h:105
The guest has an additional table that contains the sizes of the functions/variables.
Definition: lixguest.h:100
The offset of nsproxy.ipc_ns.
Definition: lixguest.h:356
LIX_FUNCTION * Functions
An array of LIX_FUNCTION to be hooked.
Definition: lixguest.h:391
_LIX_FIELD_FS
The index for offsets of &#39;struct fs_struct&#39;.
Definition: lixguest.h:254
DWORD HooksId
What versions of OS are supported by this fields.
Definition: lixguest.h:388
The offset of vm_area_struct.vm_rb.
Definition: lixguest.h:171
The offset of vm_area_struct.file.
Definition: lixguest.h:170
The offset of task_struct.comm.
Definition: lixguest.h:231
The end of tags.
Definition: lixguest.h:311
_LIX_FIELD_MODULE
The index for offsets of &#39;struct module&#39;.
Definition: lixguest.h:115
The offset of alternate stack.
Definition: lixguest.h:245
The offset of sock.sk_family.
Definition: lixguest.h:326
The offset of task_struct.signal.
Definition: lixguest.h:232
The tag for LIX_FIELD_INODE.
Definition: lixguest.h:73
LIST_ENTRY Link
Entry inside the gLixProtectedTasks list.
Definition: lixguest.h:19
uint32_t DWORD
Definition: intro_types.h:49
The offset of task_struct.files.
Definition: lixguest.h:238
The tag for LIX_FIELD_SOCKET.
Definition: lixguest.h:74
The offset of task_struct.thread_struct.sp.
Definition: lixguest.h:244
The guest virtual address of the &#39;struct socket *sock_alloc(void);&#39; function.
Definition: lixguest.h:374
The offset of task_struct.start_time.
Definition: lixguest.h:230
The offset of sock.sk_num.
Definition: lixguest.h:322
QWORD DataEnd
The guest virtual address where the data ends.
Definition: lixguest.h:501
The offset of sock.sk_prot.
Definition: lixguest.h:328
The end of tags.
Definition: lixguest.h:259
_LIX_FIELD_INODE
The index for offsets of &#39;struct inode&#39;.
Definition: lixguest.h:291
The offset of file.f_path.dentry.
Definition: lixguest.h:370
QWORD RoDataEnd
The guest virtual address where the read-only data ends.
Definition: lixguest.h:504
enum _LIX_FIELD_UNGROUPED LIX_FIELD_UNGROUPED
The index for offsets of structures that are not grouped.
The tag for LIX_FIELD_INFO.
Definition: lixguest.h:63
INTSTATUS IntLixTextPokeHandler(void *Detour)
Handles the incoming &#39;text_poke&#39; patches from the guest.
Definition: lixguest.c:1463
The end of tags.
Definition: lixguest.h:107
enum _LIX_FIELD_BINPRM LIX_FIELD_BINPRM
The index for offsets of &#39;struct linux_binprm&#39;.
The offset of mm_struct.end_data.exe_file.
Definition: lixguest.h:206
enum _LIX_FIELD_SOCKET LIX_FIELD_SOCKET
The index for offsets of &#39;struct socket&#39;.
The value of sizeof(struct sock).
Definition: lixguest.h:321
The offset of vm_area_struct.vm_mm.
Definition: lixguest.h:168
The offset of mm_struct.mm_count.
Definition: lixguest.h:199
The value of sizeof(struct cred).
Definition: lixguest.h:341
The offset of dentry.d_name.
Definition: lixguest.h:183
The offset of module.core_layout.
Definition: lixguest.h:133
enum _LIX_FIELD_INODE LIX_FIELD_INODE
The index for offsets of &#39;struct inode&#39;.
enum _LIX_FIELD_DENTRY LIX_FIELD_DENTRY
The index for offsets of &#39;struct dentry&#39;.
Contains information about various Linux structures.
Definition: lixguest.h:386
QWORD Vsyscall
The guest virtual address of the vsyscall.
Definition: lixguest.h:517
DWORD NameHash
Crc32 of the function name.
Definition: lixguest.h:51
The offset of sock.sk_receive_addr.
Definition: lixguest.h:325
The end of tags.
Definition: lixguest.h:331
QWORD Address
The guest virtual address of the detours-code.
Definition: lixguest.h:543
_LIX_FIELD_TASKSTRUCT
The index for offsets of &#39;struct task-struct&#39;.
Definition: lixguest.h:219
The offset of module.state.
Definition: lixguest.h:135
The value of sizeof(struct module).
Definition: lixguest.h:117
void IntLixGuestUninit(void)
Uninitialize the Linux guest.
Definition: lixguest.c:1674
The offset of socket.sk.
Definition: lixguest.h:310
The offset of cred.rcu.
Definition: lixguest.h:343
The offset of vm_area_struct.vm_next.
Definition: lixguest.h:166
enum _LIX_FIELD_TASKSTRUCT LIX_FIELD_TASKSTRUCT
The index for offsets of &#39;struct task-struct&#39;.
_LIX_FIELD_DENTRY
The index for offsets of &#39;struct dentry&#39;.
Definition: lixguest.h:180
The offset of mm_struct.mm_rb.
Definition: lixguest.h:209
The offset of fs_struct.fd.
Definition: lixguest.h:270
QWORD Beta
Flags that were forced to beta mode.
Definition: lixguest.h:34
The tag for LIX_FIELD_FDTABLE.
Definition: lixguest.h:71
QWORD SyscallAddress
The guest virtual address of the syscall.
Definition: lixguest.h:529
_LIX_FIELD_VMA
The index for offsets of &#39;struct vm_area_struct&#39;.
Definition: lixguest.h:162
The offset of module.init_layout.ro_size.
Definition: lixguest.h:131
DWORD Length
The length (bytes) of the detours-code.
Definition: lixguest.h:544
The end of tags.
Definition: lixguest.h:344
The value of sizeof(struct linux_binprm).
Definition: lixguest.h:146
WORD Backport
The backport field of the version string.
Definition: lixguest.h:488
BOOLEAN Cleared
True if the detours-code/data region is cleared.
Definition: lixguest.h:539
The offset of nsproxy.pid_ns_for_children.
Definition: lixguest.h:358
The end of tags.
Definition: lixguest.h:297
_LIX_FIELD_NSPROXY
The index for offsets of &#39;struct nsproxy&#39;.
Definition: lixguest.h:352
Used for &#39;ftrace&#39;.
Definition: lixguest.h:450
The guest has an alternative syscall handler.
Definition: lixguest.h:101
The offset of task_struct.parent.
Definition: lixguest.h:228
enum _LIX_ACTIVE_PATCH_TYPE LIX_ACTIVE_PATCH_TYPE
Describes the type of an Linux active-patch.
Describes a Linux ksym.
Definition: lixguest.h:436
struct _LIX_PROTECTED_PROCESS::@123 Protection
What protection policies should be applied.
DETOUR_TAG
Unique tag used to identify a detour.
Definition: detours.h:119
QWORD Gva
The start of the region which follows to be patched.
Definition: lixguest.h:463
BYTE Version
The version field of the version string.
Definition: lixguest.h:487
char CHAR
Definition: intro_types.h:56
The tag for LIX_FIELD_UNGROUPED.
Definition: lixguest.h:78
QWORD VdsoStart
The guest virtual address where the vDSO starts.
Definition: lixguest.h:519
DWORD CurrentTaskOffset
The offset of the current task from GS.
Definition: lixguest.h:413
The offset of inode.i_mode.
Definition: lixguest.h:294
The tag for LIX_FIELD_CRED.
Definition: lixguest.h:76
BOOLEAN Initialized
True if the guest is initialized.
Definition: lixguest.h:510
The number of entries.
Definition: lixguest.h:453
QWORD ExTableEnd
The guest virtual address where the ex-table ends.
Definition: lixguest.h:507
The tag for LIX_FIELD_TASKSTRUCT.
Definition: lixguest.h:69
QWORD PropperSyscallGva
The guest virtual address of the &#39;real&#39; syscall.
Definition: lixguest.h:530
enum _LIX_FIELD_FS LIX_FIELD_FS
The index for offsets of &#39;struct fs_struct&#39;.
QWORD Flags
Flags that describe the protection mode.
Definition: lixguest.h:23
The offset of module.name.
Definition: lixguest.h:119
struct _LINUX_GUEST LINUX_GUEST
Describes a Linux guest.
The end of tags.
Definition: lixguest.h:378
The offset of sock.sk_v6_daddr.
Definition: lixguest.h:330
struct _LINUX_GUEST * PLINUX_GUEST
The offset of inode.i_gid.
Definition: lixguest.h:296
The offset of linux_binprm.filename.
Definition: lixguest.h:150
Describes a Linux-function to be hooked.
Definition: detours.h:416
The offset of nsproxy.mnt_ns.
Definition: lixguest.h:357