入侵检测方法及装置与流程

文档序号:16579077发布日期:2019-01-14 17:48阅读:261来源:国知局
入侵检测方法及装置与流程

本发明涉及数据保护技术领域,尤其涉及一种入侵检测方法及装置。



背景技术:

android应用开发时,为了保护重要的数据和代码逻辑不易被人破解,会选择使用native实现关键代码,即使用c/c++语言实现,以避免其他用户通过反编译来获知应用程序里的数据和代码逻辑。但是,其他用户仍然可以通过调试器调试native程序、查看汇编代码或伪代码,并配合设置断点和观察断点处上下文寄存器的值来推断出程序执行逻辑,进而获取到程序的关键逻辑,从而利用程序代码的漏洞或者伪造官方应用的数据来非法获利。由此可见,如何防止程序被入侵是一个亟待解决的问题。



技术实现要素:

本申请实施例的目的是提供一种入侵检测方法及装置,用以实现可靠有效地检测是否有外部进程入侵应用进程。

为解决上述技术问题,本申请实施例是这样实现的:

一方面,本申请实施例提供一种入侵检测方法,应用于使用特定语言编写的应用进程,包括:

发出用于检测是否存在外部进程的断点信号应用进程;

获取在预设时间段内对所述断点信号进行监听所得到的监听结果,所述监听结果包括所述应用进程的指定位置对应的寄存器的值是否发生变化的结果;

根据所述监听结果,判断是否能接收到所述断点信号;

若未能接收到所述断点信号,则确定所述应用进程被所述外部进程入侵。

在一个实施例中,所述特定语言包括c/c++语言;所述外部进程包括调试器;

相应的,所述确定所述应用进程被所述外部进程入侵,包括:

确定所述应用进程被所述调试器进行调试。

在一个实施例中,所述根据所述监听结果,判断是否能接收到所述断点信号,包括:

若所述监听结果为所述寄存器的值发生了变化,则确定能接收到所述断点信号;

若所述监听结果为所述寄存器的值未发生变化,则确定未能接收到所述断点信号。

在一个实施例中,所述发出用于检测是否存在外部进程的断点信号之前,所述方法还包括:

当所述应用进程运行之后,确定所述应用进程中的所述指定位置;

将所述指定位置对应的寄存器的值标记为第一数值,以根据所述第一数值及所述寄存器的初始值判断所述寄存器的值是否发生变化;其中,所述第一数值与所述初始值不同。

在一个实施例中,所述根据所述监听结果,判断是否能接收到所述断点信号,还包括:

定位所述应用进程中的所述指定位置;

获取所述指定位置对应的寄存器的当前值;

将所述当前值与所述第一数值及所述初始值进行比对;

若比对结果为所述当前值与所述第一数值相同,则确定所述监听结果为所述寄存器的值发生了变化;若比对结果为所述当前值与所述初始值相同,则确定所述监听结果为所述寄存器的值未发生变化。

在一个实施例中,所述确定所述应用进程被所述外部进程入侵之后,所述方法还包括:

退出所述应用进程,以使所述外部进程无法入侵所述应用进程。

在一个实施例中,所述方法还包括:

若能接收到所述断点信号,则确定所述应用进程未被所述外部进程入侵。

另一方面,本申请实施例提供一种入侵检测装置,应用于使用特定语言编写的应用进程,包括:

发出模块,用于发出用于检测是否存在外部进程的断点信号;

获取模块,用于获取在预设时间段内对所述应用进程进行监听所得到的监听结果,所述监听结果包括所述应用进程的指定位置对应的寄存器的值是否发生变化的结果;

判断模块,用于根据所述监听结果,判断是否能接收到所述断点信号;

第一确定模块,用于若未能接收到所述断点信号,则确定所述应用进程被所述外部进程入侵。

在一个实施例中,所述特定语言包括c/c++语言;所述外部进程包括调试器;

相应的,所述第一确定模块包括:

第一确定单元,用于确定所述应用进程被所述调试器进行调试。

在一个实施例中,所述判断模块包括:

第二确定单元,用于若所述监听结果为所述寄存器的值发生了变化,则确定能接收到所述断点信号;

第三确定单元,用于若所述监听结果为所述寄存器的值未发生变化,则确定未能接收到所述断点信号。

在一个实施例中,所述装置还包括:

第二确定模块,用于所述发出用于检测是否存在外部进程的断点信号之前,当所述应用进程运行之后,确定所述应用进程中的所述指定位置;

标记模块,用于将所述指定位置对应的寄存器的值标记为第一数值,以根据所述第一数值及所述寄存器的初始值判断所述寄存器的值是否发生变化;其中,所述第一数值与所述初始值不同。

