В дополнение к перестройке ядра, вы также можете использовать kallsyms_lookup_name , чтобы найти адрес, соответствующий символу
, такой как ниже:
#include <linux/module.h>
#include <linux/mm.h>
#include <linux/kallsyms.h>
MODULE_LICENSE("GPL");
unsigned long (*orig_do_mmap)(struct file *file, unsigned long addr,
unsigned long len, unsigned long prot,
unsigned long flags, vm_flags_t vm_flags,
unsigned long pgoff, unsigned long *populate,
struct list_head *uf);
static int __init hp_km_init(void)
{
orig_do_mmap = (void*)kallsyms_lookup_name("do_mmap");
if (orig_do_mmap == NULL)
return -EINVAL;
orig_do_mmap(0, 0, 0, 0, 0, 0, 0, 0, 0);
return 0;
}
static void __exit hp_km_exit(void)
{
}
module_init(hp_km_init);
module_exit(hp_km_exit);