Android手机安全防护系统的设计与实现毕业设计.docx

上传人:b****2 文档编号:18951802 上传时间:2023-04-24 格式:DOCX 页数:90 大小:1.44MB
下载 相关 举报
Android手机安全防护系统的设计与实现毕业设计.docx_第1页
第1页 / 共90页
Android手机安全防护系统的设计与实现毕业设计.docx_第2页
第2页 / 共90页
Android手机安全防护系统的设计与实现毕业设计.docx_第3页
第3页 / 共90页
Android手机安全防护系统的设计与实现毕业设计.docx_第4页
第4页 / 共90页
Android手机安全防护系统的设计与实现毕业设计.docx_第5页
第5页 / 共90页
点击查看更多>>
下载资源
资源描述

Android手机安全防护系统的设计与实现毕业设计.docx

《Android手机安全防护系统的设计与实现毕业设计.docx》由会员分享,可在线阅读,更多相关《Android手机安全防护系统的设计与实现毕业设计.docx(90页珍藏版)》请在冰豆网上搜索。

Android手机安全防护系统的设计与实现毕业设计.docx

Android手机安全防护系统的设计与实现毕业设计

Android手机安全防护系统的设计与实现毕业设计

摘要I

AbstractII

第1章 绪论1

1.1研究背景1

1.2研究意义1

1.3研究现状2

1.4研究容2

1.5组织结构3

第2章 相关技术5

2.1Android系统5

2.1.1Android简介5

2.1.2Android程序框架7

2.2Android权限机制10

2.3AndroidAIDLIPC机制11

2.4Android数字签名11

2.5SQLite数据库12

2.6MVC设计模式13

2.7本章小结14

第3章 系统分析15

3.1可行性分析15

3.1.1 经济可行性15

3.1.2 技术可行性15

3.1.3 操作可行性15

3.2用户需求分析15

3.2.1 简单易学16

3.2.2 运行稳定16

3.2.3 操作简单16

3.3功能需求分析16

3.4系统运行环境与开发环境20

3.4.1 运行环境20

3.4.2 开发环境20

3.5本章小结21

第4章 系统设计23

4.1设计目标23

4.2设计原则23

4.2.1 实用性原则23

4.2.2 安全性原则23

4.2.3 易用性原则23

4.2.4 扩展性原则24

4.3系统设计24

4.3.1 总体设计24

4.3.2 手机防盗模块设计24

4.3.3 进程管理模块设计25

4.3.4 通信过滤模块设计26

4.3.5 流量统计模块设计26

4.3.6 软件管理模块设计27

4.3.7 手机杀毒模块设计27

4.3.8 缓存清理模块设计28

4.3.9 高级工具模块设计28

4.3.10 设置中心模块设计29

4.3.11 关机屏蔽模块设计30

4.4 数据库设计30

4.4.1 数据库需求分析设计30

4.4.2 数据库概念设计31

4.4.3 数据库逻辑设计32

4.4.4 数据库物理设计33

4.6 本章小结35

第5章 系统实现37

5.1 欢迎界面实现37

5.2 手机防盗模块实现39

5.3 流量统计模块实现42

5.4 软件管理模块实现43

5.5 进程管理模块实现45

5.6 缓存清理模块实现46

5.7 手机杀毒模块实现48

5.8 通信过滤模块实现49

5.9 高级工具模块实现52

5.10 设置中心模块实现56

5.11 关机屏蔽模块实现58

5.12 本章小结59

第6章 系统测试61

6.1 欢迎界面及主界面测试61

6.2 手机防盗模块测试61

6.3 软件管理模块测试63

6.4 通信过滤模块测试64

6.5 手机杀毒模块测试64

6.6 高级工具模块测试65

6.7 设置中心模块测试66

6.8 流量统计模块测试66

6.9 进程管理模块测试67

6.10 缓存清理模块测试67

6.11 关机屏蔽模块测试68

6.12 测试结论68

第7章 总结及展望69

参考文献71

致谢73

第1章 绪论

1.1研究背景

Android是一种基于Linux的开源操作系统,由操作系统、中间件、用户界面和应用软件组成。

Android的开放性吸引了众多的开发者为其开发出丰富的应用软件。

Android手机也凭借其可观的性价比吸引了众多手机硬件厂商的支持,至2015年11月Android手机的市场份额已经升至84.7%,成为了全球市场份额最大的智能手机。