在一个实施例中,所述判断模块还包括:

定位单元,用于定位所述应用进程中的所述指定位置;

获取模块,用于获取所述指定位置对应的寄存器的当前值;

比对单元,用于将所述当前值与所述第一数值及所述初始值进行比对;

第四确定单元,用于若比对结果为所述当前值与所述第一数值相同,则确定所述监听结果为所述寄存器的值发生了变化;若比对结果为所述当前值与所述初始值相同,则确定所述监听结果为所述寄存器的值未发生变化。

在一个实施例中,所述装置还包括:

退出模块,用于所述确定所述应用进程被所述外部进程入侵之后,退出所述应用进程,以使所述外部进程无法入侵所述应用进程。

在一个实施例中,所述装置还包括:

第三确定模块,用于若能接收到所述断点信号,则确定所述应用进程未被所述外部进程入侵。

再一方面,本申请实施例提供一种入侵检测设备,应用于使用特定语言编写的应用进程,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

发出用于检测是否存在外部进程的断点信号;

获取在预设时间段内对所述应用进程进行监听所得到的监听结果,所述监听结果包括所述应用进程的指定位置对应的寄存器的值是否发生变化的结果;

根据所述监听结果,判断是否能接收到所述断点信号;

若未能接收到所述断点信号,则确定所述应用进程被所述外部进程入侵。

再一方面,本申请实施例提供一种存储介质,用于存储计算机可执行指令,所述可执行指令在被执行时实现以下流程:

发出用于检测是否存在外部进程的断点信号;

获取在预设时间段内对所述应用进程进行监听所得到的监听结果,所述监听结果包括所述应用进程的指定位置对应的寄存器的值是否发生变化的结果;

根据所述监听结果,判断是否能接收到所述断点信号;

若未能接收到所述断点信号,则确定所述应用进程被所述外部进程入侵。

采用本发明实施例的技术方案,通过主动发出断点信号,并获取在预设时间段内对断点信号进行监听所得到的监听结果,进而根据监听结果判断能否接收到断点信号,若能接收到断点信号,则可确定应用进程被外部进程所入侵。可见,相较于现有技术中应用进程只能被动地被外部进程入侵而言,该技术方案能够通过主动发出断点信号来可靠有效地判断应用进程是否被外部进程入侵,从而避免无法检测外部进程入侵时导致应用进程受外部进程操控的情况;并且,应用进程主动发出的断点信号如果被外部进程所接收,则会使外部进程自己的信号监听处理失效,因此使得外部进程无法规避这种检测。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明一实施例的一种入侵检测方法的示意性流程图;

图2是根据本发明一具体实施例的一种入侵检测方法的示意性流程图;

图3是根据本发明一具体实施例的一种入侵检测方法中调试器的示意性界面图;

图4是根据本发明一具体实施例的一种入侵检测方法中应用进程的示意性界面图;

图5是根据本发明一实施例的一种入侵检测装置的示意性框图;

图6是根据本发明一实施例的一种入侵检测设备的示意性框图。

具体实施方式

本申请实施例提供一种入侵检测方法及装置,用以实现可靠有效地检测是否有外部进程入侵应用进程。

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

图1是根据本发明一实施例的一种入侵检测方法的示意性流程图,如图1所示,该方法应用于使用特定语言编写的应用进程,包括:

s101,发出用于检测是否存在外部进程的断点信号。

其中,断点信号即sigtrap信号。

现有技术中,应用进程是无法主动发出断点信号的,只有在外部进程入侵(如被调试器调试)时,由外部进程发出断点信号,并由外部进程接收该断点信号进行相应处理。而在s101中,应用进程能够主动发出断点信号,以判断是否存在外部进程。

s102,获取在预设时间段内对应用进程进行监听所得到的监听结果,其中,监听结果包括应用进程的指定位置对应的寄存器的值是否发生变化的结果。

其中,预设时间段为获取监听结果之前、发出断点信号之后的时间段,其可以是发出断点信号之后的整个时间段,也可以是发出断点信号之后的指定时间段,如发出断点信号之后的一分钟到五分钟之间的时间段。对应用进程的监听主要包括监听应用进程的指定位置对应的寄存器的值是否发生变化。

s103,根据监听结果,判断是否能接收到断点信号。

s104,若未能接收到断点信号,则确定应用进程被外部进程入侵。

该步骤中,若存在外部进程入侵应用进程,则外部进程会拦截应用进程所发出的断点信号,导致应用进程无法接收到断点信号。

