Process 之間的溝通

来源:互联网 发布:淘宝域名注册 编辑:程序博客网 时间:2024/05/17 02:19

1. Purpose

APK A 調用Process P, 並由P啟動 Service S, 並把參數以SystemProperty 的方式傳給 S.


2. Modification

(a) 在 APK A 的 AndroidMenifest.xml 加入 system 的uid.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.fakeclient"
    android:versionCode="1"
    android:versionName="1.0"

    android:sharedUserId="android.uid.system">

這樣啟動 P 後, P同樣具有 system (UID 1000)權限.

(b) 將 啟動Service S 權限設為 system

vi ./device/asus/flo/init.flo.rc

service S /system/bin/S
    user system
    group system,root,shell
    oneshot

這樣 P 才能啟動 S


(c) 在P 的代碼做property_set 動作. property 以 runtime.  開頭, system uid 才可寫入

#include <cutils/properties.h>


int startService(const char* p1, const char* p2){
 
    char value[PROPERTY_VALUE_MAX];
    property_set("runtime.param1", p1 );
    property_set("runtime.param2", p2 );
   
    return property_set("ctl.start", "S");
 
}


(d) 在 S 的代碼 get property

#include <cutils/properties.h>


int main(){

char p1[PROPERTY_VALUE_MAX];

char p2[PROPERTY_VALUE_MAX];

property_get("runtime.param1", p1, "");
property_get("runtime.param2", p2, "");

}

0 0
原创粉丝点击