我尝试在 Android 4.4.4 中挂钩 sys_call,内核版本为 3.4。我使用 LKM 来完成。首先,我尝试挂钩 sys_write 以获取发送短信或拨号行为。这是我的挂钩 sys_write 代码。
asmlinkage int hack_sys_write(unsigned int fd,char *buf,int count){
if(strstr(buf,"AT+CMGS")||strstr(buf,"ATD"))
{
printk("buf is %s\n",k_buf);
// the result is AT+CMGS=NUMBER(not tel number,just like 18,14..)
}
return original_call_write(fd,buf,count);
}
实际上,我可以在发送短信或拨打号码时捕获信息,但无法获取有关短信内容的详细信息。(有趣的是,当我拨号时,printk 是 ADT=Tel 号码,为什么...?) urm.. .然后我尝试在收到短信或电话时挂钩 sys_read 以捕获信息,但结果为空。这是我的挂钩 sys_read 代码:
asmlinkage int hack_sys_read(unsigned int fd, char *buf, int count){
if(strstr(buf,"AT+CLCC")||strstr(buf,"AT+CMGR"))
{
printk("something is read aha %s\n", buf);
}
return original_call_read(fd,buf,count);
}
无法捕获关键字“AT+CLCC”或“AT+CMGR”,结果什么都没有。所以,为什么我无法获取信息以及如何解决?请帮助我,谢谢。