一种安卓系统应用程序的保护方法和装置制造方法及图纸

技术编号:15501175 阅读:253 留言:0更新日期:2017-06-03 22:40
本发明专利技术实施例公开了一种安卓系统应用程序的保护方法,包括:在安卓系统应用程序运行时,通过监测特定进程的进程状态文件,确定所述应用程序是否处于被调试状态;所述特定进程为所述应用程序主进程或预先创建的应用程序主进程的子进程;所述应用程序处于被调试状态时,强制退出所述应用程序。本发明专利技术实施例还公开了一种安卓系统应用程序的保护装置。

Protection method and device for Android system application program

The embodiment of the invention discloses a protection method, a Android system application in Android application system, through the process of monitoring the state file specific process, determine whether the application is in the debugging status; the specific process for the application of main process or pre created applications the main process of sub processes; the application is being debugged when forced to exit the application. The embodiment of the invention also discloses a protection device for a Android system application program.

【技术实现步骤摘要】
一种安卓系统应用程序的保护方法和装置
本专利技术涉及安卓(Android)软件保护技术,尤其涉及一种安卓系统应用程序的保护方法和装置。
技术介绍
在对安卓系统应用程序进行保护,现有技术主要通过软件加壳和代码混淆来实现。虽然加壳和混淆是目前安卓软件开发者常用的软件保护手段,针对静态分析确实有很好的效果;但是这两种方法在反动态调试方面效果不佳,无法很好的保证程序运行时的安全。在实现安卓系统应用程序反动态调试时,当前使用最多的反动态调试的技术方案为:通过调用ptrace系统函数来使调试器失效,从而实现反动态调试;然而,这种反动态调试的技术还至少存在以下缺点:1)由于这种反动态调试的技术的核心在于通过调用ptrace系统函数来使调试器失效,体现在代码里只是一个函数调用,实现机制较为简单,破解者可以通过静态反编译的手段将这一函数调用注释掉,如此,反调试机制就会失效。2)无法兼容安卓4.4及以后的版本;具体地说,由于安卓4.4及以后的版本中开启了全新的安全模式,无法再调ptrace系统函数来实现反调试。
技术实现思路
为解决上述技术问题,本专利技术实施例期望提供一种安卓系统应用程序的保护方法和装置,具有较高的兼容性和安全性。本专利技术的技术方案是这样实现的:本专利技术实施例提供了一种安卓系统应用程序的保护方法,包括:在安卓系统应用程序运行时,通过监测特定进程的进程状态文件,确定所述应用程序是否处于被调试状态;所述特定进程为所述应用程序主进程或预先创建的应用程序主进程的子进程;所述应用程序处于被调试状态时,强制退出所述应用程序。上述方案中,所述监测特定进程状态文件包括:监测特定进程的进程状态文件的TracerPid字段的值。上述方案中,所述确定所述应用程序是否处于被调试状态,包括:所述应用程序主进程的进程状态文件的TracerPid字段的值非0,或应用程序主进程的子进程的进程状态文件的TracerPid字段的值非0时,确定所述应用程序处于被调试状态;否则,确定所述应用程序未处于被调试状态。上述方案中,在确定所述应用程序是否处于被调试状态之前,所述方法还包括:获取预设的反调试函数;所述反调试函数,用于在被执行时,实现第一功能和第二功能;所述第一功能为所述通过监测特定进程的进程状态文件,确定所述应用是否处于被调试状态的功能,所述第二功能为所述应用程序处于被调试状态时,强制退出所述应用程序的功能;所述确定所述应用程序是否处于被调试状态,包括:利用所述应用程序主进程的子进程调用反调试函数,实现所述第一功能;所述应用程序处于被调试状态时,强制退出所述应用程序,包括:在反调试函数实现所述第一功能后,实现所述第二功能。上述方案中,所述获取预设的反调试函数,包括:将预设的反调试函数封装在C语言编写的SO文件中;通过执行SO文件加载函数来调用SO文件中的反调试函数。上述方案中,在获取预设的反调试函数之后,所述方法还包括:在所述反调试函数中创建所述应用程序主进程的子进程。上述方案中,所述利用所述应用程序主进程的子进程调用反调试函数,包括:所述应用程序主进程的子进程每隔n秒调用反调试函数,n为正数。上述方案中,所述强制退出所述应用程序,包括:结束所述应用程序的主进程,使所述应用程序退出。本专利技术实施例还提供了一种安卓系统应用程序的保护装置,包括:确定模块和强制退出模块;其中,确定模块,用于在安卓系统应用程序运行时,通过监测特定进程的进程状态文件,确定所述应用程序是否处于被调试状态;所述特定进程为所述应用程序主进程或预先创建的应用程序主进程的子进程;强制退出模块,用于在所述应用程序处于被调试状态时,强制退出所述应用程序。上述方案中,所述确定模块,具体用于通过监测特定进程的进程状态文件的TracerPid字段的值,确定所述应用程序是否处于被调试状态。上述方案中,所述确定模块,具体用于在所述应用程序主进程的进程状态文件的TracerPid字段的值非0,或应用程序主进程的子进程的进程状态文件的TracerPid字段的值非0时,确定所述应用程序处于被调试状态;否则,确定所述应用程序未处于被调试状态。上述方案中,所述装置还包括获取模块,用于在确定所述应用程序是否处于被调试状态之前,获取预设的反调试函数;所述反调试函数,用于在被执行时,实现第一功能和第二功能;所述第一功能为所述通过监测特定进程的进程状态文件,确定所述应用是否处于被调试状态的功能,所述第二功能为所述应用程序处于被调试状态时,强制退出所述应用程序的功能;所述确定模块,具体用于利用所述应用程序主进程的子进程调用反调试函数,实现所述第一功能;所述强制退出模块,具体用于在反调试函数实现所述第一功能后,利用反调试函数实现所述第二功能。上述方案中,所述获取模块,具体用于将预设的反调试函数封装在C语言编写的SO文件中;通过执行SO文件加载函数来调用SO文件中的反调试函数。上述方案中,所述强制退出模块,具体用于在所述应用程序处于被调试状态时,结束所述应用程序的主进程,使所述应用程序退出。本专利技术实施例提供的一种安卓系统应用程序的保护方法和装置,在安卓系统应用程序运行时,通过监测特定进程的进程状态文件的TracerPid字段的值,确定所述应用程序是否处于被调试状态;所述特定进程为所述应用程序主进程或预先创建的应用程序主进程的子进程;在所述应用程序处于被调试状态时,强制退出所述应用程序。如此,本专利技术实施例采用通过监测进程状态文件的TracerPid字段的值,确定所述应用程序是否处于被调试状态,适用性更广,可以兼容安卓4.4及之后的版本;并且采用信号量机制实现对特定进程的进程状态文件的实时监控,不容易被绕过,提高了应用程序的安全性。附图说明图1为本专利技术安卓系统应用程序的保护方法的第一实施例的流程图;图2为本专利技术实施例安卓系统应用程序的保护装置的组成结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述。第一实施例本专利技术第一实施例提供了一种安卓系统应用程序的保护方法,图1为本专利技术安卓系统应用程序的保护方法的第一实施例的流程图,如图1所示,该流程包括:步骤100:在安卓系统应用程序运行时,通过监测特定进程的进程状态文件,确定所述应用程序是否处于被调试状态;所述特定进程为所述应用程序主进程或预先创建的应用程序主进程的子进程。本步骤中,所述监测特定进程状态文件包括:监测特定进程的进程状态文件的TracerPid字段的值。这里,进程状态文件用于表示对应进程的状态,在进程状态文件中,TracerPid字段的值可以作为确定相应进程是否在被调试的依据,当TracerPid字段的值为0时,说明相应进程未被调试;否则,当TracerPid字段的值非0时,说明相应进程在被调试;也就是说,每个进程在运行时都会将自己的进程状态以文件的形式进行实时记录,而文件中的TracerPid字段会反映该进程的调试状态;示例性地,对于进程号为$pid的进程来说,安卓系统的/proc/$pid/status文件实时反映了进程号为$pid的进程的状态,如果/proc/$pid/status文件中TracerPid字段的值为0,则说明进程号为$pid的进程处于未被调试状态。本步骤具体包括:所本文档来自技高网...
一种安卓系统应用程序的保护方法和装置

