40 { .Required = 1, .Count = 1, .Name = {
"module_alloc"} },
41 { .Required = 1, .Count = 1, .Name = {
"change_page_attr_set_clr"} },
42 { .Required = 1, .Count = 1, .Name = {
"vmalloc"} },
74 { .Required = 1, .Count = 1, .Name = {
"vfree"} },
75 { .Required = 1, .Count = 1, .Name = {
"change_page_attr_set_clr"} },
107 { .Required = 1, .Count = 1, .Name = {
"kthread_create_on_node"} },
108 { .Required = 1, .Count = 1, .Name = {
"wake_up_process"} },
109 { .Required = 1, .Count = 2, .Name = {
"vmalloc_exec",
"__vmalloc_node_range" } },
148 { .Required = 1, .Count = 1, .Name = {
"filp_open"} },
149 { .Required = 1, .Count = 1, .Name = {
"filp_close"} },
150 { .Required = 1, .Count = 2, .Name = {
"kernel_write",
"__kernel_write"} },
151 { .Required = 1, .Count = 1, .Name = {
"vmalloc" } },
152 { .Required = 1, .Count = 1, .Name = {
"vfree" } },
153 { .Required = 1, .Count = 1, .Name = {
"argv_split" } },
154 { .Required = 1, .Count = 1, .Name = {
"argv_free" } },
155 { .Required = 1, .Count = 1, .Name = {
"call_usermodehelper_setup" } },
156 { .Required = 1, .Count = 1, .Name = {
"call_usermodehelper_exec" } },
157 { .Required = 1, .Count = 1, .Name = {
"do_exit" } },
158 { .Required = 1, .Count = 1, .Name = {
"printk" } },
210 { .Required = 1, .Count = 1, .Name = {
"filp_open"} },
211 { .Required = 1, .Count = 1, .Name = {
"filp_close"} },
212 { .Required = 0, .Count = 1, .Name = {
"flush_delayed_fput"} },
213 { .Required = 1, .Count = 2, .Name = {
"kernel_write",
"__kernel_write"} },
214 { .Required = 1, .Count = 1, .Name = {
"vmalloc" } },
215 { .Required = 1, .Count = 1, .Name = {
"vfree" } },
216 { .Required = 1, .Count = 1, .Name = {
"call_usermodehelper_setup" } },
217 { .Required = 1, .Count = 1, .Name = {
"call_usermodehelper_exec" } },
218 { .Required = 1, .Count = 1, .Name = {
"argv_split" } },
219 { .Required = 1, .Count = 1, .Name = {
"argv_free" } },
220 { .Required = 1, .Count = 1, .Name = {
"do_exit" } },
221 { .Required = 0, .Count = 1, .Name = {
"chmod_common" } },
222 { .Required = 1, .Count = 1, .Name = {
"printk" } },
242 { .Required = 1, .Count = 1, .Name = {
"call_usermodehelper_setup" } },
243 { .Required = 1, .Count = 1, .Name = {
"call_usermodehelper_exec" } },
244 { .Required = 1, .Count = 1, .Name = {
"argv_split" } },
245 { .Required = 1, .Count = 1, .Name = {
"argv_free" } },
246 { .Required = 1, .Count = 1, .Name = {
"do_exit" } },
247 { .Required = 1, .Count = 1, .Name = {
"vfree" } },
248 { .Required = 1, .Count = 1, .Name = {
"printk" } },
265 .Count =
ARRAYSIZE(gLixAgentFunctionsDeployFile),
266 .Content = gLixAgentFunctionsDeployFile
272 .Content = &gLixAgentThreadArgsDeployFile
288 .Count =
ARRAYSIZE(gLixAgentFunctionsDeployFileExec),
289 .Content = gLixAgentFunctionsDeployFileExec
295 .Content = &gLixAgentArgsDeployFileExec
311 .Count =
ARRAYSIZE(gLixAgentFunctionsRunCommand),
312 .Content = gLixAgentFunctionsRunCommand
318 .Content = &gLixAgentArgsRunCommand
341 .Count =
ARRAYSIZE(gLixAgentFunctionsInit),
342 .Content = gLixAgentFunctionsInit
348 .Content = &gLixAgentArgsInit
364 .Count =
ARRAYSIZE(gLixAgentFunctionsUninit),
365 .Content = gLixAgentFunctionsUninit
371 .Content = &gLixAgentArgsUninit
387 .Count =
ARRAYSIZE(gLixAgentFunctionsCreateTread),
388 .Content = gLixAgentFunctionsCreateTread
394 .Content = &gLixAgentArgsCreateThread
399 .Count =
ARRAYSIZE(gLixAgentThreadHandlers),
400 .Content = gLixAgentThreadHandlers
419 for (
DWORD index = 0; index <
ARRAYSIZE(gLixAgentHandler); index++)
421 if (gLixAgentHandler[index].Tag == AgentTag)
423 return &gLixAgentHandler[index];
448 if (pHandler == NULL)
LIX_AGENT_UNINIT_ARGS gLixAgentArgsUninit
Describes a handlers that contains the data required by the agent.
QWORD ModuleLength
The module memory allocation size.
char Args[LIX_AGENT_MAX_ARGS_LENGTH]
The command line to be executed.
LIX_AGENT_THREAD_RUN_CLI_ARGS gLixAgentArgsRunCommand
QWORD ModuleAddress
The address of the allocated memory (module).
LIX_AGENT_THREAD_DEPLOY_FILE_ARGS gLixAgentThreadArgsDeployFile
LIX_AGENT_HANDLER * IntLixAgentGetHandlerByTag(LIX_AGENT_TAG AgentTag)
Iterates through all agent handlers and search the entry that has the provided tag.
enum _LIX_AGENT_TAG LIX_AGENT_TAG
Tag used to identify an agent with a handler.
Arguments of the run command-line agent.
unsigned char gLixAgentUninit[]
struct _LIX_AGENT_THREAD_DEPLOY_FILE_EXEC_ARGS::@112 Allocate
LIX_AGENT_FUNCTIONS gLixAgentFunctionsInit[]
Hypercall using INT3 instruction.
LIX_AGENT_FUNCTIONS gLixAgentFunctionsDeployFile[]
Arguments of the exec agent.
Arguments of the deploy-file agent.
QWORD Length
The memory allocation size to deploy the provided content; to deploy the file, we use chunks...
LIX_AGENT_HANDLER gLixAgentThreadHandlers[]
unsigned char gLixAgentInit[]
struct _LIX_AGENT_CREATE_THREAD_ARGS::@108 Allocate
struct _LIX_AGENT_INIT_ARGS::@105 Allocate
LIX_AGENT_CREATE_THREAD_ARGS gLixAgentArgsCreateThread
LIX_AGENT_FUNCTIONS gLixAgentFunctionsCreateTread[]
struct _LIX_AGENT_UNINIT_ARGS::@106 Free
LIX_AGENT_INIT_ARGS gLixAgentArgsInit
LIX_AGENT_FUNCTIONS gLixAgentFunctionsRunCommand[]
QWORD Length
The allocation size of the kthread data.
enum _LIX_AGENT_TAG Tag
The LIX_AGENT_TAG.
LIX_AGENT_HANDLER * IntLixAgentThreadGetHandlerByTag(LIX_AGENT_TAG AgentTag, LIX_AGENT_TAG ThreadTag)
Iterates through all thread-agent handlers and search the entry that has the provided tag...
Arguments of the uninit agent.
unsigned char gLixAgentRun[]
Execute a file (process).
struct _LIX_AGENT_HANDLER::@104 Threads
LIX_AGENT_THREAD_DEPLOY_FILE_EXEC_ARGS gLixAgentArgsDeployFileExec
LIX_AGENT_HANDLER gLixAgentHandler[]
struct _LIX_AGENT_THREAD_DEPLOY_FILE_ARGS::@109 Allocate
void * Content
The content of the arguments.
The functions required by the agent.
Arguments of the create-thread agent.
unsigned char gLixAgentExec[]
DWORD Count
The number of the functions.
LIX_AGENT_FUNCTIONS gLixAgentFunctionsDeployFileExec[]
unsigned char gLixAgentDeploy[]
QWORD Length
The memory allocation size to deploy the provided content; to deploy the file, we use chunks...
struct _LIX_AGENT_THREAD_RUN_CLI_ARGS::@116 Exec
LIX_AGENT_FUNCTIONS gLixAgentFunctionsUninit[]
Arguments of the init agent.