一种反调试方法及装置制造方法及图纸

技术编号:31767685 阅读:10 留言:0更新日期:2022-01-05 16:53
本申请实施例提供一种反调试方法及装置,涉及网络安全技术领域,该反调试方法包括:在目标程序运行的操作系统的系统内存中申请目标虚拟内存片段;然后通过操作系统的内存状态查询接口,查询目标虚拟内存片段的内存状态;再根据内存状态判断目标程序是否处于被调试状态;如果是,则控制目标程序退出运行状态。可见,该方法隐蔽性好,不容易被反

【技术实现步骤摘要】
一种反调试方法及装置


[0001]本申请涉及网络安全
,具体而言,涉及一种反调试方法及装置。

技术介绍

[0002]反调试是一种重要的软件保护技术,特别是在各种游戏保护中被尤其重视。当程序意识到自己可能处于调试中的时候,可能会改变正常的执行路径或者修改自身程序使得受保护程序崩溃,从而增加调试时间和复杂度,有效实现保护自身的权益。现有的反调试方法,通常是检测软件调试器是否存在于计算机上或是否处于运行状态,从而实现反调试。然而在实践中发现,存在通过反

反调试工具隐藏软件调试器的运行状态和存在与否的情况,从而导致现有反调试方法失效。可见,现有方法隐蔽性差,容易被反

反调试技术绕过,从而降低程序保护的安全性。

技术实现思路

[0003]本申请实施例的目的在于提供一种反调试方法及装置,隐蔽性好,不容易被反

反调试技术绕过,反调试技术效果好,有利于提升程序保护的安全性。
[0004]本申请实施例第一方面提供了一种反调试方法,包括:在目标程序运行的操作系统的系统内存中申请目标虚拟内存片段;通过所述操作系统的内存状态查询接口,查询所述目标虚拟内存片段的内存状态;根据所述内存状态判断所述目标程序是否处于被调试状态;如果是,则控制所述目标程序退出运行状态。
[0005]在上述实现过程中,在目标程序运行的操作系统的系统内存中申请目标虚拟内存片段;然后通过操作系统的内存状态查询接口,查询目标虚拟内存片段的内存状态;再根据内存状态判断目标程序是否处于被调试状态;如果是,则控制目标程序退出运行状态。可见,该方法隐蔽性好,不容易被反

反调试技术绕过,反调试技术效果好,有利于提升程序保护的安全性。
[0006]进一步地,所述在目标程序运行的操作系统的系统内存中申请目标虚拟内存片段,包括:在目标程序的主线程中,通过操作系统提供的内存申请接口申请目标虚拟内存片段,并将所述目标虚拟内存片段的初始内存状态指定为保留状态,其中,所述目标程序能够在所述操作系统上运行。
[0007]进一步地,所述通过所述操作系统的内存状态查询接口,查询所述目标虚拟内存片段的内存状态,包括:在所述主线程中创建目标子线程;在所述目标子线程中,通过所述内存状态查询接口查询所述目标虚拟内存片段的内存状态。
[0008]进一步地,所述在所述目标子线程中,通过所述内存状态查询接口查询所述目标虚拟内存片段的内存状态,包括:在所述目标子线程中,扫描所述主线程的工作集状态;以所述工作集状态为查询参数通过所述内存状态查询接口进行内存状态查询,得到接口返回结果;对所述接口返回结果进行解析,得到与所述目标虚拟内存片段的内存状态相关的数据;根据所述内存状态相关的数据确定所述内存状态。
[0009]进一步地,所述根据所述内存状态判断所述目标程序是否处于被调试状态,包括:判断所述内存状态与所述初始内存状态是否一致;如果是,则确定所述目标程序不处于被调试状态;如果否,则确定所述目标程序处于被调试状态,并执行所述的控制所述目标程序退出运行状态。
[0010]进一步地,在所述控制所述目标程序退出运行状态之后,还包括:获取所述操作系统的系统信息,并上报包括所述系统信息的被调试提示信息。
[0011]本申请实施例第二方面提供了一种反调试装置,所述反调试装置包括:内存申请单元,用于在目标程序运行的操作系统的系统内存中申请目标虚拟内存片段;查询单元,用于通过所述操作系统的内存状态查询接口,查询所述目标虚拟内存片段的内存状态;判断单元,用于根据所述内存状态判断所述目标程序是否处于被调试状态;控制单元,用于当判断出所述目标程序处于被调试状态时,则控制所述目标程序退出运行状态。
[0012]在上述实现过程中,内存申请单元在目标程序运行的操作系统的系统内存中申请目标虚拟内存片段;然后查询单元通过操作系统的内存状态查询接口,查询目标虚拟内存片段的内存状态;判断单元再根据内存状态判断目标程序是否处于被调试状态;如果是,控制单元则控制目标程序退出运行状态。可见,该方法隐蔽性好,不容易被反