Android系统的开放特性和不法分子的逐利冲动使得手机安全形势异常严峻,其中以手机病毒、恶意软件、垃圾短信和骚扰的影响最为广泛[6]。

根据腾讯手机管家安全服务的腾讯移动安全实验室数据显示,2015年的上半年新增Android病毒包数达到596.7万,同比增长174%。

Android病毒感染用户人次达到1.4亿,同比增长58%。

恶意软件多会激活设备管理器获取手机中的短信、通信录、照片等各类信息,并上传到服务器。

同时也能时刻监测手机中的短信情况,并且能够随时将短信转发到犯罪分子指定的手机号中,造成手机所有信息泄露,并严重危及资金账户安全。

垃圾短信类别主要分为广告类、诈骗类、违法类与其他类4大类。

2015年上半年,广告类垃圾短信占垃圾短信总比例达84.04%,诈骗短信占比11.98%,违法类占比1.92%,其他类占比2.06%。

根据腾讯手机管家用户举报骚扰的数据显示,2015年上半年,骚扰用户举报次数达到6.79亿次,同比增长403%,骚扰爆发式增长,大围干扰用户,影响用户体验。

1.2研究意义

鉴于手机安全日益严峻的形势,智能化地对系统敏感资源的访问进行分析和处理,在兼顾系统安全需求的同时保障用户体验,是开发Android安全防护软件所需要解决的关键问题[1]。

Android手机安全防护系统可以对威胁手机正常使用的安全性问题进行有效的防护和处理[3]。

对于垃圾信息和骚扰进行过滤与拦截;对于手机病毒和木马进行扫描和清除;对涉及隐私的应用程序设置程序锁防止隐私泄露,对于恶意软件产生的吸费流量进行及时的监控;对于影响手机运行速度的垃圾文件进行扫描与清除;对于手机被盗进行远程定位、锁屏、销毁数据。

这些功能都能极大程度的提高手机的安全性[9]。

1.3研究现状

随着Android手机的市场份额的逐年上升,以及手机安全问题的日益严峻,使得国外多家安全软件公司相继开发出了Android平台上的安全应用软件[7]。

美国著名的杀毒软件公司McAfee发布了基于Android平台的WaveSecure软件[2],允许用户远程锁定用户的设备、清除手机上存储的重要数据以保护用户的隐私、用设备或通过Web远程备份数据、随时随地在线访问数据、将数据还原到新设备、查找遗失的设备并在地图上标出设备的位置、跟踪插入的SIM卡以及所进行的通话来帮助找回设备等,一定程度上保护了用户的隐私安全[4]。

国360、腾讯、XX等公司也相继推出了手机安全防护软件,这些手机安全防护软件,集防垃圾短信,防骚扰,防隐私泄漏,对手机进行安全扫描,云查杀恶意软件,软件安装实时检测,流量使用全掌握,系统清理手机加速,归属地显示及查询等功能于一身,是功能较为全面的智能手机安全软件。

1.4研究容

本文研究了威胁Android手机正常使用的安全问题,基于Android系统实现了手机安全防护系统的设计,主要研究容如下:

(1)研究Android系统的应用程序结构,分析Android系统的程序构成、结构和Android手机安全防护系统。

(2)分析手机病毒及木马的特征,建立相应的病毒数据库,通过将应用程序的签名信息转成MD5值后与病毒数据库比对,判断该应用程序是否为病毒,实现手机病毒及木马的扫描和清理功能。

(3)分析垃圾短信及骚扰的特征,设置相应的拦截规则并存入拦截数据库中,通过将收到的短信及和拦截数据库进行比对,实现骚扰及短信拦截功能。

(4)分析手机垃圾文件的种类及存储路径,使用反射机制获取缓存、卸载残留和无用的安装包等手机垃圾文件信息,实现扫描并清除手机垃圾文件的功能。

(5)分析手机应用程序的流量统计,防止恶意软件的吸费流量。

(6)分析手机中涉及隐私的应用程序,将这些程序存入隐私数据库中,监听手机的任务栈,发现任务栈中出现隐私数据库中的应用时,提示用户要输入密码访问,实现程序锁功能。

(7)手机发生被盗情况时,发送含有短信指令的隐藏的短信,实现远程定位、报警、清除数据和锁屏功能。

1.5组织结构

第1章,绪论。

介绍了课题的研究背景、意义、国外研究现状,研究容和论文的组织结构。

