Android 中用内核模块实现系统调用(Implement system call by kernel module in Android)

2014-11-24 01:09:10 · 作者: · 浏览: 5

在System.map中找到sys_call_table的地址,然后后用如下代码直接进行系统调用:


#include
#include
#include
#include
#include
#include
#include
#include


#define __NR_memboundary 378
#define SYS_CALL_TB 0xc000e5a8 //sys_call_table地址


unsigned long *sys_call_table = (unsigned long*)SYS_CALL_TB;


asmlinkage long sys_memboundary(void){
printk(KERN_ALERT"===============The syscall print out!!!!\n");
return 0;
}


int __init init_addsyscall(void)
{
// sys_call_table = (unsigned long *)sys_call_table_address;
sys_call_table[__NR_memboundary] = (unsigned long)sys_memboundary;
printk("@@@@@@@System call module loaded\n");
return 0;
}


void __exit exit_addsyscall(void)
{
printk("@@@@@@@System call unlodaded\n");
}


module_init(init_addsyscall);
module_exit(exit_addsyscall);
MODULE_LICENSE("GPL");
~