Android程式的安全系統

2021-06-13 12:33:14 字數 1406 閱讀 2274

最近在移植android過程中遇到了android程式(apk)許可權的問題。最近也對這方面進行了一些了解,在此和大家分享。

android框架是基於linux核心構建,所以android安全系統也是基於linux的安全架構建立的。在linux安全系統中,使用者和組起著重要的作用,linux中所有的資源給不同的使用者和使用者組設定了不同的訪問屬性。如果你對linux下面使用者和組的概念不熟悉,請先補習一下linux基礎知識。

在android系統中,系統為每乙個應用程式(apk)建立了乙個使用者和組。這個使用者和組都是受限使用者,不能訪問系統的資料,只能訪問自己的檔案和目錄,當然它也不能訪問其他應用程式的資料。這樣設計可以盡可能地保護應用程式的私有資料,增強系統的安全性和健壯性。

但是有一些應用程式是需要訪問一些系統資源的。比如setting程式,他就需要訪問wiffi,在系統中建立刪除檔案等等操作。怎樣做到這一點兒呢?android通過一定途徑可以獲得system許可權。獲得system使用者許可權,需要以下步驟:

1. 在應用程式的androidmanifest.xml中的manifest節點中加入android:shareduserid="android.uid.system"這個屬性。

2. 修改android.mk檔案,加入local_certificate := platform這一行

3. 使用mm命令來編譯,生成的apk就有修改系統時間的許可權了。

一般情況下system使用者許可權就已經夠用了,system使用者可以在系統中建立和刪除檔案,訪問裝置等等。但是有些情況下system許可權還是不夠的。比如:設定網絡卡ip位址,ifconfig命令是需要root許可權的。我可以很肯定的說,在android下面應用程式是沒有可能拿到root許可權的。但是如果我的應用程式需要root許可權怎麼辦呢?只能想辦法繞般過去。就以我的問題為例,設定網絡卡ip位址,root許可權下面命令為:

ifconfig eth0 192.168.1.188

在普通使用者或者system使用者許可權下面這條命令是不起作用的,但是不會返回失敗和異常,這個我個人認為是android的bug。那麼怎樣實現這個功能呢?我想出了兩個辦法。

1、系統啟動的時候init程序建立乙個後台程序,該程序處於root使用者許可權下面。用來監聽系統中應用程式的請求(可以用socket實現),並代其完成。這樣應用程式就可以執行root使用者許可權的任務了。

2、實現乙個虛擬的裝置,該裝置的功能就是在核心態幫應用程式執行相應的命令。linux核心態沒有許可權的問題了。肯定可以執行成功。

我解決設定網絡卡ip位址問題時,選擇是後者。相對來說設計比較簡單。

如果你到網上去搜一下,你會發現很多文章說怎樣讓android應用程式獲得root許可權。如果你不想浪費時間就不要相信他們,因為那些途徑是根本不可能獲得root許可權的。

我的後續博文《

android應用程式獲得root許可權

主動安全系統

主動安全系統,指的是包括abs esp等電子裝置的安全系統。被動安全系統涉及車體吸能結構 安全帶 安全氣囊等。其中,主動安全系統,最典型的是主動剎車系統。有資料統計表明,75 的追尾事故都發生在大約30km h的速度下,而volvo的這項 城市安全 系統,則正是這些事故的克星。當車輛的速度達到30k...

Acegi安全系統介紹

acegi是spring framework 下最成熟的安全系統,它提供了強大靈活的企業級安全服務,如完善的認證和授權機制,http資源訪問控制,method 呼叫訪問控制,access control list acl 基於物件例項的訪問控制,yale central authentication...

資訊保安系統的組織管理

電子政務資訊保安的組織管理 電子政務資訊系統的安全組織管理必須與現有的組織結構特點和資訊系統特點相適應。以層級和縱向級的組織結構於資訊化結合的結構 企業資訊化資訊保安的組織管理 以層級組織結構與資訊化結合的結構 安全管理制度 安全管理制度是資訊系統安全的制度化保證,是資訊保安管理的重要內容。以下11...