第2章,相关技术。

简要介绍了Android的系统构成、程序结构、程序框架,MVC设计模式和Android手机安全防护系统设计中所涉及到的其他相关技术。

第3章,需求分析。

通过功能模块图对手机安全防护系统进行需求分析,包括功能性需求分析和非功能性需求分析,进而得出手机安全防护系统的用例模型。

第4章,系统设计。

进行软件及架构设计,对软件进行模块划分,共分为手机防盗、通信过滤、软件管理、进程管理、流量统计、手机杀毒、系统加速、高级工具、设置中心9个模块。

第5章,系统实现。

实现了手机安全防护系统,给出手机防盗、通信过滤、软件管理、进程管理、流量统计、手机杀毒、系统加速、高级工具和设置中心9个模块的具体实现。

第6章,系统测试。

对手机防盗、通信过滤、软件管理、进程管理、流量统计、手机杀毒、系统加速、高级工具的功能进行测试,得到相关数据。

第7章,总结与展望。

对工作做简要的总结,并对后续工作提出设想。

第2章 相关技术

2.1Android系统

2.1.1Android简介

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于智能手机和平板电脑等移动设备,由Google公司和开放手机联盟领导及开发。

Android操作系统最初由AndyRubin开发,主要支持手机[5]。

2005年8月由Google收购注资。

2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。

随后Google以Apache开源许可证的授权方式,发布了Android的源代码。

第一部Android智能手机发布于2008年10月。

Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。

2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一[10]。

Android最大的优势就在于其开源性,开发平台允许任何移动终端厂商加入到Android联盟中来,显著的开放性使其拥有更多的开发者,丰富的用户和应用使开发平台快速走向成熟。

Android的开源性吸引了众多开发者,使Android应用软件的种类越来越丰富,从而为Android在消费者和厂商两方面积累了巨大人气。

消费者将可以用更低的价位购得心仪的手机,同时还可以享受到丰富的软件资源。

庞大的市场需求使厂商不断扩大生产规模,进而获得更多的收益[8]。

Android系统采用分层的组织架构,从高到低分别是应用层、应用框架层、系统运行层和Linux核层。

应用层提供一些核心应用程序包,开发者可以在应用层利用Java语言设计和编写自己的应用程序。

应用程序框架层包括活动管理器、窗口管理器、容提供者、视图系统、包管理器、管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分,是Android应用开发的基础。

开发人员可以完全访问核心应用程序所使用的API框架。

并且,任何应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。

基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。

系统运行层包括图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。

Android运行时包括核心库和Dalvik虚拟机9个子系统,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、、android.media等。

后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。

Android核心系统服务依赖于Linux2.6核,如安全性、存管理、进程管理、网络协议栈和驱动模型。

Linux核也是作为硬件与软件栈的抽象层。

包含显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash存驱动、Binder(IPC)驱动、电源管理等。

Android组织架构如图2.1所示。

图2.1Android组织架构

2.1.2Android程序框架

Android应用开发过程中,通常会使用活动、服务、容提供器、广播接受者四大组件,关系如图2.2所示。

图2.2Android四大组件的关系

“活动”中含有开发者布置的控件,用户可以通过控件来实现操作。

“活动”是应用程序与用户交互的纽带。

在Android应用程序中一个“活动”通常都对应一个单独的程序界面。

不同的“活动”之间通过“意图”进行通信,在“意图”的描述结构中,动作和动作对应的数据是最重要的两个部分,典型的动作类型有:

MAIN、VIEW、PICK、EDIT等,而动作对应的数据则是以URI的形式进行表示的。

“活动”有运行、暂停、停止、断开四种基本状态:

(1)运行状态:

一个新的“活动”启动入栈后,位于屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。

(2)暂停状态:

一个“活动”被另一个透明或者对话框样式的“活动”覆盖时的状态。

此时它依然与窗口管理器保持连接,系统继续维护其部状态,虽然仍然可见,但已经失去了焦点,故不可与用户交互。

(3)停止状态:

当“活动”不可见时,处于停止状态。

当“活动”处于此状态时,需要保存当前数据和当前的UI状态,防止“活动”退出或关闭时导致的当前的数据和UI状态的丢失。

(4)断开状态:

“活动”被杀掉以后或者被启动以前,处于断开状态。

此时“活动”已从“活动”堆栈中移除,需要重新启动才可以显示和使用。