【技术保护点】
一种安卓系统应用程序的保护方法,其特征在于,所述方法包括:在安卓系统应用程序运行时,通过监测特定进程的进程状态文件,确定所述应用程序是否处于被调试状态;所述特定进程为所述应用程序主进程或预先创建的应用程序主进程的子进程;所述应用程序处于被调试状态时,强制退出所述应用程序。

【技术特征摘要】
1.一种安卓系统应用程序的保护方法,其特征在于,所述方法包括:在安卓系统应用程序运行时,通过监测特定进程的进程状态文件,确定所述应用程序是否处于被调试状态;所述特定进程为所述应用程序主进程或预先创建的应用程序主进程的子进程;所述应用程序处于被调试状态时,强制退出所述应用程序。2.根据权利要求1所述的方法,其特征在于,所述监测特定进程状态文件包括:监测特定进程的进程状态文件的TracerPid字段的值。3.根据权利要求1或2所述的方法,其特征在于,所述确定所述应用程序是否处于被调试状态,包括:所述应用程序主进程的进程状态文件的TracerPid字段的值非0,或应用程序主进程的子进程的进程状态文件的TracerPid字段的值非0时,确定所述应用程序处于被调试状态;否则,确定所述应用程序未处于被调试状态。4.根据权利要求1或2所述的方法,其特征在于,在确定所述应用程序是否处于被调试状态之前,所述方法还包括:获取预设的反调试函数;所述反调试函数,用于在被执行时,实现第一功能和第二功能;所述第一功能为所述通过监测特定进程的进程状态文件,确定所述应用是否处于被调试状态的功能,所述第二功能为所述应用程序处于被调试状态时,强制退出所述应用程序的功能;所述确定所述应用程序是否处于被调试状态,包括:利用所述应用程序主进程的子进程调用反调试函数,实现所述第一功能;所述应用程序处于被调试状态时,强制退出所述应用程序,包括:在反调试函数实现所述第一功能后,实现所述第二功能。5.根据权利要求4所述的方法,其特征在于,所述获取预设的反调试函数,包括:将预设的反调试函数封装在C语言编写的SO文件中;通过执行SO文件加载函数来调用SO文件中的反调试函数。6.根据权利要求4所述的方法,其特征在于,在获取预设的反调试函数之后,所述方法还包括:在所述反调试函数中创建所述应用程序主进程的子进程。7.根据权利要求4所述的方法,其特征在于,所述利用所述应用程序主进程的子进程调用反调试函数,包括:所述应用程序主进程的子进程每隔n秒调用反调试函数,n为正数。8.根据权利要求...

【专利技术属性】
技术研发人员:耿慧拯石松泉刘芳柏洪涛
申请(专利权)人:中国移动通信集团公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1