1、第 1 页 (共 20 页)本科毕业论文(20 届)信息同步系统之手机安全卫士设计与实现手机防盗、通讯卫士、软件管理所在学院专业班级 信息与计算科学学生姓名指导教师完成日期第 2 页 (共 20 页)信息同步系统之手机安全卫士设计与实现手机防盗、通讯卫士、软件管理摘 要:本系统正是针对那些恶意应用的,详细的阐述了手机安全卫士的开发流程,包括手机防盗、通讯卫士、软件管理、进程管理、手机杀毒、系统优化、高级工具、设置中心等功能模块。整体项目采用 MVC 框架,是对安卓知识点的综合应用,用到的技术有(活动,服务,广播接收者,内容提供这,唤醒机制,数据库,自定义标题,自定义控件,小部件,进程间通讯等)
2、。关键词:手机卫士;安卓开发平台;MVC 框架;数据库Abstract: The system is aimed at those malicious applications, describes in detail the mobile phone security guards of the development process, including mobile phone anti-theft, communication guard, software management, process management, mobile phone antivirus, system o
3、ptimization, advanced tools, set the center function module. The whole project using the MVC framework, it is a comprehensive application for Android knowledge point, use of Technology (activities, services, broadcast receivers, content providing this, wake-up mechanism, database, a custom title, cu
4、stom controls, small parts, inter process communication). The project is through the XML file layout on the page, the background using java code to achieve each business logic process, complete the needs of each page in the. Keywords: mobile phone guardian;Android development platform,;MVC framework
5、,;database第 3 页 (共 20 页)1 绪论1.1 背景 本次开发是由安博教育和学校发起,学生自主选题的一次毕业设计。伴随智能手机的不断普及,移动互联网的快速发展,伴随着 3G 时代的到来,智能手机的广泛应用,安卓成为活跃用户量最大的移动终端操作系统,并且安卓操作系统是开放源代码的,所以每个人都可以开发出一个安卓应用,导致安卓的应用数不胜数。由于安卓的开源,导致每个人可以对安卓端的软件进行编写,而有些开发者在应用中加入一些非法的代码,窃取用户的隐私,使得手机的安全问题日益明显,手机安全问题关注度日益提高。随着 Android 平台的发展和普及,Android 已经成为恶意代码的下一
6、个肆虐之地,这里我把一些漏洞的原理和技巧加以整理总结,起到抛砖引玉的作用,希望大家能够把这些知识用到以后反病毒和软件保护的工作中.不需要懂得信息安全的人是幸福的,而我们的职责是保障他们的幸福。1.2 开发思路和计划 在和指导老师多次交流后,确定实现方案的要点和工作计划。 整体项目采用 MVC 框架,是对 android 知识点的综合应用,用到的技术有 activity,service,broadcast,content provider,Notification,sqlite 数据库,自定义 title,自定义控件,widget,aidl 进程间通讯等,本项目所实现的功能如下: 手机防盗: 根
7、据预设参数,判断手机是否被盗,根据自定义协议发送手机中 SIM 卡的信息和手机的位置信息给安全号码。可远程通过短信指令,给手机设置锁屏密码,远程锁定手机屏幕,远程格式化手机 SD 卡,恢复出厂设置,极大的保护用户的隐私安全,通过 aidl 注册 admin 设备,一般用户无法卸载该程序。 通讯卫士: 来电号码归属地显示,来电归属地位置的调整,来电黑名单/短信黑名单管理。电话短信备份和还原,保护手机的数据和通讯安全。第 4 页 (共 20 页) 软件管理: 系统软件和本地软件,可以显示软件的详细信息,启动、删除、分享应用程序。程序锁可以指定要保护的程序,用户进入要保护的程序之前必须输入密码。 进
8、程管理: 显示当前系统运行的进程信息,显示系统内存信息,可以杀死某个进程,批量杀死进程,通过桌面 widget 实时展现用户当前的手机内存状态。 手机杀毒: 从服务器下载最新的病毒库,根据程序的包名和程序的数字签名识别病毒,提示用户并查杀恶意软件,使吸费木马无处可藏。 系统优化: 清理手机缓存,提高手机性能,优化电池管理。 高级工具: 手机号码归属地查询,更改归属地位置,常用号码查询。 设置中心: 可以对是否开启防盗、是否开启程序锁服务等功能进行设置,还可以更改来去电显示的风格。 我做的毕业设计也经历了从选题,调研,熟悉开发环境,实验关键技术,查找类似的相关系统的资料;系统概要设计,数据库结构
9、设计,功能模块开发,功能模块测试,系统调试和系统试运行和修改。2 系统需求2.1 范围本次开发的系统为手机安全卫士。用于广大 Android 手机用户,包括手机防盗 、通讯卫士、 软件管理 、进程管理、 流量统计 、手机杀毒、系统优化、高级工具、设置中心。我所负责的模块是手机防盗、通讯录卫士、软件管理这三个模块!2.2 定义MS MobileSafe (手机安全卫士)的缩写。2.3 功能需求1) 手机防盗: 进入“手机防盗”模块,提示用户设置手机保护密码,设置密码成功或已经设置后进入保护程序,其主要功能有:SIM 卡变更通知、GPS 追踪、远程销毁数据、远程报警第 5 页 (共 20 页)2)
10、 通讯录卫士: 根据用户预设的电话号码,拦截该号码的电话或者短信。3) 软件管理: 软件分享、启动或者卸载。3 模块一:手机防盗模块3.1 手机防盗-业务处理流程3.1.1 设置界面处理流程图 3-1-1 设置界面流程图3.1.2 手机防盗处理流程图 3-1-2 手机防盗处理流程图3.2 手机防盗-界面设计第 6 页 (共 20 页)图 3-2-1 手机防盗界面3.3 手机防盗-代码实现(主要代码实现)public class LostProtectedActivity extends Activity implements OnClickListener private static fin
11、al String TAG = “LostProtectedActivity“;private SharedPreferences sp;private EditText et_first_dialog_pwd;private EditText et_first_dialog_pwd_confirm;private Button bt_first_dialog_ok;private Button bt_first_dialog_cancle;private EditText et_normal_dialog_pwd;private Button bt_normal_dialog_ok;priv
12、ate Button bt_normal_dialog_cancle;private TextView tv_lost_protect_number;private RelativeLayout rl_lost_protect_setting;private CheckBox cb_lost_protect_setting;private TextView tv_lost_protect_reentry_setup;private AlertDialog dialog;protected void onCreate(Bundle savedInstanceState) super.onCrea
13、te(savedInstanceState);sp = getSharedPreferences(“config“, MODE_PRIVATE);if (isSetupPwd() showNormalEntryDialog(); else howFirstEntryDialog();private void showFirstEntryDialog() AlertDialog.Builder builder = new Builder(this);View view = View.inflate(this, R.layout.first_entry_dialog, null);第 7 页 (共
14、 20 页)et_first_dialog_pwd = (EditText) view.findViewById(R.id.et_first_dialog_pwd);et_first_dialog_pwd_confirm = (EditText) view.findViewById(R.id.et_first_dialog_pwd_confirm);bt_first_dialog_ok = (Button) view.findViewById(R.id.bt_first_dialog_ok);bt_first_dialog_cancle = (Button) view.findViewById
15、(R.id.bt_first_dialog_cancle);bt_first_dialog_cancle.setOnClickListener(this);bt_first_dialog_ok.setOnClickListener(this);builder.setView(view);dialog = builder.create();dialog.show();3.4 手机防盗-实际运行测试 图 3-4-1 实际运行图4 模块二:通讯录卫士模块4.1 通讯录卫士-业务处理流程第 8 页 (共 20 页)建立一个黑名单数据库添加黑名单输入电话号码选择拦截模式删除黑名单电话号码修改拦截模式黑名
16、单电话号码查看黑名单是否存在黑名单电话号码号码不存在删除失败黑名单拦截模式变化图 4-1-1 业务处理流程图4.2 通讯录卫士-界面设计4.2.1 主界面图 4-2-1 主界面设计图4.2.2 添加号码界面图 4-2-2 号码添加界面设计4.3 通讯录卫士-代码实现(主要代码实现)第 9 页 (共 20 页)public class CallSmsSafeActivity extends Activity protected static final int LOAD_DATA_FINISH = 40;public static final String TAG = “CallSmsSafeA
17、ctivity“;/用于展现出所有的黑名单号码private ListView lv_call_sms_safe;/操作黑名单号码数据库的对象private BlackNumberDao dao;private List blacknumbers;/显示黑名单号码的适配器对象private BlackNumberAdapter adpater;/ProgressBar 控件的父控件,用于控制子控件的显示(包括了 ProgressBar)private LinearLayout ll_call_sms_safe_loading;/private String initnumber;/用于接收子线
18、程发送过来的消息,实现 UI 的更新private Handler handler = new Handler() public void handleMessage(android.os.Message msg) switch (msg.what) case LOAD_DATA_FINISH:/从数据库中加载黑名单号码完成ll_call_sms_safe_loading.setVisibility(View.INVISIBLE);/为 lv_call_sms_safe 设置适配器adpater = new BlackNumberAdapter();lv_call_sms_safe.setAd
19、apter(adpater);break;protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.call_sms_safe);ll_call_sms_safe_loading = (LinearLayout) findViewById(R.id.ll_call_sms_safe_loading);dao = new BlackNumberDao(this);第 10 页 (共 20 页)lv_call_sms_safe = (Li
20、stView) findViewById(R.id.lv_call_sms_safe);ll_call_sms_safe_loading.setVisibility(View.VISIBLE);registerForContextMenu(lv_call_sms_safe);new Thread() public void run() blacknumbers = dao.findAll();Message msg = Message.obtain();msg.what = LOAD_DATA_FINISH;handler.sendMessage(msg);.start();public vo
21、id onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) super.onCreateContextMenu(menu, v, menuInfo);MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.call_sms_safe_menu, menu);public boolean onContextItemSelected(MenuItem item) AdapterContextMenuInfo info = (Adapte
22、rContextMenuInfo) item.getMenuInfo();int position = (int) info.id; switch (item.getItemId() case R.id.item_delete:Log.i(TAG, “删除黑名单记录“);deleteBlackNumber(position);return true;case R.id.item_update:Log.i(TAG, “更新黑名单记录“);updateBlackNumber(position);return true;default:return super.onContextItemSelected(item);