Rating 3.56 out of 5 (9 ratings in Udemy)
What you'll learn- Basics of Inline Assembly
- Writing examples for Inline Assembly
- Various places where inline assembly is used
- Adding a new system call to kernel
- Updating system call table
- VDSO and Virtual System Calls
DescriptionWhat will you learn from this course?
Basics of Inline Assembly
Types of Inline Assembly: Basic and Extended
GCC Assembly Syntax: AT&T
Constraint strings
Input and output operands
Clobbering
Various use cases of Inline …
Rating 3.56 out of 5 (9 ratings in Udemy)
What you'll learn- Basics of Inline Assembly
- Writing examples for Inline Assembly
- Various places where inline assembly is used
- Adding a new system call to kernel
- Updating system call table
- VDSO and Virtual System Calls
DescriptionWhat will you learn from this course?
Basics of Inline Assembly
Types of Inline Assembly: Basic and Extended
GCC Assembly Syntax: AT&T
Constraint strings
Input and output operands
Clobbering
Various use cases of Inline assembly in Linux kernel: Interrupts, I/O Ports, Atomic operations, CPUID, Control Registers, Timestamp counters etc
Deep understanding of system calls: Various ways of switching from user space to kernel space (int $0x80, sysenter/sysexit, syscall/sysret)
VDSO
Adding a new system call which doesn't accept any arguments
Adding a system call which accept argument
Kernel Symbols and Kernel Symbol table
Writing a kernel module which overwrite the kernel symbol table
Writing a kernel module which sniffs the parameters passed to a system call
Examples covered in this course:
Add two numbers in inline assembly
Add three numbers in inline assembly
Subtract, divide, multiply in inline assembly
Can we disable/enable interrupts in user space
Checking whether interrupts are enabled and disabled in user space
Enabling/Disabling interrupts in user space
Implementing simple locking to avoid race conditions: Lock prefix, compare and exchange instructions
And many