反调试技术绕过,反调试技术效果好,有利于提升程序保护的安全性。
[0013]进一步地,所述内存申请单元,具体用于在目标程序的主线程中,通过操作系统提供的内存申请接口申请目标虚拟内存片段,并将所述目标虚拟内存片段的初始内存状态指定为保留状态,其中,所述目标程序能够在所述操作系统上运行。
[0014]本申请实施例第三方面提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行本申请实施例第一方面中任一项所述的反调试方法。
[0015]本申请实施例第四方面提供了一种计算机可读存储介质,其存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本申请实施例第一方面中任一项所述的反调试方法。
附图说明
[0016]为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0017]图1为本申请实施例提供的一种反调试方法的流程示意图;图2为本申请实施例提供的另一种反调试方法的流程示意图;图3为本申请实施例提供的一种反调试装置的结构示意图;图4为本申请实施例提供的另一种反调试装置的结构示意图。
具体实施方式
[0018]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
[0019]应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0020]实施例1请参看图1,图1为本申请实施例提供了一种反调试方法的流程示意图。其中,该反调试方法包括:S101、在目标程序运行的操作系统的系统内存中申请目标虚拟内存片段。
[0021]本申请实施例中,该方法应用于Windows操作系统中运行的软件程序。该操作系统具体为Windows操作系统,对此本申请实施例不作限定。
[0022]本申请实施例中,在Windows操作系统中,每个程序都拥有同等大小(一般大于物理内存容量)的虚拟内存地址空间,而实际一台计算机的物理内存容量是有限的,系统会将程序正在使用的虚拟内存地址片段与实际的物理内存相对应,将虚拟内存地址片段与实际的物理内存相对应的过程被称为“映射”。
[0023]S102、通过操作系统的内存状态查询接口,查询目标虚拟内存片段的内存状态。
[0024]S103、根据内存状态判断目标程序是否处于被调试状态,如果是,执行步骤S104;如果否本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种反调试方法,其特征在于,包括:在目标程序运行的操作系统的系统内存中申请目标虚拟内存片段;通过所述操作系统的内存状态查询接口,查询所述目标虚拟内存片段的内存状态;根据所述内存状态判断所述目标程序是否处于被调试状态;如果是,则控制所述目标程序退出运行状态。2.根据权利要求1所述的反调试方法,其特征在于,所述在目标程序运行的操作系统的系统内存中申请目标虚拟内存片段,包括:在目标程序的主线程中,通过操作系统提供的内存申请接口申请目标虚拟内存片段,并将所述目标虚拟内存片段的初始内存状态指定为保留状态,其中,所述目标程序能够在所述操作系统上运行。3.根据权利要求2所述的反调试方法,其特征在于,所述通过所述操作系统的内存状态查询接口,查询所述目标虚拟内存片段的内存状态,包括:在所述主线程中创建目标子线程;在所述目标子线程中,通过所述内存状态查询接口查询所述目标虚拟内存片段的内存状态。4.根据权利要求2所述的反调试方法,其特征在于,所述在所述目标子线程中,通过所述内存状态查询接口查询所述目标虚拟内存片段的内存状态,包括:在所述目标子线程中,扫描所述主线程的工作集状态;以所述工作集状态为查询参数通过所述内存状态查询接口进行内存状态查询,得到接口返回结果;对所述接口返回结果进行解析,得到与所述目标虚拟内存片段的内存状态相关的数据;根据所述内存状态相关的数据确定所述内存状态。5.根据权利要求2所述的反调试方法,其特征在于,所述根据所述内存状态判断所述目标程序是否处于被调试状态,包括:判断所述内存...

【专利技术属性】
技术研发人员:樊兴华薛锋
申请(专利权)人:北京微步在线科技有限公司
类型:发明
国别省市:

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

1