一种基于进程状态检测的反调试方法和装置制造方法及图纸

技术编号:16153579 阅读:44 留言:0更新日期:2017-09-06 18:39
本申请公开了一种基于进程状态检测的反调试方法,用于解决现有技术中应用程序攻击者可以利用调试器跟踪目标应用的运行进而可以对目标应用进行恶意攻击和破解的问题,包括:在应用程序运行时,确定目标文件中与所述应用程序对应的第一信息,所述第一信息用于表征所述应用程序的调试状态;若确定所述第一信息不是预设信息,则终止所述应用程序的进程,所述预设信息用于表征所述应用程序未处于被外部进程调试的状态。本申请还公开了一种基于进程状态检测的反调试装置。

【技术实现步骤摘要】
一种基于进程状态检测的反调试方法和装置
本申请涉及计算机
,尤其涉及一种基于进程状态检测的反调试方法和装置。
技术介绍
随着移动互联网产业的快速发展,移动应用程序呈井喷式爆发,其中,基于安卓系统开发的移动安卓应用程序也越来越多,为便于描述下文将安卓应用程序简称为应用程序。由于安卓系统本身具有开源特性,应用程序非常容易遭受木马的侵袭和被盗版,应用程序正逐渐取代电脑端程序成为黑客攻击的主要对象。现有技术中,应用程序攻击者可以利用调试器跟踪应用程序的运行,查看、修改应用程序的内存代码和数据,分析目标应用程序的程序逻辑,从而对应用程序进行攻击和破解的问题。
技术实现思路
本申请实施例提供一种基于进程状态检测的反调试方法,用于解决现有技术中应用程序攻击者可以利用调试器跟踪应用程序的运行进而对应用程序进行恶意攻击和破解的问题。本申请实施例还提供一种基于进程状态检测的反调试装置,用于解决现有技术中应用程序攻击者可以利用调试器跟踪应用程序的运行进而对应用程序进行恶意攻击和破解的问题。本申请实施例采用下述技术方案:一种基于进程状态检测的反调试方法,包括:在应用程序运行时,确定目标文件中与所述应用程序对应的第一信息,所述第一信息用于表征所述应用程序的调试状态;若确定所述第一信息不是预设信息,则终止所述应用程序的进程,所述预设信息用于表征所述应用程序未处于被外部进程调试的状态。一种基于进程状态检测的反调试装置,包括:确定单元,用于在应用程序运行时,确定目标文件中与所述应用程序对应的第一信息,所述第一信息用于表征所述应用程序的调试状态;终止单元,用于若确定所述第一信息不是预设信息,则终止所述应用程序的进程,所述预设信息用于表征所述应用程序未处于被外部进程调试的状态。本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本申请中,在应用程序运行时,由于能够确定目标文件中与该应用程序对应的第一信息,该目标文件中记录有表征该应用程序的调试状态的第一信息,并在确定该第一信息不是预设信息时,终止该应用程序的进程,该预设信息用于表征应用程序未处于被外部进程调试的状态,这样当有其他进程试图调试该应用程序的进程时,便可以终止该应用程序的进程,避免其他外部进程对该应用程序进程进行恶意攻击和破解的问题。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本申请实施例提供的基于进程状态检测的反调试方法的实施流程示意图;图2为本申请实施例提供的基于进程状态检测的反调试装置的结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。以下结合附图,详细说明本申请各实施例提供的技术方案。如
技术介绍
所述,由于安卓系统本身具有开源特性,应用程序攻击者为获取应用程序中包含的数据,往往会对应用程序进行恶意攻击,安卓软件逆向技术也逐渐被这些攻击者恶意利用。在安卓软件逆向技术中,安卓调试技术是一个非常重要的组成部分,通过进行应用程序的调试,可以得到应用程序的运行流程,通常可以非常顺利且快速地绕过一些登录限制或功能限制,获取到一些用户的私密信息,具有较大的危害。攻击者在对应用程序进行调试时,通常是对应用程序对应的进程进行调试,从广义上而言,进程是一个具有一定独立功能的程序关于某个数据集合的几次运行活动,它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。由于每个进程都有自己的地址空间,通常包括文本区域(textregion)、数据区域(dataregion)和堆栈(stackregion),其中,文本区域存储处理器执行的代码,数据区域存储变量和进程执行期间使用的动态分配的内存,堆栈区域存储着进程活动过程调用的指令和本地变量,因此一旦某个应用程序的进程被攻击者进行恶意攻击和破解,便能够获取该应用程序的关键信息和数据。需要说明的是,本申请实施例中的调试指的是利用程序语言提供的调试功能、或者专门的调试工具来分析应用程序的行为。为解决现有技术中应用程序攻击者可以利用调试器跟踪目标应用的运行,从而可以对目标应用进行恶意攻击和破解的问题,本申请实施例提供一种基于进程状态检测的反调试方法,该方法的执行主体可以是实现本申请提供的基于进程状态检测的反调试方法的应用程序。为便于描述,下文以该方法的执行主体是应用程序为例,对该方法的实施方式进行介绍。可以理解,该方法的执行主体为应用程序只是一种示例性的说明,并不应理解为对该方法的限定。本申请提供的基于进程状态检测的反调试方法的实现流程示意图如图1所示,包括下述步骤:步骤11,在应用程序运行时,确定目标文件中与该应用程序对应的第一信息;其中,应用程序运行的状态可以是该应用程序被启动后的状态,第一信息用于表征该应用程序的调试状态,目标文件用于记录表征该应用程序的调试状态的第一信息。该目标文件可以是安卓文件系统根目录/proc/pid/下的stat文件,也可以称为系统状态文件,或者,该目标文件也可以是应用程序的用于记录该应用程序调试状态的文件。可以理解,只要目标文件中记录了表征应用程序的调试状态信息,均应在本申请的保护范围之内。该目标文件中记录了应用程序被调试的状态,该被调试的状态可以以数值、字母或语句的方式体现,在本申请实施例中统称为第一信息。需要说明的是,/proc/pid/下的stat文件中往往包含有多个参数:“pid”,“comm”,“task_state”,“ppid”,“pgid”,“sid”,“tty_nr”,“tty_pgrp”,“task->flags”,等用于表征该进程运行状态的参数。其中,“pid”为该应用程序进程的进程号,“comm”为该应用程序或命令的名称,“task_state”为该进程的任务状态,“ppid”为父进程ID,“pgid”为线程组号,“sid”为该进程的任务所在的会话组ID,“tty_nr”为该任务的tty终端的设备号,“tty_pgrp”为终端的进程组号,“task->flags”为进程标志位。其中,“task_state”的具体状态信息有:①R(task_running)即表明该进程处于可执行状态,②S(task_interruptible)即表明该进程处于可中断的睡眠状态,③D(task_uninterruptible)即表明该进程处于不可中断的睡眠状态,④T(task_stoppedortask_traced)即表明该进程处于暂停状态或被跟踪状态,⑤Z(task_dead-exit_zombie)即退出状态,表明该进程已成为僵尸进程,⑥X(task_dead-exit_dead)即退出状态,表明该进程即将被销毁。在本申请实施例中,首先确定目标文件中的进程号是否为该应用程序的内部进程,然后再确定定“task_state”的具体信息,即第一信息。其中,①当ta本文档来自技高网
...
一种基于进程状态检测的反调试方法和装置