“活动”的生命周期中会有不同的状态,每个状态都有自己的回调函数,这些回调函数会在状态改变时发出通知。

“活动”的生命周期有三个关键的循环:

(1)整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。

“活动”在onCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。

(2)可见的生命周期,从onStart()开始到onStop()结束。

在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。

在这两个接口之间,需要保持显示给用户的UI数据和资源等。

(3)前台的生命周期,从onResume()开始到onPause()结束。

在这段时间里,该“活动”处于所有“活动”的最前面,和用户进行交互。

“活动”可以经常性地在恢复和暂停状态之间切换。

“活动”的生命周期如图2.3所示。

图2.3“活动”的生命周期

“服务”是一个在后台运行没有用户界面的应用组件。

其他应用组件能够启动“服务”,并且当用户切换到另外的应用场景后“服务”将持续在后台运行。

另外,一个组件还能够绑定到一个“服务”并与之交互(IPC机制)。

“服务”分为开启和绑定两种状态。

通过startService()启动的服务处于“开启”状态,一旦启动,“服务”就会一直在后台运行。

通常开启状态的“服务”执行单任务并且不返回任何结果给启动者。

通过调用bindService()启动的服务处于“绑定”状态,一个绑定的“服务”提供一个与“服务”交互的接口进行发送请求、获取返回结果,或通过跨进程通信来与“服务”进行交互(IPC)。

绑定的“服务”只有在另应用组件绑定后才能运行,多个组件可以绑定一个“服务”,只有在调用unbind()方法后,这个“服务”才会被销毁。

“服务”的生命周期如图2.4所示。

图2.4“服务”的生命周期

“容提供器”将一个应用程序通过URI唯一标识的指定数据集提供给其他应用程序,URI以content:

//作为前缀,表示该数据由“容提供器”来管理。

其他应用可以通过ContentResolver类从该容提供者中获取或存入数据。

开发人员不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对“容提供器”的操作。

需要在多个应用程序间共享数据时,可以使用“容提供器”在不同的应用程序之间共享数据。

“容提供器”用于保存和获取数据,并使其对所有应用程序可见。

因为Android没有提供所有应用共同访问的公共存储区,所以这是不同应用程序间共享数据的唯一方式。

“广播接收器”是对广播事件进行接收并做出对应处理的组件,通常在收到广播事件后启动“活动”或“服务”进行响应。

应用程序运行时便会向Android系统注册不同的广播,Android系统会根据接收到广播的种类来判断该广播需要处理事件,然后向对应的应用程序注册事件。

不同的广播可能需要处理不同的广播事件也可能需要处理相同的广播事件,这时就需要“广播接收器”来进行筛选并处理。

广播的注册包括静态与动态两种方式。

静态注册方式是在AndroidManifest.xml的application里面定义receiver并设置要接收的action。

这种方式的特点是:

无论应用程序是否处于活动状态,都会进行监听。

动态注册方式在activity里面调用函数来注册,和静态的容差不多。

一个形参是receiver,另一个是IntentFilter,里面包含要接收的action。

动态注册方式特点是:

在代码中进行注册,当应用程序关闭后,就不再进行监听。

2.2Android权限机制

Android是一个权限分离的系统。

Android系统利用Linux已有的权限管理机制,通过为每一个Application分配不同的uid和gid,使不同的Application之间的私有数据和访问达到隔离的目的[11]。

同时,Android还在此基础上进行扩展,提供了permission机制,它主要用来对Application可以执行的某些具体操作进行权限细分和访问控制,同时提供了per-URIpermission机制,提供对某些特定的数据块进行ad-hoc方式的访问。

权限主要包含三个方面的信息:

权限的名称、属于的权限组、保护级别。

权限组是指把权限按照功能分成的不同的集合[12]。

每一个权限组包含若干具体权限,这些权限的等级划可分为normal,dangerous,signature,signatureOrSystem,system和development,不同的保护级别代表了程序要使用此权限时的认证方式。

其中normal权限只要申请了就可以使用;dangerous权限需要用户在安装时确认才可以使用;signature需要签名才能赋予权限;signatureOrSystem需要签名或系统级应用才能被赋予权限,system是系统级应用才能被赋予的权限[13]。

Package的权限信息主要通过在AndroidManifest.xml中使用些标签来指定,如果package需要申请使用某个权限,那么需要使用标签指定。

2.3AndroidAIDLIPC机制

