Android智能行動電話通訊防火牆開發的經驗心得

來源:互聯網
上載者:User

 

首屆 Google 暑期大學生部落格分享大賽——2010 Andriod 篇 Android智能行動電話通訊防火牆開發的經驗心得

這篇部落客要講述我實現一款Android手機上網防火牆的一個經驗心得分享。

背景介紹:

Android平台作為新興的智能手機平台吸引了眾多開發人員和使用者的目光。隨著智能手機和移動互連網的普及,Android平台將有一個光明的未來。相對於PC安全而言,由於私密性更強,手機安全隱患對使用者的威脅更大,來自手機的危害給使用者造成的損失也更大。手機流氓軟體、手機駭客、自動撥打到電話發短多媒體訊息等系列手機安全問題而導致的無故花費支出和其他形式的損失已經成為了家常便飯。隨著WAP手機技術的日趨成熟,接入互連網輕鬆獲得大量的資訊已成為未來手機發展的必然趨勢。由於通過網路直接對WAP手機進行攻擊比對GSM手機進行攻擊更加簡便易行,WAP 手機已經成為電腦駭客攻擊的重要對象。擁有一款手機連網防火牆,則可以免除使用者因為擔心手機上網安全而帶來的諸多煩惱。

 

我開發的內容:

我開發的手機防火牆軟體就是基於該平台,實現設定應用程式上網規則,屏蔽和允許程式上網,設定黑白名單,統計上網流量,擷取上網流量日誌以及顯示網路狀態。基於Android的手機防火牆系統包括基於Iptables解決方案的防火牆模組以及基於linux dev資訊解決方案的流量統計模組,兩個模組分別完成iptable規則的設定和dev資訊的讀取以及日誌的維護。系統採用java語言在Eclipse IDE+Jdk+Adt+Android SDK 上調試並在模擬器和真機上實現。能很好的滿足使用者上網防火牆和流量統計功能。

 

整個應用程式的需求分析:

整個應用程式需要實現一個手機防火牆, 能夠對手機的網路通訊進行監控,及時攔截惡意程式的連網操作,以免目標手機遭受攻擊;使用者可以自由地設定連網程式的信任程式和不信任程式列表,使得網路防火牆可以更加有針對性地分類處理;另外,網路防火牆能夠即時統計日流量,周流量,月流量。所以整個應用程式分為兩個大部分:一個是實現防火牆功能,一個是實現流量統計。

我的開發過程:

經過自己對整個系統架構的需求分析,我便開始一步一步動手來實現這個小軟體。

由於之前接觸過window mobile平台,symbian平台,但是卻是第一次接觸Android平台,於是興沖沖地在Google上一陣神遊,搜尋了一些Android相關的資料,對這個平台有了自己大致的一些瞭解,然後自己通過Google加上自己的努力,費了九牛二虎之力終於把Android開發環境搭建起來。

   搭建好開發環境之後,自己迫不及待地通過自己手中的《Android SDK 開發範例大全》實現了自己在Android上的第一個程式Hello world。然後,自己在接下來一段時間裡,開始對自己將要實現的這個程式進行了一系列調研。存在了一系列問題。首先是對於手機攔截程式上網功能的可行性分析,主流的android平台手機防火牆都採用的基於linux核心的iptables組件進行設定網路規則。但是需要Android手機root許可權,但是普通的android手機一般不具備root許可權,除非通過刷機或者其他途徑。然後對於手機流量功能,由於android平台提供的API無法獲得,可能會著手使用Apache介面或者java介面甚至更底層的linux介面,最終經過調研發現了可以採用linux介面,通過讀取linux核心產生的/proc/net/dev檔案擷取網路資訊來實現手機流量統計功能。

    經過自己充分的調研之後,大致有了一些思路,然後問同學借了一部刷root許可權的手機,自己開始嘗試著實現自己軟體的功能。

功夫不負有心人,經過自己一段時間的努力,基本實現了自己需求達到的一些要求。

 

