This commit is contained in:
Ciro Santilli
2017-06-21 11:32:12 +01:00
parent f5130eeb5f
commit cdd0535227
3 changed files with 31 additions and 1 deletions

View File

@@ -1,6 +1,6 @@
# Linux Kernel Module Cheat # Linux Kernel Module Cheat
Run one command, get into QEMU Buildroot BusyBox virtual machine with several minimal Linux kernel 4.9 module example tutorials with GDB and KGDB debug. Tested in x86 and ARM guests, Ubuntu 14.04 - 16.10 hosts. Run one command, get into QEMU Buildroot BusyBox virtual machine with several minimal Linux kernel 4.9 module development example tutorials with GDB and KGDB debug. Tested in x86 and ARM guests, Ubuntu 14.04 - 16.10 hosts.
![](screenshot.png) ![](screenshot.png)
@@ -345,6 +345,7 @@ You can still send key presses to QEMU however even without the mouse capture, j
1. [Introduction](introduction.md) 1. [Introduction](introduction.md)
1. [Build](build.md) 1. [Build](build.md)
1. [kmod](kmod.md) 1. [kmod](kmod.md)
1. [vermagic](vermagic.md)
1. [Bibliography](bibliography.md) 1. [Bibliography](bibliography.md)
1. Examples 1. Examples
1. [Host](host/) 1. [Host](host/)

View File

@@ -2,6 +2,8 @@
/poll.sh /poll.sh
Outcome: user echoes jiffies every second. Outcome: user echoes jiffies every second.
https://stackoverflow.com/questions/30035776/how-to-add-poll-function-to-the-kernel-module-code/44645336#44645336
*/ */
#include <asm/uaccess.h> /* copy_from_user, copy_to_user */ #include <asm/uaccess.h> /* copy_from_user, copy_to_user */

27
vermagic.md Normal file
View File

@@ -0,0 +1,27 @@
# vermagic
If the module does not match that of the kernel, `insmod` is unhappy and fails.
Get it from kernel module:
modinfo mymod.ko
Override it on module source:
MODULE_INFO(vermagic, "newver");
On the Linux kernel 4.9.6, it is defined under `include/linux/vermagic.h`:
#define VERMAGIC_STRING \
UTS_RELEASE " " \
MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
MODULE_ARCH_VERMAGIC
TODO can you get it from running kernel from userland? <https://lists.kernelnewbies.org/pipermail/kernelnewbies/2012-October/006306.html>
Desktop `modprobe` has a flag to skip the check:
`--force-modversion`
Looks like it just strips `modversion` information from the module, and then the kernel skips the check.