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 {
107 
108 
113 typedef enum _LIX_FIELD_MODULE
114 {
136 
137 
142 typedef enum _LIX_FIELD_BINPRM
143 {
154 
155 
160 typedef enum _LIX_FIELD_VMA
161 {
171 } LIX_FIELD_VMA;
172 
173 
178 typedef enum _LIX_FIELD_DENTRY
179 {
186 
187 
193 {
210 
211 
217 {
245 
246 
251 typedef enum _LIX_FIELD_FS
252 {
257 } LIX_FIELD_FS;
258 
259 
264 typedef enum _LIX_FIELD_FDTABLE
265 {
270 
271 
276 typedef enum _LIX_FIELD_FILES
277 {
282 
283 
288 typedef enum _LIX_FIELD_INODE
289 {
296 
297 
302 typedef enum _LIX_FIELD_SOCKET
303 {
310 
311 
316 typedef enum _LIX_FIELD_SOCK
317 {
330 
331 
336 typedef enum _LIX_FIELD_CRED
337 {
343 
344 
349 typedef enum _LIX_FIELD_NSPROXY
350 {
359 
360 
366 {
377 
378 
383 typedef struct _LIX_OPAQUE_FIELDS
384 {
386 
389 
390  struct
391  {
408  } OpaqueFields;
409 
413 
415 
416 
426 #define LIX_FIELD(Structure, Field) gLixGuest->OsSpecificFields.OpaqueFields.Structure[lixField##Structure##Field]
427 
428 
433 typedef struct _LIX_SYMBOL
434 {
438 
439 
445 {
449 
452 
453 
458 typedef struct _LIX_ACTIVE_PATCH
459 {
462  BYTE Data[32];
463 
465  DETOUR_TAG DetourTag;
468 
469 
473 typedef struct _LINUX_GUEST
474 {
476  union
477  {
479 
480  struct
481  {
486  };
487  } Version;
488 
489  CHAR VersionString[MAX_VERSION_LENGTH];
490 
491  // WARNING: These may not be page aligned!
492  struct
493  {
496 
499 
502 
505  } Layout;
506 
508 
510  LIX_SYMBOL MemoryFunctions[5];
511 
512  struct
513  {
515 
518 
521  } Vdso;
522 
525 
528 
530 
531  struct
532  {
533  struct
534  {
537 
538  struct
539  {
542 
543  void *HookObject;
544  } Code;
545 
546  struct
547  {
548  QWORD Address;
549  DWORD Length;
550 
551  void *HookObject;
552  } Data;
553  } Detour;
554 
555  struct
556  {
558  BOOLEAN Cleared;
559 
560  QWORD Address;
561  DWORD Length;
562 
563 
564  void *HookObject;
565  } Agent;
566 
567  struct
568  {
571  } PerCpuData;
572 
574  } MmAlloc;
575 
578 
582 #define LIX_SYMBOL_NAME_LEN 128
583 
584 
589 #define LIX_GET_VERSION(Version) ((Version) >> 24)
590 #define LIX_GET_PATCH(Version) (((Version) & 0x00ff0000) >> 16)
591 #define LIX_GET_SUBLEVEL(Version) (((Version) & 0x0000ffff))
592 
593 #define LIX_CREATE_VERSION(K, Patch, Sublevel) ((Sublevel) | ((Patch) << 16) | ((K) << 24))
594 
599 extern const LIX_FN_DETOUR gLixHookHandlersx64[];
600 
601 INTSTATUS
603  _In_ void *Detour
604  );
605 
606 INTSTATUS
608  _In_ void *Detour
609  );
610 
611 INTSTATUS
613  _In_ void *Detour
614  );
615 
616 INTSTATUS
618  _In_ QWORD SyscallGva
619  );
620 
621 INTSTATUS
623  void
624  );
625 
626 void
628  void
629  );
630 
631 int
633  void
634  );
635 
636 void
638  void
639  );
640 
641 BOOLEAN
643  void
644  );
645 
646 INTSTATUS
648  _In_ DWORD FullStringSize,
649  _In_ DWORD VersionStringSize,
650  _Out_ CHAR *FullString,
651  _Out_ CHAR *VersionString
652  );
653 
654 #endif
INTSTATUS IntLixGuestNew(void)
Starts the initialization and enable protection for a new Linux guest.
Definition: lixguest.c:2620
The offset of proto.name.
Definition: lixguest.h:368
The offset of task_struct.pid.
Definition: lixguest.h:222
The guest has is build with VSYSCALL support.
Definition: lixguest.h:103
DWORD CurrentCpuOffset
The offset of the CPU from GS.
Definition: lixguest.h:411
The offset of cred.usage.
Definition: lixguest.h:339
LIX_OPAQUE_FIELDS OsSpecificFields
OS-dependent and specific information.
Definition: lixguest.h:576
Describes a Linux function used by the detour mechanism.
Definition: lixguest.h:49
The offset of task_struct.nsproxy.
Definition: lixguest.h:236
#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:1031
#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:201
Describes the information about a Linux active-patch.
Definition: lixguest.h:458
The offset of module.init.
Definition: lixguest.h:122
The offset of task_struct.group_leader.
Definition: lixguest.h:237
The tag for LIX_FIELD_MMSTRUCT.
Definition: lixguest.h:68
The offset of vm_area_struct.vm_start.
Definition: lixguest.h:162
QWORD OriginalPagesAttr
The original page protection-attributes for the allocated region.
Definition: lixguest.h:573
The offset of linux_binprm.argc.
Definition: lixguest.h:151
QWORD End
The end guest virtual address of ksym (exclusive).
Definition: lixguest.h:436
INTSTATUS IntGetVersionStringLinux(DWORD FullStringSize, DWORD VersionStringSize, CHAR *FullString, CHAR *VersionString)
Gets the version string for a Linux guest.
Definition: lixguest.c:2779
uint8_t BYTE
Definition: intro_types.h:47
The offset of task_struct.thread_node.
Definition: lixguest.h:231
The offset of linux_binprm.file.
Definition: lixguest.h:146
The offset of module.init_layout.
Definition: lixguest.h:132
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:356
The offset of mm_struct.start_code.
Definition: lixguest.h:198
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:483
INTSTATUS IntLixFtraceHandler(void *Detour)
Handles the incoming &#39;text_poke&#39; patches from the guest.
Definition: lixguest.c:1480
The value of sizeof(struct fs_struct).
Definition: lixguest.h:253
BOOLEAN SkipOnBoot
Unused.
Definition: lixguest.h:53
The offset of fdtable.max_fds.
Definition: lixguest.h:266
The offset of task_struct.execve.
Definition: lixguest.h:240
uint16_t WORD
Definition: intro_types.h:48
The value of the system_state.RUNNING.
Definition: lixguest.h:372
The offset of module.init_layout.
Definition: lixguest.h:123
The offset of task_struct.exit_code.
Definition: lixguest.h:230
_LIX_FIELD_SOCKET
The index for offsets of &#39;struct socket&#39;.
Definition: lixguest.h:302
struct _LIX_PROTECTED_PROCESS * PLIX_PROTECTED_PROCESS
The offset of inode.i_uid.
Definition: lixguest.h:292
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:264
The offset of task_struct.usage.
Definition: lixguest.h:219
The offset of mm_struct.flags.
Definition: lixguest.h:202
QWORD Start
The start guest virtual address of ksym.
Definition: lixguest.h:435
The end of tags.
Definition: lixguest.h:79
QWORD RoDataStart
The guest virtual address where the read-only data starts.
Definition: lixguest.h:500
The offset of task_struct.mm.
Definition: lixguest.h:226
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:207
struct _LIX_OPAQUE_FIELDS * PLIX_OPAQUE_FIELDS
The end of tags.
Definition: lixguest.h:184
DWORD FunctionsCount
The number of function to be hooked.
Definition: lixguest.h:387
The end of tags.
Definition: lixguest.h:208
BOOLEAN IsDetour
Definition: lixguest.h:464
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:119
The offset of vm_area_struct.flags.
Definition: lixguest.h:167
The offset of sock.sk_dport.
Definition: lixguest.h:320
void * InitProcessObj
The LIX_TASK_OBJECT of the &#39;init&#39; process.
Definition: lixguest.h:529
The offset of signal_struct.nr_threads.
Definition: lixguest.h:374
The end of tags.
Definition: lixguest.h:280
The tag for LIX_FIELD_FILES.
Definition: lixguest.h:72
WORD Length
The patch length.
Definition: lixguest.h:461
QWORD Vdso32Start
The guest virtual address where the vDSO x32 starts.
Definition: lixguest.h:519
The offset of task_struct.cred.
Definition: lixguest.h:233
The offset of task_struct.tgid.
Definition: lixguest.h:223
The offset of fs_struct.fdt.
Definition: lixguest.h:279
The end of tags.
Definition: lixguest.h:268
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:150
The offset of socket.type.
Definition: lixguest.h:305
The offset of mm_struct.end_code.
Definition: lixguest.h:199
The end of tags.
Definition: lixguest.h:357
The offset of mm_struct.start_data.
Definition: lixguest.h:200
int INTSTATUS
The status data type.
Definition: introstatus.h:24
QWORD Vdso32End
The guest virtual address where the vDSO x32 end.
Definition: lixguest.h:520
The offset of fs_struct.pwd.
Definition: lixguest.h:255
QWORD CodeEnd
The guest virtual address where the code ends.
Definition: lixguest.h:495
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:336
QWORD CodeStart
The guest virtual address where the code starts.
Definition: lixguest.h:494
_LIX_FIELD_UNGROUPED
The index for offsets of structures that are not grouped.
Definition: lixguest.h:365
The offset of linux_binprm.interp.
Definition: lixguest.h:149
int IntLixGuestGetSystemState(void)
Get the system state of the Linux guest.
Definition: lixguest.c:2254
The offset of task_struct.in_execve.
Definition: lixguest.h:239
The offset of task_struct.stack.
Definition: lixguest.h:218
The offset of task_struct.thread_group.
Definition: lixguest.h:232
QWORD PerCpuAddress
The guest virtual address of the &#39;per-cpu&#39; allocated region.
Definition: lixguest.h:569
The value of sizeof(struct files_struct).
Definition: lixguest.h:278
DWORD ThreadStructOffset
The offset of the thread_struct from task_struct.
Definition: lixguest.h:412
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:145
The offset of task_struct.exit_signal.
Definition: lixguest.h:238
_LIX_FIELD_FILES
The index for offsets of &#39;struct files_struct&#39;.
Definition: lixguest.h:276
The offset of sock.sk_v6_daddr.
Definition: lixguest.h:326
The offset of module.core_layout.size.
Definition: lixguest.h:126
The offset of module.init_layout.size.
Definition: lixguest.h:125
The size of a thread.
Definition: lixguest.h:89
The tag for LIX_FIELD_SOCK.
Definition: lixguest.h:75
struct _LIX_PROTECTED_PROCESS::@120 Protection
What protection policies should be applied.
The offset of module.core_layout.text_size.
Definition: lixguest.h:128
INTSTATUS IntLixJumpLabelHandler(void *Detour)
Handles the incoming read (arch_jmp_label_transform) from the guest.
Definition: lixguest.c:1496
The offset of module.init_layout.text_size.
Definition: lixguest.h:127
The offset of module.list.
Definition: lixguest.h:116
The offset of mm_struct.pgd.
Definition: lixguest.h:194
Encapsulates a protected Linux process.
Definition: lixguest.h:17
The offset of sock.sk_daddr.
Definition: lixguest.h:321
_LIX_FIELD_BINPRM
The index for offsets of &#39;struct linux_binprm&#39;.
Definition: lixguest.h:142
void IntLixGuestUninitGuestCode(void)
Removes the EPT hooks from detours/agents memory zone and clears these memory zones.
Definition: lixguest.c:2577
The guest has module layout.
Definition: lixguest.h:90
The offset of mm_struct.mm_users.
Definition: lixguest.h:195
struct _LIX_SYMBOL * PLIX_SYMBOL
The offset of vm_area_struct.vm_end.
Definition: lixguest.h:163
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:324
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:570
The offset of dentry.d_parent.
Definition: lixguest.h:180
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:2291
The offset of mm_struct.mmlist.
Definition: lixguest.h:197
QWORD Feedback
Flags that will be forced to feedback only mode.
Definition: lixguest.h:35
The offset of socket.state.
Definition: lixguest.h:304
QWORD ExTableStart
The guest virtual address where the ex-table starts.
Definition: lixguest.h:503
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:134
The offset of mm_struct.start_stack.
Definition: lixguest.h:205
Used for &#39;arch_jump_label_transform&#39;.
Definition: lixguest.h:448
enum _LIX_FIELD_NSPROXY LIX_FIELD_NSPROXY
The index for offsets of &#39;struct nsproxy&#39;.
The end of tags.
Definition: lixguest.h:152
The offset of vm_area_struct.vm_prev.
Definition: lixguest.h:165
The offset of module.core_layout.ro_size.
Definition: lixguest.h:130
QWORD Current
The currently used protection flags.
Definition: lixguest.h:32
The offset of task_struct.fs.
Definition: lixguest.h:234
The offset of mm_struct.mmap.
Definition: lixguest.h:204
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:497
_LIX_ACTIVE_PATCH_TYPE
Describes the type of an Linux active-patch.
Definition: lixguest.h:444
The offset of nsproxy.count.
Definition: lixguest.h:351
The offset of module.core_layout.
Definition: lixguest.h:124
The offset of nsproxy.uts_ns.
Definition: lixguest.h:352
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:446
The offset of dentry.d_iname.
Definition: lixguest.h:182
_LIX_FIELD_MMSTRUCT
The index for offsets of &#39;struct mm_struct&#39;.
Definition: lixguest.h:192
The offset of module.symbols.
Definition: lixguest.h:118
DWORD Value
The Linux full version number.
Definition: lixguest.h:478
The offset of task_struct.flags.
Definition: lixguest.h:220
QWORD Original
The original protection flags as received from integrator.
Definition: lixguest.h:31
The offset of file.f_path.
Definition: lixguest.h:373
Describes a Linux guest.
Definition: lixguest.h:473
unsigned long long QWORD
Definition: intro_types.h:53
The offset of socket.flags.
Definition: lixguest.h:306
The offset of dentry.d_inode.
Definition: lixguest.h:183
QWORD VsysCall
The guest virtual address of the vsyscall.
Definition: lixguest.h:514
The offset of module.num_gpl_syms.
Definition: lixguest.h:121
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:543
_LIX_FIELD_SOCK
The index for offsets of &#39;struct sock&#39;.
Definition: lixguest.h:316
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:224
The offset of module.gpl_syms.
Definition: lixguest.h:120
enum _LIX_FIELD_INFO LIX_FIELD_INFO
Describes information about a Linux guest.
The end of tags.
Definition: lixguest.h:170
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:221
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:517
WORD Sublevel
The sublevel field of the version string.
Definition: lixguest.h:482
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:243
The offset of fs_struct.root.
Definition: lixguest.h:254
The offset of linux_binprm.cred.
Definition: lixguest.h:147
The value of sizeof(struct inode).
Definition: lixguest.h:290
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 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:353
LIX_FUNCTION * Functions
An array of LIX_FUNCTION to be hooked.
Definition: lixguest.h:388
_LIX_FIELD_FS
The index for offsets of &#39;struct fs_struct&#39;.
Definition: lixguest.h:251
DWORD HooksId
What versions of OS are supported by this fields.
Definition: lixguest.h:385
The offset of vm_area_struct.vm_rb.
Definition: lixguest.h:169
The offset of vm_area_struct.file.
Definition: lixguest.h:168
The offset of task_struct.comm.
Definition: lixguest.h:228
The end of tags.
Definition: lixguest.h:308
_LIX_FIELD_MODULE
The index for offsets of &#39;struct module&#39;.
Definition: lixguest.h:113
The offset of alternate stack.
Definition: lixguest.h:242
The offset of sock.sk_family.
Definition: lixguest.h:323
The offset of task_struct.signal.
Definition: lixguest.h:229
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:235
The tag for LIX_FIELD_SOCKET.
Definition: lixguest.h:74
The offset of task_struct.thread_struct.sp.
Definition: lixguest.h:241
The guest virtual address of the &#39;struct socket *sock_alloc(void);&#39; function.
Definition: lixguest.h:371
The offset of task_struct.start_time.
Definition: lixguest.h:227
The offset of sock.sk_num.
Definition: lixguest.h:319
QWORD DataEnd
The guest virtual address where the data ends.
Definition: lixguest.h:498
The offset of sock.sk_prot.
Definition: lixguest.h:325
The end of tags.
Definition: lixguest.h:256
_LIX_FIELD_INODE
The index for offsets of &#39;struct inode&#39;.
Definition: lixguest.h:288
The offset of file.f_path.dentry.
Definition: lixguest.h:367
QWORD RoDataEnd
The guest virtual address where the read-only data ends.
Definition: lixguest.h:501
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:1462
The end of tags.
Definition: lixguest.h:105
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:203
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:318
The offset of vm_area_struct.vm_mm.
Definition: lixguest.h:166
The offset of mm_struct.mm_count.
Definition: lixguest.h:196
The value of sizeof(struct cred).
Definition: lixguest.h:338
The offset of dentry.d_name.
Definition: lixguest.h:181
The offset of module.core_layout.
Definition: lixguest.h:131
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:383
DWORD NameHash
Crc32 of the function name.
Definition: lixguest.h:51
The offset of sock.sk_receive_addr.
Definition: lixguest.h:322
The end of tags.
Definition: lixguest.h:328
QWORD Address
The guest virtual address of the detours-code.
Definition: lixguest.h:540
_LIX_FIELD_TASKSTRUCT
The index for offsets of &#39;struct task-struct&#39;.
Definition: lixguest.h:216
The offset of module.state.
Definition: lixguest.h:133
The value of sizeof(struct module).
Definition: lixguest.h:115
void IntLixGuestUninit(void)
Uninitialize the Linux guest.
Definition: lixguest.c:1673
The offset of socket.sk.
Definition: lixguest.h:307
The offset of cred.rcu.
Definition: lixguest.h:340
The offset of vm_area_struct.vm_next.
Definition: lixguest.h:164
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:178
The offset of mm_struct.mm_rb.
Definition: lixguest.h:206
The offset of fs_struct.fd.
Definition: lixguest.h:267
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:526
_LIX_FIELD_VMA
The index for offsets of &#39;struct vm_area_struct&#39;.
Definition: lixguest.h:160
The offset of module.init_layout.ro_size.
Definition: lixguest.h:129
DWORD Length
The length (bytes) of the detours-code.
Definition: lixguest.h:541
The end of tags.
Definition: lixguest.h:341
The value of sizeof(struct linux_binprm).
Definition: lixguest.h:144
WORD Backport
The backport field of the version string.
Definition: lixguest.h:485
BOOLEAN Cleared
True if the detours-code/data region is cleared.
Definition: lixguest.h:536
The offset of nsproxy.pid_ns_for_children.
Definition: lixguest.h:355
The end of tags.
Definition: lixguest.h:294
_LIX_FIELD_NSPROXY
The index for offsets of &#39;struct nsproxy&#39;.
Definition: lixguest.h:349
Used for &#39;ftrace&#39;.
Definition: lixguest.h:447
The guest has an alternative syscall handler.
Definition: lixguest.h:101
The offset of task_struct.parent.
Definition: lixguest.h:225
enum _LIX_ACTIVE_PATCH_TYPE LIX_ACTIVE_PATCH_TYPE
Describes the type of an Linux active-patch.
Describes a Linux ksym.
Definition: lixguest.h:433
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:460
BYTE Version
The version field of the version string.
Definition: lixguest.h:484
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:516
DWORD CurrentTaskOffset
The offset of the current task from GS.
Definition: lixguest.h:410
The offset of inode.i_mode.
Definition: lixguest.h:291
The tag for LIX_FIELD_CRED.
Definition: lixguest.h:76
BOOLEAN Initialized
True if the guest is initialized.
Definition: lixguest.h:507
The number of entries.
Definition: lixguest.h:450
QWORD ExTableEnd
The guest virtual address where the ex-table ends.
Definition: lixguest.h:504
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:527
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:117
struct _LINUX_GUEST LINUX_GUEST
Describes a Linux guest.
The end of tags.
Definition: lixguest.h:375
The offset of sock.sk_v6_daddr.
Definition: lixguest.h:327
struct _LINUX_GUEST * PLINUX_GUEST
The offset of inode.i_gid.
Definition: lixguest.h:293
The offset of linux_binprm.filename.
Definition: lixguest.h:148
Describes a Linux-function to be hooked.
Definition: detours.h:412
The offset of nsproxy.mnt_ns.
Definition: lixguest.h:354