此外,若能接收到断点信号,则确定应用进程未被外部进程所入侵。

本实施例中,应用进程若能接收到断点信号,也不会对应用进程的运行造成任何影响,即,应用进程不会因接收到断点信号而暂停运行。

采用本发明实施例的技术方案,通过主动发出断点信号,并获取在预设时间段内对断点信号进行监听所得到的监听结果,进而根据监听结果判断能否接收到断点信号,若能接收到断点信号,则可确定应用进程被外部进程所入侵。可见,相较于现有技术中应用进程只能被动地被外部进程入侵而言,该技术方案能够通过主动发出断点信号来可靠有效地判断应用进程是否被外部进程入侵,从而避免无法检测外部进程入侵时导致应用进程受外部进程操控的情况;并且,应用进程主动发出的断点信号如果被外部进程所接收,则会使外部进程自己的信号监听处理失效,因此使得外部进程无法规避这种检测。

在一个实施例中,特定语言包括c/c++语言;外部进程包括调试器。因此,执行s103根据监听结果判断是否能接收到断点信号之后,若未能接收到断点信号,则确定应用进程被调试器进行调试;若能接收到断点信号,则确定应用进程未被调试器进行调试。

本实施例相较于现有技术中应用进程只能被动地被调试器进行调试而言,能够通过主动发出断点信号来可靠有效地判断应用进程是否被调试器进行调试,从而避免无法检测调试器调试应用进程时导致应用进程中断运行的情况;并且,应用进程主动发出的断点信号如果被调试器所接收,则会使调试器自己的信号监听处理失效,因此使得调试器无法规避这种检测。

在一个实施例中,在根据监听结果判断是否能接收到断点信号时,若监听结果为寄存器的值发生了变化,则确定能接收到断点信号;若监听结果为寄存器的值未发生变化,则确定未能接收到断点信号。

以下详细说明如何判断寄存器的值是否发生了变化。

在一个实施例中,应用进程开始运行之后,确定应用进程中的指定位置,并将该指定位置对应的寄存器的值标记为第一数值,以根据第一数值及寄存器的初始值判断寄存器的值是否发生变化;其中,第一数值与初始值不同。

基于上述实施例(即将指定位置对应的寄存器的值标记为第一数值),可在判断寄存器的值是否发生变化时,可先定位应用进程中的指定位置,该指定位置即为标记寄存器的值所对应的位置,然后获取指定位置对应的寄存器的当前值,并将寄存器的当前值与第一数值(即标记后的寄存器的值)及初始值进行比对。若寄存器的当前值与第一数值相同,则说明寄存器的值发生了变化,此时可确定应用进程能接收到断点信号;若寄存器的当前值与初始值相同,则说明寄存器的值未发生变化,此时可确定应用进程未能接收到断点信号。

在一个实施例中,确定应用进程被外部进程入侵之后,可退出应用进程,以使外部进程无法入侵应用进程。

本实施例能够在确定应用进程被外部进程入侵之后,及时退出应用进程,使得外部进程无法继续对应用进程入侵,确保了应用进程的安全。

下面以一具体实施例来说明本发明提供的入侵检测方法。

在一具体实施例中,应用进程采用c/c++语言编写。应用进程通过主动发出断点信号来判断是否存在调试器调试进程。图2是根据本具体实施例的入侵检测方法的示意性流程图,如图2所示,该方法应用于应用进程,包括:

s201,运行应用进程。

s202,确定应用进程中的指定位置。

其中,指定位置可以是应用进程中的任一位置。

s203,将指定位置对应的寄存器的值标记为第一数值,该第一数值与指定位置对应的寄存器的初始值不同。

例如,若指定位置对应的寄存器的初始值为3211h,那么可将指定位置对应的寄存器的值标记为任意与初始值不同的第一数值,如标记为3212h。

s204,发出断点信号,并对应用进程进行监听。

其中,断点信号即sigtrap信号。应用进程可按照预设频率发出断点信号,以提高对外部进程的实时监测的成功率。

该步骤中,可设置用于监听应用进程的监听函数,并利用监听函数监听应用进程。对应用进程的监听主要包括监听应用进程的指定位置对应的寄存器的值是否发生变化。

s205,定位应用进程中的指定位置,并获取指定位置对应的寄存器的当前值。

s206,将当前值与第一数值及初始值进行比对,得到比对结果。

s207,判断比对结果中当前值与第一数值或者初始值相同。若当前值与第一数值相同,则执行s208;若当前值与初始值相同,则执行s210。

s208,确定监听结果为寄存器的值发生了变化,进而确定应用进程能接收到断点信号。

