首届 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,相对于谷歌拼音输入法的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平台作为一个很有潜力的开放手机平台,我相信它能给我们的智能移动生活带来巨大的改变。我以后将会通过这样一个平台,开发出更多更好的应用,让智能手机真正改变我们的生活。

Android智能手机网络防火墙开发的经验心得相关推荐

  1. Android底层网络防火墙,详解Android 利用Iptables实现网络黑白名单(防火墙)

    一.概述 为了使读此简笔的人对Iptables有一个简单的了解,此处强行百度了一波概念,如果想深入的了解Iptables的各种配置规则和内核对其的管理运行机制请自行www.baidu.com,这些并不 ...

  2. Android网络防火墙实现初探

    1. 智能手机网络防火墙的现状 随着智能手机越来越普及,以及3G网络的快速发展,越来越多的用户使用手机上网冲浪.于此同时,各类恶意软件也通过网络来盗取用户手机上的的隐私,甚至控制用户的手机.因此智能手 ...

  3. 深入理解Android系统网络架构

    引言:这篇文章以WiFi举例,介绍了Android系统网络架构.其内容包含:网络链路的连接和注册.网络有效性检测和网络优选.Android系统网络防火墙和几种场景下的网络策略等,文章的最后也列举了几种 ...

  4. [转载] 深入理解Android系统网络架构

    引言:这篇文章以WiFi举例,介绍了Android系统网络架构.其内容包含:网络链路的连接和注册.网络有效性检测和网络优选.Android系统网络防火墙和几种场景下的网络策略等,文章的最后也列举了几种 ...

  5. [转载]深入理解Android系统网络架构

    转自 https://blog.csdn.net/qq_14978113/article/details/89182253 引言:这篇文章以WiFi举例,介绍了Android系统网络架构.其内容包含: ...

  6. android系统开发实验,基于Android智能手机的实验管理系统的设计与实现

    摘要: 移动互联时代已经全面向我们走来,渗透到高校学习,生活的每一个角落.智能手机可以随时随地使用的特性,给人们的生活带来了很大的方便.高校实验室建设一直对培养学生的动手能力,增强科研意识和提高独立分 ...

  7. Android关于网络访问app应用开发相关的异常总结

    现在大多数软件都需要进行网络访问,比如 手游 浏览器 聊天工具 理财产品 头条 - 如果你开发的软件不支持网络访问,也就是单机版,用户自娱自乐类型.比如 闹钟 指南针 记事本 计算器 - 这些都是单机 ...

  8. 实现开启和关闭Android移动网络(做AppWidget开发的收获)

    之前在做Android AppWidget这方面的开发,本人菜鸟一个,刚接触android不久.所以在开发的过程中不免遇到诸多难处,不过在解决问题中收获知识是一种非常刺激的体验.接下来是本人在开发开关 ...

  9. Android聊天软件的开发(三)--网络连接

    一,服务器网络接口    服务器网络接口通过Servlet实现,可以获得客户端提交的数据,对数据进行查询存储操作,以及返回结果数据给客户端.客户端可以通过HTTP协议直接访问网络接口.    HTTP ...

最新文章

  1. ORACLE11g 没有控制文件如何通过rman备份恢复数据的详细实战过程
  2. java多层catch语句_Java异常之catch语句块
  3. 南宁网络推广浅析如何分析SEO数据,才能助力网站优化效果更“事半功倍”?...
  4. 赛思信安携手太极 助力《甘肃省公安厅大数据警务云》项目
  5. Spring事务之Propagation
  6. Python学习笔记(二)——HelloWorld
  7. draw graph using gnuplot
  8. javafx 项目_JavaFX,Jigsaw项目和JEP 253
  9. Java基础篇3——流程控制
  10. qq消息服务器延时,QQ聊天消息丢失或延迟的原因分析
  11. ubuntu12.04 Struts2 配置过程中出现的错误
  12. oa系统租用云服务器安全吗,oa系统放在云服务器上安全吗
  13. Python标准类型的分类
  14. 美通企业日报 | 阿迪发布星战系列球鞋;安进27亿美元收购百济神州20.5%股份
  15. 百度网盘无需开会员也能享受高速下载通道
  16. ipad学计算机二级,‎App Store 上的“计算机等级考试一级最新题库”
  17. AE无法输出h.264 安装Quick time也不好使的办法 本人使用 AE CC2019
  18. C语言中运算符优先级记忆方法
  19. Linux Command—— Wildcard
  20. 哎我就不信了,Java IO有这么难吗?

热门文章

  1. Paper:《GPT-4 Technical Report》的翻译与解读
  2. Android之八滑屏的代码实现
  3. python扫雷游戏设计_python扫雷游戏
  4. 找不到/storage/emulated/0文件
  5. 熄灯问题(枚举)——C++
  6. Python - 控制雷电模拟器(Dnconsole)
  7. 哨兵2号Sentinel-2分幅条带介绍与MGRS网格矢量文件获取
  8. 22考研上岸清华深研院人工智能,分享专业课807模式识别改革第一年备考经验
  9. 房产管理系统设计html,HTML5 3D 在智慧物业/地产管理系统中的应用
  10. Windows XP最后的安全补丁