我正在開發一個安全模塊,我想從可加載內核模塊(LKM)開始一個活動,以便在用戶嘗試訪問某些安全內容時進行用戶驗證。從LKM /內核空間啓動Android Activity
我在Android上工作過,我也在Linux桌面上工作但我不知道如何從Android內核空間啓動一個活動?
我正在開發一個安全模塊,我想從可加載內核模塊(LKM)開始一個活動,以便在用戶嘗試訪問某些安全內容時進行用戶驗證。從LKM /內核空間啓動Android Activity
我在Android上工作過,我也在Linux桌面上工作但我不知道如何從Android內核空間啓動一個活動?
您可以執行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);
請注意,這將是異步的 - 您需要將可能啓動的Activity作爲結果以某種方式返回到內核,以一種不能被冒名頂替者欺騙的方式。通常這可以通過將該Activity的一部分作爲系統代碼或使其在Android內核和用戶空間源中明確定義的另一個特殊UID下運行來完成。 –
您是否能夠修改Android的源? – StarPinkER
我不修改任何Android代碼。我只是做我自己的模塊,我插入使用** insmod **命令,就像我們在Linux中做的那樣 – rami