s209,确定应用进程未被调试器所调试,继续运行应用进程。

s210,确定监听结果为寄存器的值未发生变化,进而确定应用进程能接收到断点信号。

s211,确定应用进程被调试器所调试,退出应用进程。

例如,指定位置对应的寄存器的初始值为3211h,针被标记的第一数值为3212h。

在发出断点信号、并监听应用进程时,若获得的指定位置对应的寄存器的当前值为3211h,说明寄存器的当前值与初始值相同,即寄存器的值未发生变化,此时针对寄存器的值所标记后的第一数值未生效(即标记失败),说明应用进程被调试器所调试,导致应用进程的指定位置对应的寄存器的值无法正常进行标记。

若获得的指定位置对应的寄存器的当前值为3212h,说明寄存器的当前值与标记后的第一数值相同,即寄存器的值发生了变化,此时针对寄存器的值所标记的第一数值生效(即标记成功),说明应用进程未被调试器所调试。

可见,相较于现有技术中应用进程只能被动地被调试器所调试而言,该技术方案能够通过主动发出断点信号来可靠有效地判断应用进程是否被调试器所调试,从而避免无法检测调试器调试应用进程时导致应用进程中断运行的情况;并且,应用进程主动发出的断点信号如果被调试器所接收,则会使调试器自己的信号监听处理失效,因此使得调试器无法规避这种检测。再者,本实施例能够在确定应用进程被调试器所调试之后,及时退出应用进程,使得调试器无法继续对应用进程进行调试,确保了应用进程的安全。

下面以一具体场景实施例来说明本发明提供的入侵检测方法。

在一具体场景实施例中,应用a采用c/c++语言编写。应用a在执行时,主动发出断点信号(即sigtrap信号)来判断是否存在调试器调试应用a。假设采用android常用调试工具idapro调试应用a,且调试工具idapro内未设置任何断点。但由于应用a主动发出了断点信号,因此调试工具idapro会拦截该断点信号并接收,从而显示收到断点信号。如图3所示,图中的“gotsigtrapsignal”即表示调试工具idapro已接收到断点信号。

此时若继续执行应用a,则应用a会提示执行方式,如图4所示,用户通过点击提示窗口下方的任一选项(包括选项“suspend(don’tresume)”、选项“no(discard)”以及选项yes(passtoapp))来选择执行方式。由于断点信号已被调试工具idapro所拦截,因此无论选择何种执行方式,应用a均无法接收到断点信号,这种情况下即可确定当前有调试器在运行。

综上,已经对本主题的特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作可以按照不同的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序,以实现期望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。

以上为本申请实施例提供的入侵检测方法,基于同样的思路,本申请实施例还提供一种入侵检测装置。

图5是根据本发明一实施例的一种入侵检测装置的示意性框图,如图5所示,该装置500应用于使用特定语言编写的应用进程,包括:

发出模块510,用于发出用于检测是否存在外部进程的断点信号;

获取模块520,用于获取在预设时间段内对所述应用进程进行监听所得到的监听结果,所述监听结果包括所述应用进程的指定位置对应的寄存器的值是否发生变化的结果;

判断模块530,用于根据所述监听结果,判断是否能接收到所述断点信号;

第一确定模块540,用于若未能接收到所述断点信号,则确定所述应用进程被所述外部进程入侵。

在一个实施例中,所述特定语言包括c/c++语言;所述外部进程包括调试器;

相应的,所述第一确定模块540包括:

第一确定单元,用于确定所述应用进程被所述调试器进行调试。

在一个实施例中,

所述判断模块530包括:

第二确定单元,用于若所述监听结果为所述寄存器的值发生了变化,则确定能接收到所述断点信号;

第三确定单元,用于若所述监听结果为所述寄存器的值未发生变化,则确定未能接收到所述断点信号。

在一个实施例中,所述装置还包括:

第二确定模块,用于所述发出用于检测是否存在外部进程的断点信号之前,当所述应用进程运行之后,确定所述应用进程中的所述指定位置;

标记模块,用于将所述指定位置对应的寄存器的值标记为第一数值,以根据所述第一数值及所述寄存器的初始值判断所述寄存器的值是否发生变化;其中,所述第一数值与所述初始值不同。

在一个实施例中,所述判断模块还包括:

定位单元,用于定位所述应用进程中的所述指定位置;

获取模块,用于获取所述指定位置对应的寄存器的当前值;

比对单元,用于将所述当前值与所述第一数值及所述初始值进行比对;