自己的經驗總結:

     經過一段時間的努力,我已經完成了DroidNethelper防火牆軟體的設計,基於軟體的設計,我已經編寫了一個初步的demo,基於提供的功能,設計了相應的調試和測試方案,經過調試和測試,基本實現了之前的需求。經過對程式的測試,可以很方便的統計出手機上網的流量資訊,能夠成為使用者上網的一個好幫手。

本軟體基於Android平台,包括了防火牆子系統和流量統計子系統。主要功能實現了使用者可以對自己上網程式進行規則設定,來實現上網功能的限定,並且,使用者還能夠看到自己手機上網流量的一個情況,有詳細的當日,一周內,一月內的流量統計,讓使用者能夠輕鬆地管理自己的上網情況。

    在效能上,系統啟動並執行開銷主要是後台維護流量的服務,本軟體只需要在後台維護一個動態服務,記憶體開銷2.5MB,相對於Google拼音IME的4.1MB來說更少。在調試過程中,我採用了一種特別的MessageTrace方法,即在程式中加入大量列印內容並以外部變數來判斷是否啟用,可以迅速找出release版本程式中的錯誤所在,提高了開發的效率和準確度。

整個開發過程,讓我接觸到了新興的Android手機平台,接觸了linux核心的dev檔案,iptable方法以及Android平台提供的大量API,可以說跨度之大是前所未有。本次開發中感觸最深的就是如何來實現Android上網攔截這一功能,Android的許可權限制,讓我們很難通過上層的介面來實現對程式上網的阻止和允許,只能考慮更底層的linux核心介面,經過大量調研和實驗,我們發現在刷機為root許可權,獲得super user資格後,可以通過底層的iptables介面來定製上網規則,並且在google開原始碼上找到了在Android上使用iptables的API。

除此之外,我們發現這次發現真真正正的參考資料只有Android SDK,大部分參考書都是抄來抄去,不如直接看SDK,不過Android SDK只有英文版,查閱起來給我造成了很大的難度,所以,通過google搜尋和一些相關的部落格給我提供了很大的協助。

另外我們這次實際參與了一個軟體工程項目,並且嚴格按照規範來指導我們的開發過程,增長了不少經驗,同時也體會到了軟體工程的必要性。通過實際對使用者介面的設計,讓我瞭解了如何更多的從使用者角度出發,提供更好的使用者體驗。我還發現,要把程式做到最小最快,需要使用大量底層技術,這個在我的程式中就很能體現。

     分析自己的軟體,還存在一些問題,由於android手機的許可權原因,在無法獲得root許可權的前提下,無法利用iptable實現上網規則的定製。無法即時地擷取使用者連網的請求。要獲得root許可權,需要通過刷機實現。

對於流量統計,由於系統檔案的重新整理有一定延遲,所以暫時對流量統計的結果還有一定延時。使用者介面相對於一些主流市場的流量統計軟體還不夠友好,可以在後期添加進一些動態變化圖表來更好地反映當前流量使用的情況。

      在實現程式的過程中,發現自己編程經驗的不足,前期調研不夠充分,走了不少彎路。還有前期在編寫的過程中由於有些代碼沒有添加註釋,之後再回頭時走了不少彎路,回過頭再看來,發現注釋是很重要的。在測試自己代碼的過程中,由於在設計時有一些細節考慮不周,造成了不少的錯誤和bug,導致花費了不少時間用於修改和改進遇到的這些問題。

還有任何問題都不能想當然,假如你接手一個簡單的項目,你可能會認為某些部分很容易完成。千萬不要這樣認為,除非你有一個類、組件、或者一段已經寫好的代碼並且已經測試通過。我之前就認為通過iptable能直接擷取並設定底層的防火牆規則,結果發現實際要涉及到許可權的一些問題。

     還有我們的需求也隨著我們的認識在不斷變化,需要經常性地修改方案,這主要是由於前期的需求分析做的不夠充分,自己對問題的理解不夠全面。

 

 

下一步的展望:

      Android平台作為一個很有潛力的開放手機平台,我相信它能給我們的智能移動生活帶來巨大的改變。我以後將會通過這樣一個平台,開發出更多更好的應用,讓智能手機真正改變我們的生活。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.