Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 1.x版本的LBE實現聯網權限管理的原理

1.x版本的LBE實現聯網權限管理的原理

編輯:關於Android編程

之前研究了1.x版本的LBE的一些實現安全監控的原理,基本摸清了它實現聯網權限管理的原理,這裡做個簡單記錄。


首先要介紹一下Android應用程序啟動的過程,這方面可以查閱一些相關資料了解詳細信息,我這裡只一筆帶過,例如啟動一個apk的進程,肯定會向system_server發送消息,包括啟動進程的一些參數,其中有一項參數是“--setgroups=xxx,xxx,xxx",後面的xxx都是一些整型的值,就是對應到Android的一些權限定義,其中3003(0xBBB)就是對應的聯網權限了。 www.2cto.com


那麼1.x版本實現的原理就呼之欲出了,hook到system_server進程,攔截sendmsg函數,解析其中的參數,如果是啟動進程的參數,通過uid查詢用戶是否允許該進程聯網,不允許聯網的,就替換setgroups裡面的相關權限,3003替換為9999,之後再交給真正的sendmsg函數去處理,然後你就發現你啟動的進程是沒有聯網權限的了。

 

這種實現方式的弊端也很明顯,不是在hook之後啟動的進程不會受到影響。已經啟動的進程,不能實時修改它的聯網權限。


那麼怎麼樣才能夠解決這些問題呢?


用iptable實現聯網權限管理,google code上有一開源項目droidwall,有興趣的朋友,可以自行研究一下,目前看LBE和360相關功能應該都是與droidwall類似的實現,至於是否是從droidwall學習的,就不得而知了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved