Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从LKM/内核空间启动Android活动_Java_Android_C_Linux_Linux Kernel - Fatal编程技术网

Java 从LKM/内核空间启动Android活动

Java 从LKM/内核空间启动Android活动,java,android,c,linux,linux-kernel,Java,Android,C,Linux,Linux Kernel,我正在开发一个安全模块,我想从可加载内核模块(LKM)启动一个活动,用于在用户尝试访问某些安全内容时对其进行身份验证 我在Android上工作过,也在Linux桌面上工作过,但我不知道如何从Android的内核空间启动活动?您可以从lkm的/system/bin中执行“am”可执行文件(活动管理器) adb shell am start -a android.intent.action.MAIN -n com.android.mms/.ui.ConversationList 从lkm内部执行此

我正在开发一个安全模块,我想从可加载内核模块(LKM)启动一个活动,用于在用户尝试访问某些安全内容时对其进行身份验证


我在Android上工作过,也在Linux桌面上工作过,但我不知道如何从Android的内核空间启动活动?

您可以从lkm的/system/bin中执行“am”可执行文件(活动管理器)

adb shell am start -a android.intent.action.MAIN -n com.android.mms/.ui.ConversationList
从lkm内部执行此操作的方法是使用内核函数“call\u usermodehelper”

例如:

#include <linux/kmod.h>

char *argv[] = { "/system/bin/am", "start", "-a", "android.intent.action.MAIN",  
"-n", "com.android.mms/.ui.ConversationList",  NULL};

static char *envp[] =  { 
  "HOME=/", 
  "PATH=/sbin:/system/sbin:/system/bin:/system/xbin", NULL };

call_usermodehelper (argv[0], argv, envp, 1);
#包括
char*argv[]={/system/bin/am”、“开始”、“a”、“android.intent.action.MAIN”,
“-n”,“com.android.mms/.ui.ConversationList”,NULL};
静态字符*envp[]={
“HOME=/”,
“路径=/sbin:/system/sbin:/system/bin:/system/xbin”,NULL};
调用_usermodehelper(argv[0],argv,envp,1);

您可以修改Android源代码吗?我不会修改任何Android代码。我只是在制作我自己的模块,我使用insmod命令插入它,就像我们在LinuxNote中所做的那样。注意,这将是异步的——您需要让活动以某种方式启动,然后以一种不会被冒名顶替者欺骗的方式发信号回内核。通常,这可以通过将该活动作为系统代码的一部分来完成,或者让它在Android内核和用户空间源中明确定义的另一个特殊UID下运行。