Trees | Indices | Help |
|
---|
|
Checks if the system call table has been altered.
Nested Classes | |
__metaclass__ Automatic Plugin Registration through metaclasses. (Inherited from rekall.plugin.Command) |
|
top_level_class A command can be run from the rekall command line. (Inherited from rekall.plugin.Command) |
Instance Methods | |||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Inherited from |
Class Methods | |||
|
|||
|
|||
|
|||
|
|||
|
|||
|
Class Variables | |
table_header =
hash(x) |
|
PHYSICAL_AS_REQUIRED = True
(Inherited from rekall.plugin.PhysicalASMixin)
|
|
PROFILE_REQUIRED = True
(Inherited from rekall.plugin.ProfileCommand)
|
|
ROW_OPTIONS =
(Inherited from rekall.plugin.TypedProfileCommand)
|
|
classes =
(Inherited from rekall.plugin.Command)
|
|
classes_by_name =
(Inherited from rekall.plugin.Command)
|
|
error_status = None hash(x) (Inherited from rekall.plugin.Command) |
|
interactive = False
(Inherited from rekall.plugin.Command)
|
|
mode =
hash(x) (Inherited from rekall.plugins.linux.common.AbstractLinuxCommandPlugin) |
|
plugin_args = None hash(x) (Inherited from rekall.plugin.ArgsParserMixin) |
|
plugin_feature =
(Inherited from rekall.plugin.Command)
|
|
producer = False
(Inherited from rekall.plugin.Command)
|
|
table_options =
(Inherited from rekall.plugin.TypedProfileCommand)
|
Properties | |
name (Inherited from rekall.plugin.Command) | |
Inherited from |
Method Details |
Calculates the size of the syscall table. Here we need the symbol __NR_syscall_max. We derive it from disassembling the following system calls: - system_call_fastpath function: http://lxr.linux.no/linux+v3.12/arch/x86/kernel/entry_64.S#L620 system_call_fastpath: #if __SYSCALL_MASK == ~0 cmpq $__NR_syscall_max,%rax #else andl $__SYSCALL_MASK,%eax cmpl $__NR_syscall_max,%eax #endif - ret_from_sys_call function (with a small rewind): http://lxr.linux.no/linux+v2.6.26/arch/x86/kernel/entry_64.S#L249 249 cmpq $__NR_syscall_max,%rax 250 ja badsys 251 movq %r10,%rcx 252 call *sys_call_table(,%rax,8) # XXX: rip relative 253 movq %rax,RAX-ARGOFFSET(%rsp) 254 /* 255 * Syscall return path ending with SYSRET (fast path) 256 * Has incomplete stack frame and undefined top of stack. 257 */ 258 ret_from_sys_call: 259 movl $_TIF_ALLWORK_MASK,%edi 260 /* edi: flagmask */ - sysenter_do_call Linux> dis "linux!sysenter_do_call" Address Rel Op Codes Instruction Comment ------- ---------- -------------------- ------------------ ------- ------ linux!sysenter_do_call ------: 0xc12c834d 0xc12c834d 0x0 3d5d010000 CMP EAX, 0x15d 0xc12c8352 0x5 0f8397baffff JAE 0xc12c3def linux!syscall_badsys |
This works by walking the system call table and verifies that each is a symbol in the kernel
|
|
|
Class Variable Details |
table_headerhash(x)
|
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Mon Oct 9 03:28:19 2017 | http://epydoc.sourceforge.net |