2013-02-06 41 views
0

我正在開發一個安全模塊,我想從可加載內核模塊(LKM)開始一個活動,以便在用戶嘗試訪問某些安全內容時進行用戶驗證。從LKM /內核空間啓動Android Activity

我在Android上工作過,我也在Linux桌面上工作但我不知道如何從Android內核空間啓動一個活動?

+0

您是否能夠修改Android的源? – StarPinkER

+0

我不修改任何Android代碼。我只是做我自己的模塊,我插入使用** insmod **命令,就像我們在Linux中做的那樣 – rami

回答

1

您可以執行lkm中/ system/bin中的'am'可執行文件(活動管理器)。

adb shell am start -a android.intent.action.MAIN -n com.android.mms/.ui.ConversationList 

從LKM內做到這一點的方法是使用內核函數 'call_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); 
+0

請注意,這將是異步的 - 您需要將可能啓動的Activity作爲結果以某種方式返回到內核,以一種不能被冒名頂替者欺騙的方式。通常這可以通過將該Activity的一部分作爲系統代碼或使其在Android內核和用戶空間源中明確定義的另一個特殊UID下運行來完成。 –