CN112527677A - 应用程序的保护方法及电子设备 - Google Patents

应用程序的保护方法及电子设备 Download PDF

Info

Publication number
CN112527677A
CN112527677A CN202011537153.1A CN202011537153A CN112527677A CN 112527677 A CN112527677 A CN 112527677A CN 202011537153 A CN202011537153 A CN 202011537153A CN 112527677 A CN112527677 A CN 112527677A
Authority
CN
China
Prior art keywords
instruction
data
application program
queue
instruction queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011537153.1A
Other languages
English (en)
Other versions
CN112527677B (zh
Inventor
孙吉平
姚玮斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Senseshield Technology Co Ltd
Original Assignee
Beijing Senseshield Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Senseshield Technology Co Ltd filed Critical Beijing Senseshield Technology Co Ltd
Priority to CN202011537153.1A priority Critical patent/CN112527677B/zh
Publication of CN112527677A publication Critical patent/CN112527677A/zh
Application granted granted Critical
Publication of CN112527677B publication Critical patent/CN112527677B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种应用程序的保护方法及电子设备,其中,该方法包括根据获取的第一指令队列中的第一指令,确定第一指令序列中的目标指令的存储地址;根据获取的第一指令队列中的第二指令,从存储地址所指示的存储空间处获取第一数据;根据获取的第一指令队列中的第三指令,从存储地址所指示的存储空间处获取第二数据;其中,在初始状态下,第三指令为第一指令队列中紧邻目标指令的前一条指令;根据获取的第一指令队列中的目标指令,确定第一数据和第二数据是否相同,在不相同的情况下,确定存在针对应用程序的调试操作。该方法能够准确的确定是否存在针对应用程序的调试操作。

Description

应用程序的保护方法及电子设备
技术领域
本申请涉及应用程序保护技术领域,特别涉及一种应用程序的保护方法及电子设备。
背景技术
随着计算机和逆向分析技术的不断发展,应用程序行业迅速发展的同时,所面临的威胁也越来越大。攻击者利用逆向技术对对应用程序的关键逻辑进行分析,继而对应用程序进行复制和盗版的行为越来越多。
在众多逆向分析技术中,以动态调试技术最为常用。动态调试技术通过追踪分析应用程序的指令,来分析应用程序的关键逻辑,通常情况下,利用动态分析技术可以清楚的分析出应用程序的关键逻辑,对应用程序的威胁较大。因此,如何应对应用程序的动态调试操作成为亟待解决的技术问题。
发明内容
有鉴于现有技术中存在的上述问题,本申请提供了一种应用程序的保护方法及电子设备,本申请实施例采用的技术方案如下:
一种应用程序的保护方法,所述应用程序包括第一指令队列,所述第一指令队列包括多个顺序排列的指令,所述方法包括:
根据获取的所述第一指令队列中的第一指令,确定所述第一指令序列中的目标指令的存储地址;
根据获取的所述第一指令队列中的第二指令,从所述存储地址所指示的存储空间处获取第一数据;
根据获取的所述第一指令队列中的第三指令,从所述存储地址所指示的存储空间处获取第二数据;其中,在初始状态下,所述第三指令为所述第一指令队列中紧邻所述目标指令的前一条指令;
根据获取的所述第一指令队列中的目标指令,确定所述第一数据和所述第二数据是否相同,在不相同的情况下,确定存在针对所述应用程序的调试操作。
在一些实施例中,所述确定存在针对所述应用程序的调试操作,包括:
确定在所述第一指令队列中位于所述第三指令之后插入了断点指令,存在针对所述应用程序的调试操作,终止所述应用程序的运行。
在一些实施例中,在确定所述第一数据和所述第二数据相同的情况下,确定不存在针对所述应用程序的调试操作,继续执行所述第一指令队列中的指令。
在一些实施例中,确定所述第一指令序列中的目标指令的存储地址,包括:
确定所述目标指令的存储地址,并将所述存储地址存储于第一寄存器中。
在一些实施例中,所述从所述存储地址所指示的存储空间处获取第一数据,包括:
从所述存储地址所指示的存储空间处获取所述第一数据,将所述第一数据存储于第二寄存器中。
在一些实施例中,所述从所述存储地址所指示的存储空间处获取第二数据,包括:
从所述存储地址所指示的存储空间处获取所述第二数据,将所述第二数据存储于所述第一寄存器中。
在一些实施例中,所述根据获取的所述第一指令队列中的目标指令,确定所述第一数据和所述第二数据是否相同,包括:
获取所述目标指令,基于所述目标指令分别从所述第一寄存器和所述第二寄存器获取所述第一数据和所述第二数据;
确定所述第一数据和所述第二数据是否相同。
在一些实施例中,所述方法还包括混淆操作,所述混淆操作包括:
对所述第一指令队列和至少一个第二指令队列进行代码混淆,以隐藏所述第一指令队列和所述第二指令队列的指令逻辑。
一种电子设备,存储有应用程序,所述应用程序包括第一指令队列,所述第一指令队列包括多个顺序排列的指令,所述电子设备包括:
第一确定模块,用于根据获取的所述第一指令队列中的第一指令,确定所述第一指令序列中的目标指令的存储地址;
第一获取模块,用于根据获取的所述第一指令队列中的第二指令,从所述存储地址所指示的存储空间处获取第一数据;
第二获取模块,用于根据获取的所述第一指令队列中的第三指令,从所述存储地址所指示的存储空间处获取第二数据;其中,在初始状态下,所述第三指令为所述第一指令队列中紧邻所述目标指令的前一条指令;
第二确定模块,用于根据获取的所述第一指令队列中的目标指令,确定所述第一数据和所述第二数据是否相同,在不相同的情况下,确定存在针对所述应用程序的调试操作。
一种电子设备,至少包括存储器和处理器,所述存储器上存储有应用程序,所述处理器在执行所述存储器上的应用行程序时实现如上任一项所述的方法。
本申请实施例的应用程序的保护方法,利用调试器对应用程序进行调试时通常会将运行地址所指示的存储空间中的指令修改为断点指令的特性,通过在应用程序中插入作为检测程序的第一指令队列,执行该第一指令队列的指令,能够获取目标指令的存储地址,并在不同的运行节点基于目标指令的存储地址分别获取第一数据和第二数据,如果第一数据和第二数据不同,即可确定存在针对该应用程序的调试操作。由于处理器运行指令的速度通常较快,简短的几个指令占用的处理资源较少,可在基本不影响应用程序的运行流程性的情况下,准确的确定是否存在针对应用程序的调试操作,以便能够在准确的时机执行预设的反调试操作,避免影响应用程序的正常运行,又能够防止调试操作。
附图说明
图1为本申请实施例的应用程序的保护方法的流程图;
图2为本申请实施例的应用程序的保护方法的一个具体实施例的流程图;
图3为本申请实施例的电子设备的结构框图。
具体实施方式
此处参考附图描述本申请的各种方案以及特征。
应理解的是,可以对此处申请的实施例做出各种修改。因此,上述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本申请的范围和精神内的其他修改。
包含在说明书中并构成说明书的一部分的附图示出了本申请的实施例,并且与上面给出的对本申请的大致描述以及下面给出的对实施例的详细描述一起用于解释本申请的原理。
通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本申请的这些和其它特性将会变得显而易见。
还应当理解,尽管已经参照一些具体实例对本申请进行了描述,但本领域技术人员能够确定地实现本申请的很多其它等效形式。
当结合附图时,鉴于以下详细说明,本申请的上述和其他方面、特征和优势将变得更为显而易见。
此后参照附图描述本申请的具体实施例;然而,应当理解,所申请的实施例仅仅是本申请的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免不必要或多余的细节使得本申请模糊不清。因此,本文所申请的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本申请。
本说明书可使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本申请的相同或不同实施例中的一个或多个。
调试器对应用程序进行调试时,通常会将运行地址所指示的存储空间中的指令修改为断点指令,从而让应用程序中断在需要的地方,方便其对应用程序的逻辑和状态进行分析。
本申请实施例提供了一种应用程序的保护方法,通过在应用程序中配置一个包括多个顺序排列的指令的第一指令队列,能够准确确定该应用程序运行过程中是否被插入断点指令,继而准确确定是否存在针对该应用程序的调试操作。
图1为本申请实施例的应用程序的保护方法的流程图,参见图1所示,本申请实施例的应用程序的保护方法的具体包括如下步骤:
S1,根据获取的所述第一指令队列中的第一指令,确定所述第一指令序列中的目标指令的存储地址。
其中,该第一指令队列作为检测程序的插入到应用程序中的主程序中,以该应用程序为办公程序为例,则主程序为用于执行各种办公操作的程序,以该应用程序为一检测程序为例,则主程序为用于执行检测操作的程序。在实际应用时,可在应用程序中插入一个第一指令队列,也可插入多个作为检测程序的第一指令队列,以充分保护应用程序。
该第一指令队列包括多个顺序排列的指令,例如,第一指令、第二指令、第三指令及目标指令可以依次顺序排列。当然,在不影响本申请实施力的方法执行的情况下,可在第一指令和第二指令之间,或者第二指令和第三指令之间插入一个或多个其他指令。
在处理器运行该第一指令队列时,首先从第一指令队列中调取第一指令,执行该第一指令能够确定第一指令队列中目标指令的存储地址。该存储地址可为目标指令所在内存空间的地址,也可为该目标指令所在地址空间中的地址。在具体实施时,获取到该目标指令的存储地址,可将该存储地址存储在第一寄存器中,以备调用。
S2,根据获取的所述第一指令队列中的第二指令,从所述存储地址所指示的存储空间处获取第一数据。
在具体实施时,在获取到目标指令的存储地址的情况下,从第一指令队列中调取并执行第二指令,从第一寄存器中调取存储地址,基于该存储地址从所指示的存储空间中获取第一数据。在获取到该第一数据的情况下,可将该第一数据存储到第二寄存器中,以供调用。
第二指令与目标指令之间至少还间隔有第三指令,在运行第二指令时,目标指令并非作为下一条待运行指令,目标指令的存储地址也并非作为运行地址,即使存在针对该应用程序的调试操作,按照调试器插入断点指令的原理,此时存储地址所指示的存储空间中目标指令也不会被修改为断点指令,基于存储地址获取的第一数据一定是目标指令。
S3,根据获取的所述第一指令队列中的第三指令,从所述存储地址所指示的存储空间处获取第二数据;其中,在初始状态下,所述第三指令为所述第一指令队列中紧邻所述目标指令的前一条指令。
在具体实施时,可从第一指令队列中调取第三指令,执行该第三指令,再次从第一寄存器中调取存储地址,并基于该存储地址从所指示的存储空间中调取第二数据,调取的第二数据可存储在第一寄存器中,当然,也可存储在另一个寄存器中。此时已经不再需要存储地址,将第二数据存储的第一寄存器中可以节省寄存空间。
第三指令为第一指令队列中目标指令的前一条指令,在执行第三指令时,目标指令的存储地址即为运行地址,按照调试器插入断点指令的原理,如果存在针对该应用程序的动态调试操作,则会将存储地址所指令的存储空间中的目标指令修改为断点指令,也即,如果存在针对该应用程序的动态调试操作,执行第三指令从存储地址所指示的存储空间中获取的第二数据应为断点指令,而非目标指令。
S4,根据获取的所述第一指令队列中的目标指令,确定所述第一数据和所述第二数据是否相同,在不相同的情况下,确定存在针对所述应用程序的调试操作。
调试器针对应用程序进行调试过程中,通过插入断点指令来中断程序,目的在于逐条分析应用程序中指令,并不会替换或删除应用程序中的指令。即使存在针对应用程序的调试操作,在断点指令执行过后,第一指令队列中的目标指令仍然会被调用并执行。执行该目标指令,能够从第一寄存器调取第二数据,还能够从第二寄存器调取第一数据,继而确定该第一数据和第二数据是否相同。
在第一数据一定为目标指令的情况下,如果第二数据与第一数据不同,则表明存在修改存储地址所指示的存储空间中的指令的行为,确定在第一指令队列中位于第三指令之后插入了断点指令,进而确定存在针对应用程序的调试操作。
本申请实施例的应用程序的运行方法,利用调试器对应用程序进行调试时通常会将运行地址所指示的存储空间中的指令修改为断点指令的特性,通过在应用程序中插入作为检测程序的第一指令队列,执行该第一指令队列的指令,能够获取目标指令的存储地址,并在不同的运行节点基于目标指令的存储地址分别获取第一数据和第二数据,如果第一数据和第二数据不同,即可确定存在针对该应用程序的调试操作。由于处理器运行指令的速度通常较快,简短的几个指令占用的处理资源较少,可在基本不影响应用程序的运行流程性的情况下,准确的确定是否存在针对应用程序的调试操作,以便能够在准确的时机执行预设的反调试操作,避免影响应用程序的正常运行,又能够防止调试操作。
在具体实施时,确定存在针对应用程序的调试操作的情况下,可通过多种方法来阻止调试操作的进行,也即,反调试操作可具有多种具体的操作方式。
在一个实施例中,所述确定存在针对所述应用程序的调试操作,可包括:
确定在所述第一指令队列中位于所述第三指令之后插入了断点指令,存在针对所述应用程序的调试操作,终止所述应用程序的运行。
在实际应用时,该应用程序还可包括一错误指令队列,在确定存在针对应用程序的调试操作的情况下,调取该错误指令队列,并根据该错误指令队列终止应用程序的运行。调试操作是伴随应用程序运行过程针对应应用程序的代码所及所执行的分析操作,应用程序终止运行,可以有效组织调试操作。
在另一个实施例中,该反调试操作不仅限于终止应用程序的运行,该错误指令队列也可为一循环陷阱指令队列,在确定存在针对应用程序的调试操作的情况下,可执行该错误指令队列,并由此循环执行所述错误指令队列中的指令,以使应用程序的运行陷入无限循环,从而防止调试操作的运行。
配合图2所示,在一些实施例中,在确定所述第一数据和所述第二数据相同的情况下,确定不存在针对所述应用程序的调试操作,继续执行所述第一指令队列中的指令。
其中,第一数据一定为目标指令,在确定第一数据和第二数据相同的情况下,则表明第二数据也是目标指令,则不存在向应用程序中插入断点指令的操作,也就不存在通过调试器执行的调试操作,此时可继续执行第一指令队列中的其他指令。以该应用程序包括主程序和作为检测程序的第一指令队列为例,该其他指令可用于引导处理器继续执行主程序中指令,以保证应用程序的正常运行。
在一些实施例中,所述方法还可包括混淆操作,所述混淆操作包括:
对所述第一指令队列和至少一个第二指令队列进行代码混淆,以隐藏所述第一指令队列和所述第二指令队列的指令逻辑。
其中,该第二指令队列可包括例如应用程序的主程序,也可包括错误指令队列,通过对第一指令队列和第二指令队列执行混淆操作,能够将第一指令队列和第二指令队列中指令进行等价变换,在不影响原有代码逻辑的情况下,使指令难以阅读、反编译以及动态调试,从而实现保护应用程序的目的,防止应用程序被破解。通过混淆操作可以隐藏第一指令队列的指令逻辑,使得作为检测程序的第一指令队列难以辨识,避免在进行调试操作时有意避开该第一指令队列而使得检测失效。在具体实施时,该保护方法可应用于ARM架构的应用程序保护,也可应用于AARCH64架构的应用程序保护,或者Thumb架构的应用程序保护。
以下以ARM指令为例,通过一个实例来对本申请的方案作说明。
1.插入指令,用于定位“检测指令”的指令地址,存放在寄存器R0中。
2.插入指令,读取通过步骤1中寄存器所在地址的值,用于读取“检测指令”的地址的值,存放在寄存器R1中。
3.插入指令,再次读取通过步骤1中寄存器所在地址的值,存放在R0中。
4.插入检测指令,比较寄存器R0和R1的值是否相等,由于调试器进行Run Trace时,会将执行地址处的指令改为“断点指令”(#BRK 0),会导致步骤3中读到的指令发生变化,使用R0和R1的值不同。
5.插入错误处理的指令,检测到Run Trace时不再正常执行,干扰破解分析。
在本实例中,可以在混淆过程中插入以下指令:
Obfuscate_code:
#获取检测指令的地址(l_check):
LDR R0,=l_check
#读取正常的指令
LDR R0,[R0]
#读取实际的指令
LDR R1,[R0]
l_check:
#检测结果
TST R0,R1
BNE l_error:
#执行正确指令
#some code…
L_error:
#执行错误指令
应理解,上述例子中使用了动态读取检测指令的方式,本方案亦可使用硬编码等其他可能的方式来实现。示例性地,当采用硬编码的方式来读取检测指令时,将检测的指令在混淆过程中读取,再硬编码比较。
参见图3所示,本申请实施例还提供了一种电子设备,其存储有应用程序,所述应用程序包括第一指令队列,所述第一指令队列包括多个顺序排列的指令,所述电子设备包括:
第一确定模块10,用于根据获取的所述第一指令队列中的第一指令,确定所述第一指令序列中的目标指令的存储地址;
第一获取模块20,用于根据获取的所述第一指令队列中的第二指令,从所述存储地址所指示的存储空间处获取第一数据;
第二获取模块30,用于根据获取的所述第一指令队列中的第三指令,从所述存储地址所指示的存储空间处获取第二数据;其中,在初始状态下,所述第三指令为所述第一指令队列中紧邻所述目标指令的前一条指令;
第二确定模块40,用于根据获取的所述第一指令队列中的目标指令,确定所述第一数据和所述第二数据是否相同,在不相同的情况下,确定存在针对所述应用程序的调试操作。
在一些实施例中,所述第二确定模块40具体用于:
确定在所述第一指令队列中位于所述第三指令之后插入了断点指令,存在针对所述应用程序的调试操作,终止所述应用程序的运行。
在一些实施例中,所述第二确定模块40进一步用于:
在确定所述第一数据和所述第二数据相同的情况下,确定不存在针对所述应用程序的调试操作,继续执行所述第一指令队列中的指令。
在一些实施例中,所述第一确定模块10具体用于:
确定所述目标指令的存储地址,并将所述存储地址存储于第一寄存器中。
在一些实施例中,所述第一获取模块20具体用于:
从所述存储地址所指示的存储空间处获取所述第一数据,将所述第一数据存储于第二寄存器中。
在一些实施例中,所述第二获取模块30具体用于:
从所述存储地址所指示的存储空间处获取所述第二数据,将所述第二数据存储于所述第一寄存器中。
在一些实施例中,所述第二确定模块40具体用于:
获取所述目标指令,基于所述目标指令分别从所述第一寄存器和所述第二寄存器获取所述第一数据和所述第二数据;
确定所述第一数据和所述第二数据是否相同。
在一些实施例中,所述电子设备还包括混淆模块,所述混淆模块用于执行混淆操作,所述混淆操作包括:
对所述第一指令队列和至少一个第二指令队列进行代码混淆,以隐藏所述第一指令队列和所述第二指令队列的指令逻辑。
本申请实施例还提供了一种电子设备,至少包括存储器和处理器,所述存储器上存储有应用程序,所述处理器在执行所述存储器上的应用行程序时实现如上任一实施例所述的应用程序的保护方法。
以上实施例仅为本申请的示例性实施例,不用于限制本申请,本申请的保护范围由权利要求书限定。本领域技术人员可以在本申请的实质和保护范围内,对本申请做出各种修改或等同替换,这种修改或等同替换也应视为落在本申请的保护范围内。

Claims (10)

1.一种应用程序的保护方法,其特征在于,所述应用程序包括第一指令队列,所述第一指令队列包括多个顺序排列的指令,所述方法包括:
根据获取的所述第一指令队列中的第一指令,确定所述第一指令序列中的目标指令的存储地址;
根据获取的所述第一指令队列中的第二指令,从所述存储地址所指示的存储空间处获取第一数据;
根据获取的所述第一指令队列中的第三指令,从所述存储地址所指示的存储空间处获取第二数据;其中,在初始状态下,所述第三指令为所述第一指令队列中紧邻所述目标指令的前一条指令;
根据获取的所述第一指令队列中的目标指令,确定所述第一数据和所述第二数据是否相同,在不相同的情况下,确定存在针对所述应用程序的调试操作。
2.根据权利要求1所述的应用程序的保护方法,其特征在于,所述确定存在针对所述应用程序的调试操作,包括:
确定在所述第一指令队列中位于所述第三指令之后插入了断点指令,存在针对所述应用程序的调试操作,终止所述应用程序的运行。
3.根据权利要求1所述的应用程序的保护方法,其特征在于,在确定所述第一数据和所述第二数据相同的情况下,确定不存在针对所述应用程序的调试操作,继续执行所述第一指令队列中的指令。
4.根据权利要求1所述的应用程序的保护方法,其特征在于,确定所述第一指令序列中的目标指令的存储地址,包括:
确定所述目标指令的存储地址,并将所述存储地址存储于第一寄存器中。
5.根据权利要求4所述的应用程序的保护方法,其特征在于,所述从所述存储地址所指示的存储空间处获取第一数据,包括:
从所述存储地址所指示的存储空间处获取所述第一数据,将所述第一数据存储于第二寄存器中。
6.根据权利要求5所述的应用程序的保护方法,其特征在于,所述从所述存储地址所指示的存储空间处获取第二数据,包括:
从所述存储地址所指示的存储空间处获取所述第二数据,将所述第二数据存储于所述第一寄存器中。
7.根据权利要求6所述的应用程序的保护方法,其特征在于,所述根据获取的所述第一指令队列中的目标指令,确定所述第一数据和所述第二数据是否相同,包括:
获取所述目标指令,基于所述目标指令分别从所述第一寄存器和所述第二寄存器获取所述第一数据和所述第二数据;
确定所述第一数据和所述第二数据是否相同。
8.根据权利要求1所述的应用程序的保护方法,其特征在于,所述方法还包括混淆操作,所述混淆操作包括:
对所述第一指令队列和至少一个第二指令队列进行代码混淆,以隐藏所述第一指令队列和所述第二指令队列的指令逻辑。
9.一种电子设备,其特征在于,存储有应用程序,所述应用程序包括第一指令队列,所述第一指令队列包括多个顺序排列的指令,所述电子设备包括:
第一确定模块,用于根据获取的所述第一指令队列中的第一指令,确定所述第一指令序列中的目标指令的存储地址;
第一获取模块,用于根据获取的所述第一指令队列中的第二指令,从所述存储地址所指示的存储空间处获取第一数据;
第二获取模块,用于根据获取的所述第一指令队列中的第三指令,从所述存储地址所指示的存储空间处获取第二数据;其中,在初始状态下,所述第三指令为所述第一指令队列中紧邻所述目标指令的前一条指令;
第二确定模块,用于根据获取的所述第一指令队列中的目标指令,确定所述第一数据和所述第二数据是否相同,在不相同的情况下,确定存在针对所述应用程序的调试操作。
10.一种电子设备,至少包括存储器和处理器,所述存储器上存储有应用程序,所述处理器在执行所述存储器上的应用行程序时实现权利要求1-8任一项所述的方法。
CN202011537153.1A 2020-12-23 2020-12-23 应用程序的保护方法及电子设备 Active CN112527677B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011537153.1A CN112527677B (zh) 2020-12-23 2020-12-23 应用程序的保护方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011537153.1A CN112527677B (zh) 2020-12-23 2020-12-23 应用程序的保护方法及电子设备

Publications (2)

Publication Number Publication Date
CN112527677A true CN112527677A (zh) 2021-03-19
CN112527677B CN112527677B (zh) 2021-09-24

Family

ID=74976034

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011537153.1A Active CN112527677B (zh) 2020-12-23 2020-12-23 应用程序的保护方法及电子设备

Country Status (1)

Country Link
CN (1) CN112527677B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080184198A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Anti-debugger comprising spatially and temporally separate detection and response portions
CN102799493A (zh) * 2012-06-21 2012-11-28 北京伸得纬科技有限公司 一种对具有自我保护的目标进程实现拦截的方法
CN103955635A (zh) * 2014-04-04 2014-07-30 北京深思数盾科技有限公司 一种对.net可执行程序进行保护的方法和系统
US20150052400A1 (en) * 2013-08-19 2015-02-19 Concurix Corporation Breakpoint Setting Through a Debugger User Interface
CN106650338A (zh) * 2015-10-28 2017-05-10 中国电信股份有限公司 一种防止软件被反调试的方法和系统
CN108021791A (zh) * 2016-10-31 2018-05-11 腾讯科技(深圳)有限公司 数据保护方法及装置
CN109684795A (zh) * 2018-12-25 2019-04-26 成都卫士通信息产业股份有限公司 应用程序反调试的方法、装置及电子设备
CN109977633A (zh) * 2019-03-28 2019-07-05 武汉斗鱼鱼乐网络科技有限公司 一种程序保护方法及相关装置
CN110046479A (zh) * 2019-03-21 2019-07-23 腾讯科技(深圳)有限公司 一种基于安卓操作系统的链接库文件反调试方法及装置
CN111814119A (zh) * 2020-05-27 2020-10-23 广州锦行网络科技有限公司 一种反调试的方法
CN112052165A (zh) * 2020-08-21 2020-12-08 北京智游网安科技有限公司 一种检测目标函数被调试的方法、系统及存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080184198A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Anti-debugger comprising spatially and temporally separate detection and response portions
CN102799493A (zh) * 2012-06-21 2012-11-28 北京伸得纬科技有限公司 一种对具有自我保护的目标进程实现拦截的方法
US20150052400A1 (en) * 2013-08-19 2015-02-19 Concurix Corporation Breakpoint Setting Through a Debugger User Interface
CN103955635A (zh) * 2014-04-04 2014-07-30 北京深思数盾科技有限公司 一种对.net可执行程序进行保护的方法和系统
CN106650338A (zh) * 2015-10-28 2017-05-10 中国电信股份有限公司 一种防止软件被反调试的方法和系统
CN108021791A (zh) * 2016-10-31 2018-05-11 腾讯科技(深圳)有限公司 数据保护方法及装置
CN109684795A (zh) * 2018-12-25 2019-04-26 成都卫士通信息产业股份有限公司 应用程序反调试的方法、装置及电子设备
CN110046479A (zh) * 2019-03-21 2019-07-23 腾讯科技(深圳)有限公司 一种基于安卓操作系统的链接库文件反调试方法及装置
CN109977633A (zh) * 2019-03-28 2019-07-05 武汉斗鱼鱼乐网络科技有限公司 一种程序保护方法及相关装置
CN111814119A (zh) * 2020-05-27 2020-10-23 广州锦行网络科技有限公司 一种反调试的方法
CN112052165A (zh) * 2020-08-21 2020-12-08 北京智游网安科技有限公司 一种检测目标函数被调试的方法、系统及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KOTA YOSHIZAKI等: "Malware Detection Method Focusing on Anti-debugging Functions", 《2014 SECOND INTERNATIONAL SYMPOSIUM ON COMPUTING AND NETWORKING》 *
樊如霞: "基于内存信息隐藏的Android应用程序保护方法研究与设计", 《CNKI优秀硕士学位论文全文库 信息科技辑》 *

Also Published As

Publication number Publication date
CN112527677B (zh) 2021-09-24

Similar Documents

Publication Publication Date Title
EP2643751B1 (en) Processing apparatus, trace unit and diagnostic apparatus
Carreira et al. Xception: Software fault injection and monitoring in processor functional units
JP5430570B2 (ja) システムコールカバレッジ基準による試験スイート削減のための方法
US6634020B1 (en) Uninitialized memory watch
US7698690B2 (en) Identifying code that wastes time performing redundant computation
US20090248721A1 (en) System And Method for Stack Crawl Testing and Caching
US6378087B1 (en) System and method for dynamically detecting unchecked error condition values in computer programs
US20080276129A1 (en) Software tracing
US8065565B2 (en) Statistical debugging using paths and adaptive profiling
US10997055B2 (en) Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior
US20180189167A1 (en) Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior
US20070226471A1 (en) Data processing apparatus
CN112527677B (zh) 应用程序的保护方法及电子设备
US20220335135A1 (en) Vulnerability analysis and reporting for embedded systems
Choudhari et al. SpecDefender: Transient Execution Attack Defender using Performance Counters
US20130152053A1 (en) Computer memory access monitoring and error checking
US6880069B1 (en) Replay instruction morphing
KR101685299B1 (ko) 비결정적인 이벤트 처리가 가능한 프로그램의 자동 테스트 방법 및 자동 테스트 장치
CN113760770A (zh) 基于自动静态资源检测的反调试方法和系统
Dahlgren et al. Improving scientific software component quality through assertions
US10460108B1 (en) Method and system to identify and rectify input dependency based evasion in dynamic analysis
KR102421394B1 (ko) 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법
US9286184B1 (en) Probabilistic correlation of system events with program instructions
KR20180064825A (ko) 명시적 및 암시적 정보 흐름 추적 방법 및 그 장치
Fei et al. Artemis: Practical runtime monitoring of applications for errors

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee after: Beijing Shendun Technology Co.,Ltd.

Address before: 100193 5th floor 510, No. 5 Building, East Yard, No. 10 Wangdong Road, Northwest Haidian District, Beijing

Patentee before: BEIJING SENSESHIELD TECHNOLOGY Co.,Ltd.