【技术保护点】
一种基于进程状态检测的反调试方法,其特征在于,包括:在应用程序运行时,确定目标文件中与所述应用程序对应的第一信息,所述第一信息用于表征所述应用程序的调试状态;若确定所述第一信息不是预设信息,则终止所述应用程序的进程,所述预设信息用于表征所述应用程序未处于被外部进程调试的状态。

【技术特征摘要】
1.一种基于进程状态检测的反调试方法,其特征在于,包括:在应用程序运行时,确定目标文件中与所述应用程序对应的第一信息,所述第一信息用于表征所述应用程序的调试状态;若确定所述第一信息不是预设信息,则终止所述应用程序的进程,所述预设信息用于表征所述应用程序未处于被外部进程调试的状态。2.如权利要求1所述的方法,其特征在于,确定目标文件中与所述应用程序对应的第一信息,具体包括:确定所述应用程序的进程的进程号;通过轮询方式确定所述目标文件中与所述进程号对应的第一信息。3.如权利要求2所述的方法,其特征在于,若确定所述第一信息不是预设信息,则终止应用程序进程,具体包括:确定与所述进程号对应的预设信息;若确定所述第一信息与确定的所述预设信息不相同,则终止所述应用程序进程。4.如权利要求1所述的方法,其特征在于,所述目标文件为安卓文件系统根目录/proc/pid/下的stat文件。5.如权利要求1所述的方法,其特征在于,所述预设信息至少包括下述一种:用于表征所述进程处于可执行状态的信息;用于表征所述进程处于不可中断的睡眠状态的信息;用于表征所述进程...

【专利技术属性】
技术研发人员:阚志刚陈彪程显龙方宁卢佐华
申请(专利权)人:北京洋浦伟业科技发展有限公司
类型:发明
国别省市:北京,11

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

1