第四确定单元,用于若比对结果为所述当前值与所述第一数值相同,则确定所述监听结果为所述寄存器的值发生了变化;若比对结果为所述当前值与所述初始值相同,则确定所述监听结果为所述寄存器的值未发生变化。

在一个实施例中,所述装置还包括:

退出模块,用于所述确定所述应用进程被所述外部进程入侵之后,退出所述应用进程,以使所述外部进程无法入侵所述应用进程。

在一个实施例中,所述装置还包括:

第三确定模块,用于若能接收到所述断点信号,则确定所述应用进程未被所述外部进程入侵。

采用本发明实施例的装置,通过主动发出断点信号,并获取在预设时间段内对断点信号进行监听所得到的监听结果,进而根据监听结果判断能否接收到断点信号,若能接收到断点信号,则可确定应用进程被外部进程所入侵。可见,相较于现有技术中应用进程只能被动地被外部进程入侵而言,该技术方案能够通过主动发出断点信号来可靠有效地判断应用进程是否被外部进程入侵,从而避免无法检测外部进程入侵时导致应用进程受外部进程操控的情况;并且,应用进程主动发出的断点信号如果被外部进程所接收,则会使外部进程自己的信号监听处理失效,因此使得外部进程无法规避这种检测。

本领域的技术人员应可理解,图5中的入侵检测装置能够用来实现前文所述的入侵检测方法,其中的细节描述应与前文方法部分描述类似,为避免繁琐,此处不另赘述。

基于同样的思路,本申请实施例还提供一种入侵检测设备,如图6所示。入侵检测设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器601和存储器602,存储器602中可以存储有一个或一个以上存储应用程序或数据。其中,存储器602可以是短暂存储或持久存储。存储在存储器602的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对入侵检测设备中的一系列计算机可执行指令。更进一步地,处理器601可以设置为与存储器602通信,在入侵检测设备上执行存储器602中的一系列计算机可执行指令。入侵检测设备还可以包括一个或一个以上电源603,一个或一个以上有线或无线网络接口604,一个或一个以上输入输出接口605,一个或一个以上键盘606。

具体在本实施例中,入侵检测设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对入侵检测设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:

发出用于检测是否存在外部进程的断点信号;

获取在预设时间段内对所述应用进程进行监听所得到的监听结果,所述监听结果包括所述应用进程的指定位置对应的寄存器的值是否发生变化的结果;

根据所述监听结果,判断是否能接收到所述断点信号;

若未能接收到所述断点信号,则确定所述应用进程被所述外部进程入侵。

可选地,所述特定语言包括c/c++语言;所述外部进程包括调试器;

相应的,计算机可执行指令在被执行时,还可以使所述处理器:

确定所述应用进程被所述调试器进行调试。

可选地,计算机可执行指令在被执行时,还可以使所述处理器:

若所述监听结果为所述寄存器的值发生了变化,则确定能接收到所述断点信号;

若所述监听结果为所述寄存器的值未发生变化,则确定未能接收到所述断点信号。

可选地,计算机可执行指令在被执行时,还可以使所述处理器:

所述发出用于检测是否存在外部进程的断点信号之前,当所述应用进程运行之后,确定所述应用进程中的所述指定位置;

将所述指定位置对应的寄存器的值标记为第一数值,以根据所述第一数值及所述寄存器的初始值判断所述寄存器的值是否发生变化;其中,所述第一数值与所述初始值不同。

可选地,计算机可执行指令在被执行时,还可以使所述处理器:

定位所述应用进程中的所述指定位置;

获取所述指定位置对应的寄存器的当前值;

将所述当前值与所述第一数值及所述初始值进行比对;

若比对结果为所述当前值与所述第一数值相同,则确定所述监听结果为所述寄存器的值发生了变化;若比对结果为所述当前值与所述初始值相同,则确定所述监听结果为所述寄存器的值未发生变化。

可选地,计算机可执行指令在被执行时,还可以使所述处理器:

所述确定所述应用进程被所述外部进程入侵之后,退出所述应用进程,以使所述外部进程无法入侵所述应用进程。

可选地,计算机可执行指令在被执行时,还可以使所述处理器:

若能接收到所述断点信号,则确定所述应用进程未被所述外部进程入侵。

本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行上述入侵检测方法,并具体用于执行:

发出用于检测是否存在外部进程的断点信号;

获取在预设时间段内对所述应用进程进行监听所得到的监听结果,所述监听结果包括所述应用进程的指定位置对应的寄存器的值是否发生变化的结果;

根据所述监听结果,判断是否能接收到所述断点信号;

若未能接收到所述断点信号,则确定所述应用进程被所述外部进程入侵。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1