Android系统中的每个应用程序都需要在自己的进程空间中运行,并且可以通过应用程序UI运行服务进程,这样就经常会在不同的进程间传递对象[14]。

一个进程通常不能访问另一个进程的存空间,所以不同进程间的对话需要将进程间的传递对象分解成操作系统可以理解的基本单元,并且有序的通过进程边界。

因为通过代码来实现这个数据传输过程过于繁琐,所以Android系统提供了AIDL工具来处理这项工作。

AIDL(AndroidInterfaceDefinitionLanguage)是一种IDL语言,用于生成可以在Android设备上进行进程间通信(interprocesscommunication,IPC)的代码。

在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,可以使用AIDL生成可序列化的参数。

AIDLIPC机制是面向接口的,使用代理类在客户端和实现端传递数据[15]。

Android系统AIDL服务的建立相对于普通服务的建立要更为复杂,具体步骤如下:

(1)在Android工程的Java包目录中建立一个扩展名为aidl的文件,如果aidl文件的容是正确的,ADT会自动生成一个Java接口文件(*.java)。

(2)建立一个服务类(Service的子类)。

(3)实现由aidl文件生成的Java接口。

(4)在AndroidManifest.xml文件中配置AIDL服务,尤其要注意的是,标签中android:

name的属性值就是客户端要引用该服务的ID,也就是Intent类的参数值。

2.4Android数字签名

Android系统的应用程序必须是经过数字证书签名的,程序开发者要使用一个合适的私钥生成的数字证书来给应用程序签名,并将数字证书的私钥保存在自己的手中。

Android数字证书被用来标识应用程序的作者和应用程序之间的信任关系,用于应用程序包的自我认证,所以并不需要权威的数字证书签名机构认证。

Android数字证书都是有有效期的,Android系统只是在应用程序安装的时候才会检查证书的有效期。

如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。

同一个开发者的多个程序尽可能使用同一个数字证书,原因如下:

(1)有利于程序升级,当新版程序和旧版程序的数字证书相同时,Android系统才会认为这两个程序是同一个程序的不同版本。

如果新版程序和旧版程序的数字证书不相同,则Android系统认为他们是不同的程序,并产生冲突,会要求新程序更改包名。

(2)有利于程序的模块化设计和开发。

Android系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。

所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。

(3)可以通过权限(permission)的方式在多个程序间共享数据和代码。

Android提供了基于数字证书的权限赋予机制,应用程序可以和其他的程序共享概功能或者数据给那那些与自己拥有相同数字证书的程序。

如果某个权限(permission)的protectionLevel是signature,则这个权限就只能授予那些跟该权限所在的包拥有同一个数字证书的程序。

Android数字证书的有效期应予以慎重考虑,原因如下:

(1)数字证书的有效期要包含程序的预计生命周期,一旦数字证书失效,持有改数字证书的程序将不能正常升级。

(2)如果多个程序使用同一个数字证书,则该数字证书的有效期要包含所有程序的预计生命周期。

(3)AndroidMarket强制要求所有应用程序数字证书的有效期要持续到2033年10月22日以后。

2.5SQLite数据库

SQLite由SQL编译器、核、后端以及附件这几个部分组成,通过利用虚拟机和虚拟数据库引擎(VDBE)调试、修改和扩展核。

是一种轻量型数据库,不需要任何外部的依赖,是遵守ACID的关系型数据库管理系统,这种数据库包含在一个相对小的C库中,是存储在一个单一的跨平台的磁盘文件,不需要安装或管理。

它以嵌入式作为设计目标,因其资源占有量极低,仅需占用数百kb的存即可满足嵌入式设备的需求,所以目前已广泛应用于嵌入式产品之中。

它能够支持Windows/Linux/Unix等多种主流的操作系统,同时也能够跟Tcl、C#、PHP、Java等多种程序语言结合。

处理速度相比于Mysql、PostgreSQL这两款开源的世界著名数据库管理系统要快上很多。

SQLite是一款公开的嵌入式数据库,许多公司(如Adobe、苹果公司、Google、Sun和Symbian)和开源项目(如Mozilla、PHP和Python)都在产品中使用了SQLite。

SQLite嵌入到使用它的应用程序中,与被其嵌入的应用程序共用相同的进程空间,而不是单独的一个进程。

在事务处理方面,通过数据库级上的独占性和共享锁来实现独立事务处理。

这意味着多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。

在某个

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1