CN105229654A - 保护软件应用 - Google Patents

保护软件应用 Download PDF

Info

Publication number
CN105229654A
CN105229654A CN201380077006.2A CN201380077006A CN105229654A CN 105229654 A CN105229654 A CN 105229654A CN 201380077006 A CN201380077006 A CN 201380077006A CN 105229654 A CN105229654 A CN 105229654A
Authority
CN
China
Prior art keywords
protection
software application
status
determining
protection process
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
CN201380077006.2A
Other languages
English (en)
Other versions
CN105229654B (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.)
Ai Dide Technology Co Ltd
Irdeto BV
Original Assignee
Ai Dide 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 Ai Dide Technology Co Ltd filed Critical Ai Dide Technology Co Ltd
Publication of CN105229654A publication Critical patent/CN105229654A/zh
Application granted granted Critical
Publication of CN105229654B publication Critical patent/CN105229654B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

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

Abstract

提供了一种用于保护软件应用的执行的方法,该方法由多个进程实行,所述多个进程包含用于执行所述软件应用的进程以及多个保护进程,其中所述多个保护进程中的每一个保护进程被配置成:监控所述多个进程中的至少一个其它进程的进程状态以确定所述进程状态是否对应于预确定的进程状态;并且响应于确定所述进程状态对应于预确定的进程状态而实行预确定的动作;其中所述多个保护进程被配置以便由至少一个保护进程监控用于执行所述软件应用的进程的进程状态并且由所述多个保护进程中的至少一个其它保护进程监控每一个保护进程的进程状态。另外提供了一种用于实现该方法的计算机程序和系统以及用于存储这样的计算机程序的计算机可读媒体。

Description

保护软件应用
技术领域
本发明涉及一种保护软件应用的执行的方法,以及用于实现这样的方法的装置和计算机程序。
背景技术
操作系统是众所周知的计算机系统的组件。操作系统(或OS)是一个软件应用(或程序)、或是一组软件应用,操作系统包含由在其上运行该操作系统的计算机系统的处理器(或CPU)执行的计算机代码或指令。操作系统管理在其上运行该操作系统的计算机系统的硬件资源。这些硬件资源包括例如处理器、存储器、储存器和输入/输出(IO)接口。操作系统允许其它软件应用在计算机系统上被运行或执行,并且提供包括到计算机系统的硬件资源的接口、支持其它软件应用的运行的各种功能和服务。因此操作系统形成计算机系统的核心或中央组件,并且负责运行将由该操作系统在其上运行的计算机系统的(一个或多个)处理器执行的所有其它应用。同样地,操作系统通常形成计算机系统的可信组件,操作系统还通过防止由操作系统运行的应用负面地影响或干扰计算机系统的硬件资源或正由计算机系统运行的其它应用的操作来负责确保处理环境的安全。因此,通常要求软件应用能够仅仅使用由操作系统提供并管理的接口与计算机系统的硬件资源交互。
公知的操作系统的示例包括MicrosoftWindows、MacOSX、Linux、BSD、IBMz/OS、Android和iOS,然而将领会的是,存在可以使用的其它操作系统。
软件应用包含识别当计算机系统的处理器执行该软件应用时所述计算机系统的处理器将要采取的动作的计算机代码或指令。正由处理器执行的软件应用可以被称为任务或进程。当处理器执行软件应用时(即,在执行进程期间),实行的计算和操作导致生成(并潜在地随后改变)各种数据,诸如计算的中间结果、数据可以被存储的物理存储器地址以及下一个将要处理哪个指令的指示符。该数据提供了对进程的处理状态(或上下文)的指示并在正在执行进程时被典型地存储在处理器的寄存器中。因此进程可以被视为包含正在被执行的软件应用的程序代码的副本(或镜像)以及当前的处理状态。
包含单个处理内核的处理器每一次仅仅能够处理或执行单个指令,并且因此每一次仅仅能够执行单个软件应用。然而,处理器(或处理器组)可以包含多个处理内核,在这种情况下处理器每一次可以处理多个指令,其中由每一个处理内核处理一个指令。因此,具有多个处理内核的处理器每一次可以执行多个软件应用。同时执行多个软件应用的概念被称为多处理或多任务。大多数现代操作系统支持多处理并且管理正在计算机系统上运行的每一个进程可以访问的硬件资源以避免任何冲突或在当前正在运行的进程之间的干扰。为了支持多处理,操作系统保持关于正在计算机系统上运行的进程的信息。操作系统可以将该信息存储在特殊的存储器结构中,其可以被称为进程控制块(PCBs)。所保持的信息的性质可以在不同的操作系统之间变化,然而通常包括诸如针对进程的标识符、诸如被分派给该进程的存储器和I/O设备的硬件资源、以及针对该进程的其它控制和安全属性的信息。将领会的是,可以由操作系统保持关于进程的多得多的信息。另外将领会的是,操作系统可以在诸如表的其它数据结构中保持关于进程的某些信息,其可以通过进程的标识符回溯到特定的进程。因此进程的执行状态可以被视为其处理状态和关于由操作系统保持的该进程的附加信息的结合。
在通过在计算机系统中存在多个处理内核而能够实现多处理的同时,大多数现代操作系统还使得能够通过被称为进程的并行执行(或并行处理或并行性)的概念实现(或至少仿效)多处理。进程的并行执行意指在单个处理内核上在相同的时间段期间处理多个进程。通过允许处理内核从执行一个进程切换到执行一个不同的进程来实现并行性,即使该进程的处理还未完结。切换当前正被处理的进程的该进程可以被称为上下文切换。为了使上下文切换发生,有必要在发生到不同的进程的上下文切换之前保存当前正被执行的进程的处理状态。这意指当处理器切换回处理该进程时,可以重新加载该进程的处理状态并且可以从先前的上下文切换发生的那一点重新开始执行。操作系统可以以若干方式支持并行性。操作系统可以在进程被从处理器中上下文切换出时协助存储所述进程的进程状态,这可以被存储在进程控制块中。操作系统还可以确定何时并以什么顺序执行每一个进程,以及每一个进程在处理器上下文切换到一个不同的进程之前被执行多长时间。操作系统的该组件可以被称为调度程序。存在众所周知的用于确定何时应该进行上下文切换的策略,这类策略的示例包括合作策略、先发制人策略以及时间分享策略,然而将领会的是,可以使用任何此类策略。
除了通过计算机系统进行的多个进程的多处理和并行执行,还已知允许单个进程包含多个流或执行线程(其可以被简称为线程)的各种方法,以便可以同时或并行地执行进程的代码的不同部分。该概念还可以被称为多线程。多线程意指通过在不同的处理内核上同时(或在相同的时间段期间)执行指令、通过在相同的处理内核上并行地执行线程可以同时跟随一个进程内的不同的执行路径。在这方面,线程类似于进程。然而,尽管进程具有它们自己的被分派的资源,但是线程分享它们所属的进程的资源。操作系统可以支持多线程,但是由于线程分享它们所属的进程,所以也有可能由特定的应用的程序代码实现(或至少仿效)多线程行为而不要求操作系统的支持。
在软件应用开发中公知的技术是利用多个合作的进程和或线程以便改善软件应用的操作。
操作系统可以使关于正在计算机系统上运行的进程和/或线程的信息对其它应用或计算机系统的用户是可利用的。操作系统还可以提供到其它应用或计算机系统的用户的接口,其允许与正在计算机系统上运行的进程交互。作为示例,该接口可以允许对特定的进程的识别、诊断(即关于该进程是否正在故障中)、挂起或终止。将领会的是,可以存在使得能够实现与正在计算机系统上运行的进程交互所采用的其它方式。
软件调试工具(通常被称为软件调试器或只是调试器)是可以被用于探查另一软件应用的操作的众所周知的工具。软件调试工具其自身是软件应用,其与操作系统和/或操作系统的硬件(诸如处理器)交互以控制执行不同的软件应用的正在运行的进程的执行、并且以观察由该进程执行的指令以及形成在该进程的执行期间的各种点处的该进程的处理状态的数据结构。以这种方式,调试器使得能够探查进程的操作,并且使得能够获得软件应用的功能。调试器还可以提供帮助调试器的用户理解正在被调试的进程或软件应用的附加功能。作为示例,软件调试器可以包括诸如反汇编程序或反编译程序的其它工具以显示诸如源代码的可以使用户更容易理解的更高级语言的代码。编程者通常使用调试器作为诸如例如探查和修补软件应用中的错误或缺陷的他们的正常应用开发和/或维护活动的一部分。
一般来说,调试器通过在软件应用的执行中设置断点来工作。这些断点导致应用的执行被停止在断点处并且控制被传递到调试器。然后调试器能够观察在该断点处正在运行的程序代码或指令,以及应用的数据结构的当前状态。
在实践中,可以通过由计算机系统内的各种子系统提供的功能支持调试器的操作。例如可以由(例如)CPU在硬件级提供调试的支持功能,所述CPU可以提供特殊的调试寄存器、追踪支持和被设计成支持调试的中断指令。类似地,可以例如在操作系统内嵌入调试功能。不同的调试工具可以使用由计算机系统的不同层提供的调试支持功能的不同的元素,并且可以因此以各种不同的方式操作。
当处理器执行程序(或软件)时,如果用户(或第三方)访问了该处理那么正在其中实行该执行的环境被称为所谓的“白盒”环境,以便用户可以观察并改变程序的执行(例如,通过运行合适的调试器)。
当软件应用在白盒环境中运行时,没有访问软件应用的原始源代码的第三方或攻击者可以试图使用调试工具来推断关于软件应用的操作的信息。该过程还可以被称为软件应用的反向工程。攻击者可以使用从反向工程获取的知识来达到他们自己的目标,诸如例如识别针对开发的攻击点、绕过保护措施以允许应用的未被授权的分发或修改应用以包括恶意代码。存在许多采用高级的自动化设备创建了的用于帮助这样的反向工程攻击的调试工具。
旨在使得更难以调试软件应用各种技术是已知的。这些技术可以被称为反调试技术。如上面讨论的,存在一系列不同的技术,其可以通过利用由计算机系统的不同的层或部分提供的各种调试支持功能而用于调试软件应用。这些调试技术中的每一个可以导致发生在处理环境内的可以被检测的人为现象或副作用。不同的调试技术还可能具有它们自己的相应弱点,说起来它们可能不能处理或监控发生在进程内的特定的操作。反调试的方法通常依赖于开发这些副作用或弱点以检测或禁用调试器的操作。以下是可以被使用以保护软件应用免于被调试的反调试技术的类型的示例:
●基于硬件和寄存器的反调试包括监控存储在CPU其自身的寄存器中的数据。如上面提及的,一些CPU通过可以被用于允许应用的执行中的断点的特定寄存器来为调试提供支持。因此有可能通过监控这些寄存器的状态来检测调试工具的操作。如果检测到了调试工具的操作,应用可以采取合适的动作以挫败调试尝试。
●基于应用程序接口(API)的反调试包括调用操作系统的各种API方法,其可以显示调试器正对应用进行操作。可以通过具有允许应用确定其是否正被调试的明确目的的操作系统提供这些API方法中的一些。可以通过调试器的操作影响API方法中的其它方法,以便能通过检查这些方法的操作来确定调试器的使用(虽然在操作系统中包括这些API方法的目的可能本不是明确地出于允许应用确定其是否正被调试的目的)。一旦检测到调试器的操作,那么应用可以采取适当的动作以挫败调试尝试。
●进程和线程模块化检测反调试包括直接地检查由操作系统保持的进程和/或线程管理信息。
●经修改的代码反调试是基于这样的原理:某些调试器通过修改应用的代码以包括使得处理器将执行的控制传递回到调试器的特殊指令来将断点插入到应用中。有可能通过实现完整性验证(IV)检查(诸如例如循环冗余码校验(CRC)以检查正在被执行的应用的当前镜像是否对应于未被修改的应用的镜像(即,对应于包括断点)来检测所执行的代码中包括这些断点。通过实现该自检或完整性验证,应用可以检测其是否正在调试器的控制下运行并且采取合适的动作来挫败调试尝试。
●基于异常的反调试是基于这样的原理:与当应用正常运行时相比,当应用在调试器的控制下运行时不同地处理可能在软件应用的执行期间引起的某些异常。作为一个示例,一些调试器可以处理某些类型的异常,以便当应用在调试器的控制下运行时永远不会调用应用中的对应的异常处理代码,但是如果应用正常运行的话其将被调用。相反地,其它异常可以在应用正常运行时由应用处理,但是当在调试器下运行时不会被正确处理,从而当应用在调试器的控制下运行时使得应用崩溃或终止。另外,可以通过使用此类异常检测调试器的操作,并且然后应用可以采取适当的动作来挫败调试尝试。
●基于定时和等待时间的反调试包括在应用的执行中的各种点处检查定时以确定是否存在执行的两个点之间的显著的等待时间或延迟。如果存在显著的延迟,那么这通过指示应用的执行正通过调试工具的操作被中断而编码。另外,在检测到调试工具的操作之后,应用可以采取适当的动作来挫败调试尝试。
将领会的是,可以使用其它类型的反调试技术。另外将领会的是,上面描述的反调试技术是可以被使用的宽范畴的类型的技术,并且在这些范畴中的每一个之内可以存在许多不同的反调试技术的类型的实现,其中的每一个可以适应单独的调试器或操作系统的细微差别。
发明内容
如上面讨论的,当软件应用在白盒环境中运行时,用户可以尝试对软件应用反向工程。典型地,反向工程尝试将包括由攻击者使用软件调试工具来推断软件应用的操作。在确定了软件应用的操作之后,然后攻击者可以使用该知识达到他们自己的目标。作为示例,攻击者可以使用该知识来识别应用中的弱点以便识别可能被用于生产恶意软件的开发。可替代地,攻击者可以使用该知识来绕过可以由应用使用的(任何)保护措施,然后这可以使得攻击者能够在没有授权的情况下分发应用。攻击者还可能使用该知识以通过将他自己的恶意代码插入到应用中来修改应用,然后可以分发被修改的应用以致由被修改的应用的计算机系统执行恶意代码。由于这些活动的潜在的利益性,对商业应用的这类反向工程攻击的比率在上升。
尽管已知防止对软件应用使用软件调试工具的各种方法,但是如上面讨论的,这些方法是多样的、通常应用的特定技术,其专用于特定的软件调试工具或操作系统的细微差别。为了充分地保护软件应用免于被调试,可能有必要利用大量的反调试技术以提供遍及不同的调试工具和操作系统的合理的深度和覆盖范围以便充分地挫败反向工程攻击(攻击者被阻止对特定的软件应用进行反向工程)。给出了被需求以充分地保护软件应用的反调试技术的范围和数目,在应用中包括反调试技术会涉及对应用代码进行显著改变并导致附加的开发时间、复杂度和成本。
因此,期望以不需要对应用的代码进行该普遍修改并且可以被容易地、快速地并因此以从软件开发角度来说低成本地实现的方式保护软件应用免受反向工程攻击,特别是包括软件调试工具的那些反向工程攻击。
依照本发明的第一方面,提供了一种保护软件应用的执行的方法,该方法由包含用于执行软件应用的进程的多个进程以及多个保护进程来实行,其中所述多个保护进程中的每一个保护进程被配置成:监控所述多个进程中的至少一个其它进程的进程状态以确定所述进程状态是否对应于预确定的进程状态;以及响应于确定所述进程状态对应于所述预确定的进程状态实行预确定的动作;其中所述多个保护进程被配置以便由至少一个保护进程监控所述用于执行软件应用的进程的进程状态,并且由所述多个保护进程中的至少一个其它保护进程监控每一个保护进程的进程状态。
在本发明的一些实施例中,每一个保护进程还被配置成监控所述至少一个其它进程的进程状态以确定所述进程状态是否对应于第二预确定的进程状态。
在本发明的一些实施例中,所述多个保护进程之一包含所述用于执行软件应用的进程。
在本发明的一些实施例中,所述预确定的进程状态可以被正面地定义。例如,所述预确定的进程状态可以对应于指示反向工程攻击(诸如使用软件调试工具)的进程状态。在本发明的其它实施例中,所述预确定的进程状态可以被反面地定义。例如,所述预确定的进程状态可以是缺乏特定的进程状态(诸如将在“正常”执行期间被期望发生的进程状态)。
在本发明的一些实施例中,预确定的动作包含以下中的一个或多个:使得软件应用的执行终止;使得软件应用的执行被传递到错误处理组件;和/或使得所述多个保护进程的执行终止。
在本发明的一些实施例中,在执行软件应用之前生成并执行所述多个保护进程,以便在执行软件应用之前由所述多个保护进程中的至少一个其它保护进程监控每一个保护进程。
在本发明的一些实施例中,在执行软件应用之前,所述预确定的动作包含使得软件应用的执行被阻止。
在本发明的一些实施例中,软件应用被配置成当其被执行时,对所述多个保护进程识别其自身,以便所述多个保护进程可以监控用于执行软件应用的进程的进程状态。
在本发明的一些实施例中,每一个保护进程被配置成监控一个其它保护进程并依次被一个其它保护进程监控,以便所述多个保护进程形成环形结构。
在本发明的一些实施例中,所述多个进程中的保护进程的数目在软件应用的执行期间变化。
在本发明的一些实施例中,所述多个进程中的保护进程的数目是这样的:攻击所述多个进程所需要的总时间大于由所述多个保护进程中的任何一个进程确定正在被监控的至少一个其它进程的进程状态对应于预确定的进程状态所花费的时间。
在本发明的第二方面中,提供了计算机程序,当由处理器执行时,该计算机程序使得处理器实现依照第一方面的方法。
在本发明的第三方面中,提供了计算机可读媒体,其存储依照第二方面的计算机程序。
在本发明的第四方面中,提供了一种系统,其被配置成实现依照第一方面的方法。
附图说明
现在将仅以示例的方式参考附图描述本发明的实施例,其中:
图1示意性地图解了本发明可以在其上运行的示例性计算机系统。
图2示意性地图解了依照本发明的一个实施例的保护软件应用的执行免于反向工程攻击的受保护的进程组。
图3示意性地图解了依照本发明的另一实施例的受保护的进程组。
图4是示意性地图解了依照本发明的用于开始作为受保护的进程组的一部分的软件应用的运行的方法的流程图。
具体实施方式
在随后的描述中以及在附图中,描述了本发明的某些实施例。然而,将领会的是,本发明不被限制于所描述的实施例,并且一些实施例可以不包括下面描述的所有特征。然而将显然的是,在这里可以进行各种修改和改变而不脱离如随附的权利要求中陈述的本发明的更广泛的精神和范围。
图1图解了可以在其上运行本发明的示例性计算机系统100。计算机系统100包含计算机102。计算机102包含各种硬件资源,诸如:存储媒体104、存储器106、处理器108、接口110、用户输出接口112、用户输入接口114和网络接口116,它们都通过一个或多个通信总线118被链接到一起。
存储媒体104可以是任何形式的非易失性数据存储设备,诸如硬盘驱动器、磁盘、光盘、ROM等中的一个或多个。存储媒体104可以存储用于处理器108的操作系统以执行以便计算机102运转。存储媒体104还可以存储一个或多个计算机程序(或软件或指令或代码)。
存储器106可以是适用于存储数据和/或计算机程序(或软件或指令或代码)的任何随机存取存储器(存储单元或易失性存储媒体)。
处理器108可以是适用于执行一个或多个计算机程序(诸如被存储在存储媒体104上和/或存储器106中的那些)的任何数据处理单元,所述一个或多个计算机程序中的一些可以是根据本发明的实施例的计算机程序或是当由处理器108执行时使得处理器108实现根据本发明的实施例的方法并将系统100配置成根据本发明的实施例的系统的计算机程序。处理器108可以包含单个数据处理单元或是平行或互相协作操作的多个数据处理单元。在实现用于本发明的实施例的数据处理操作的过程中,处理器108可以将数据存储到存储媒体104和/或存储器106,和/或从存储媒体104和/或存储器106中读取数据。
接口110可以是用于提供到在计算机102外部或可从计算机102移除的设备122的接口的任何单元。设备122可以是例如光盘、磁盘、固态存储设备等中的一个或多个的数据存储设备。设备122可以具有处理能力,例如该设备可以是智能卡。因此接口110可以依照其从处理器108接收的一个或多个命令从设备122访问数据、或提供数据到设备122、或与设备122对接。
用户输入接口114被布置以接收来自系统100的用户或操作者的输入。用户可以经由诸如鼠标(或其它指点设备)526和/或键盘125的系统100的一个或多个输入设备提供该输入,所述输入设备被连接到用户输入接口114或与其通信。然而,将领会的是,用户可以经由一个或多个附加的或替代的输入设备(诸如触摸屏)向计算机102提供输入。计算机102可以经由用户输入接口114将接收自输入设备的输入存储在存储器106中以供处理器108随后访问并处理,或者可以将该输入直接传递给处理器108,以便处理器108能够因此响应于该用户输入。
用户输出接口112被布置用于向系统100的用户或操作者提供图形的/视觉的和/或音频输出。同样地,处理器108可以被布置用于指示用户输出接口112形成表示所期望的图形输出的图像/视频信号,并将该信号提供到被连接到用户输出接口112的系统100的监视器(或屏幕或显示单元)120。附加地或可替代地,处理器108可以被布置用于指示用户输出接口112形成表示所期望的音频输出的音频信号,并将该信号提供到被连接到用户输出接口112的系统100的一个或多个扬声器121。
最后,网络接口116为计算机102提供从一个或多个数据通信网络下载数据和/或将数据上载到一个或多个数据通信网络的功能。
将领会的是,图1中图解的和上面描述的系统100的架构仅仅是示例性的,以及可以使用具有不同架构(例如具有比图1中所示的更少的组件或具有比图1中所示的附加的和/或替代的组件)的其它计算机系统100。作为示例,计算机系统100可以包含以下中的一个或多个:个人计算机、服务器计算机、移动电话、平板、膝上型计算机、电视机、机顶盒、游戏控制台、个人计算机、服务器计算机、其它移动设备或消费电子设备、智能卡等。
图2示意性地图解了保护软件应用240的执行免于反向工程攻击(特别是那些包括使用调试器来调试软件应用240的攻击)的受保护的进程组200。受保护的进程组200包含多个进程,其包括多个保护进程210-1到210-p(其被设计成保护受保护的进程组200免于反向工程攻击),以及用于执行软件应用240的进程230。请注意,出于说明的目的,仅在附图中明确地示出了两个保护进程210-1和210-2,但是将领会的是,可以在受保护的进程组200中包括任何数目P个保护进程。
保护进程210-1到210-p中的每一个被配置成监控受保护的进程组中的其它进程中的至少一个(即,一进程诸如用于运行软件应用240的进程230或不是保护进程其自身的另一保护进程210-1到210-p)的执行状态(在后文中被称为进程状态)以确定其它进程的进程状态是否对应于预确定的进程状态。预确定的进程状态可以是将由对该其它进程的反向工程攻击(诸如使用调试器)产生或触发的进程状态。如果确定了正被监控的至少一个其它进程的进程状态确实对应于预确定的进程状态,则保护进程进一步被配置成进行预确定的动作。例如,预确定的动作可以被设计成干扰反向工程攻击,以便挫败该攻击并防止攻击者达到他们的目的或目标。
在受保护的进程组200中的多个保护进程210-1到210-p被布置或被配置以便由受保护的进程组200中的至少一个其它保护进程监控保护进程210-1到210-p中的每一个。另外,多个保护进程210-1到210-p被进一步布置以便由保护进程210-1到210-p中的至少一个监控用于执行软件应用240的进程230。因此,诸如尝试调试或者是以其他方式干扰受保护的进程组200中的任何进程的执行的反向工程尝试将被受保护的进程组200中的(其它)保护进程之一检测到。保护进程210-1到210-p的示例性布置可以是这样的,即:第一保护进程210-1被布置用于监控第二保护进程210-2,第二保护进程210-2依次被布置用于监控第三保护进程210-3,以此类推,其中最后一个保护进程210-p被布置用于监控第一保护进程210-1。该示例性布置从概念上形成一个保护进程环或是链,其中环中的每一个保护进程210-1或210-p被环中的前一保护进程监控并依次监控环中的下一保护进程。作为又一示例,保护进程210-1到210-p可以被布置以便保护进程之一监控受保护的进程组200中的所有的其它保护进程,同时受保护的进程组200中的所有的其它保护进程监控那一个保护进程。该又一示例可以从概念上被认为是形成星形布置。将领会的是,存在可以使用的很多其它的保护进程布置。总之,由受保护的进程组200中的至少一个其它保护进程监控保护进程210-1到210-p中的每一个。
保护进程210-1到210-p中的每一个可以包含一个或多个执行线程220-1、220-2到220-n。在图2的实施例中,每一个保护进程210-1到210-p包括三个执行线程220-1、220-2和220-3。同时,为了简便起见,相同的参考标记被用于例如第一保护进程210-1的第一线程220-1和第二保护进程210-2的第一线程220-1,将领会的是,这些线程不必相同。如上面讨论的,保护进程210-1到210-p中的每一个被配置成监控受保护的进程组200中的另一进程的进程状态。该监控可以由保护进程内的执行线程来实行,该执行线程因此被称为保护线程。使用分别的执行线程实行该监控意味着保护进程能够同时(或至少并行地)实行像是监控其它进程的其它功能。保护进程可以包含多个保护线程,藉此每一个保护线程可以监控另一进程以确定该其它进程的进程状态是否对应于将由诸如使用软件调试工具的反向工程攻击触发的进程状态。在一个实施例中,给定的保护进程内的保护线程中的每一个可以被配置成监控不同的其它进程(即,给定的保护进程内的每一个保护线程可以被配置成监控不同于由其它保护线程监控的其它进程的另一进程)。以这种方式,保护进程可以并行地监控多个其它进程的进程状态。在可替代的实施例中,保护进程内的保护线程可以被配置成监控同一其它进程,但是可以针对该其它进程的不同的预确定进程状态进行监控。换句话说,保护进程可以基于针对该其它进程的多个不同的预确定的状态确定该其它进程正被攻击。在又一个可替代的实施例中,可以结合先前的两个实施例以便给定的保护进程可以包含可用于针对多个不同的其它保护进程的多个不同的预确定的进程状态进行监控的保护线程。因此将领会的是,每一个保护进程可以包含任何相应数目的用于针对任何数目的预确定的进程状态监控任何数目的其它进程的保护线程。
由每一个保护进程或其相应的保护线程所监控的预确定的进程状态(或多个状态)是指示反向工程攻击的进程状态,诸如指示使用调试器的进程状态。例如,图2中图解的进程保护组200被示出具有保护进程210-1和210-2,其针对对应于不活跃的进程或不存在的进程的进程状态的进程状态进行监控。对这两个进程状态中的任何一个的检测(即,进程不活跃或不再存在)可以指示对该进程的反向工程攻击。将领会的是,存在可以被针对其监控以确定进程是否正被反向工程的很多其它进程状态。具体地,上面描述的任何反调试技术可以被用于针对指示使用调试器的进程状态进行监控。
尽管上面以正面的方向描述了由保护进程实行的监控的描述,即保护进程针对对应于预确定的进程状态的进程状态进行监控,替代地可能的是,可以以反面的方向实行监控,即保护进程针对缺少特定的进程状态进行监控(并因此随后基于该缺少采取动作)。将领会的是,可以使用任一种类型的确定,并且将根据与反向工程攻击相关的正被监控的预确定的进程状态的属性来选择使用哪种确定。如果例如预确定的进程状态是在反向工程攻击期间存在的“异常”进程状态(但是在正常操作期间不存在),那么可以关于该进程状态是否对应于该“异常”进程状态来正面地进行确定以确定反向工程攻击正在发生。然而,如果预确定的进程状态是在正常操作期间存在但是在反向工程攻击期间不存在的“正常”进程状态,那么可以关于该进程状态是否不对应于“正常”的进程状态来反面地进行确定以确定反向工程攻击正在发生。
由保护进程或其相应的保护线程实行的预确定的动作被设计成挫败反向工程攻击以便使攻击者的任务更困难并且可以阻止攻击者。存在可以被采取以实现该目标的许多不同的预确定的动作。作为示例,预确定的动作可以包含终止用于运行软件应用240的进程230和/或多个保护进程210-1到210-p。预确定的动作可以包含用可能具有受限的或替代的功能的不同的软件应用来替换正执行的软件应用240,以便使得攻击者混淆关于原始的软件应用240的功能。预确定的动作可以包含引发不能够被处理的异常或以其它方式将控制传递到错误处理应用。预确定的动作可以包含把已尝试反向工程攻击的事实记入日志。
尽管上面参考图2描述的受保护的进程组200包含多个保护进程210-1到210-p和用于执行软件应用240的分别的进程230,但是用于执行软件应用240的进程230不必是分别的进程。
图3图解了与图2中图解的受保护的进程组200类似的受保护的进程组300,除了图3中图解的受保护的进程组300不包含用于执行软件应用240的分别的进程230。代替地,在图3的受保护的进程组300中,保护进程中的第一保护进程210-1还充当用于执行软件应用240的进程230。这可以通过使用第一保护进程210-1内的一个或多个执行线程执行软件应用240来实现。被用于执行软件应用240的一个或多个执行线程与可以被用于监控其它保护进程的保护线程220-1到220-n分离。以这种方式,软件应用可以与也由保护进程实行的监控平行(或至少并行地)运行。虽然图3描绘了每个保护进程两个保护线程220-1和220-2,但将要领会的是,可以在每一个保护进程中提供不同数目的保护线程。
还将领会的是,除了在保护进程之一中(而不是在分别的进程中)执行软件应用的特征,关于图2中图解的受保护的进程组200讨论的特征等同地适用于图3中图解的受保护的进程组300。例如,关于图2中图解的受保护的进程组200讨论的针对可以使用的用于互相监控的保护进程的各种布置、以及使用保护进程内的保护线程以使得保护进程能够针对任何数目的预确定的进程状态监控任何数目的其它进程的可能性的特征也适用于图3中图解的受保护的进程组300。
在受保护的进程组200或300中包括互相监控以检测反向工程攻击的多个保护进程增加了攻击者攻击由受保护的进程组200或300保护的软件应用240的复杂性。这是因为,代替了能够简单地攻击单个进程,攻击者必须改为考虑多个进程间的复杂的互操作以便成功地攻击软件应用。这意味着攻击者不仅必须识别这些其它进程和它们的复杂的互操作,而且攻击者必须在由保护进程210-1到210-p之一的监控检测到攻击(其将然后采取动作以挫败攻击)之前成功地攻击受保护的进程组200或300内的每一个进程。因此,引入了攻击必须在其内实现的时间约束。这要求攻击者花费更多的时间和精力分析软件应用以便成功地攻击它,并且因此是对反向工程攻击的有效的威慑。
虽然可以使用任何数目P个保护进程210-1到210-p(只要有至少两个)来实现对反向工程攻击的威慑,但可以选择保护进程的数目P以便使攻击者攻击在受保护的进程组中运行的软件应用特别地困难。这可以通过考虑攻击者攻击受保护的进程组200或300中的进程所需要的时间Tstop、以及时间Tdetect(在该时间内可以由受保护的进程组200或300的保护进程210-1到210-p检测到对受保护的进程组200或300中的进程的攻击)来实现。这些时间将根据一系列因素而变化,所述因素诸如正在其上运行受保护的进程组200或300的计算机系统的操作系统和处理器。图2中图解的保护进程组200中进程的数目N是保护进程210-1到210-p的数目P和用于执行软件应用240的附加进程230(即,N=P+1)。然而,由于不存在用于执行软件应用240的分别的进程230,图3中图解的受保护的进程组300中进程的数目N与保护进程210-1到210-p的数目P相同(即,N=P)。如果受保护的进程组200或300包含数目N个进程,那么攻击受保护的进程组200或300所花费的时间将是N·Tstop。因此可以选择保护进程的数目P以便攻击受保护的进程组200或300中的所有进程所花费的时间比检测攻击所需要的时间Tdetect更大(即,Tdetect<N·Tstop)。以这种方式选取将在受保护的进程组200或300中使用的保护进程210-1到210-p的最小数目Pminimum使得攻击者智取受保护的进程组200或300并成功地对由受保护的进程组200或300保护的软件应用进行反向工程更加难。将领会的是,一般来说,受保护的进程组中进程的数目越大,攻击者攻击受保护的进程组将会越难。
在受保护的进程组200或300的执行期间,可以改变受保护的进程组200或300中的保护进程210-1到210-p的数目P。可以在受保护的进程组200或300的执行期间增大或减小保护进程的数目P。作为一个示例,可以在软件应用240的重要部分的执行期间增大保护进程的数目P以改善软件应用240的那些部分对抗反向工程的安全性。在软件应用240的较不重要部分的执行期间,可以减少保护进程的数目P以降低运行受保护的进程组的处理成本。
在保护进程的数目P在受保护的进程组的执行期间变化的情况中,可以保持在受保护的进程组200或300中在任何一个时刻正在执行的保护进程的数目Pcurrent,以便至少有最小数目Pminimum个保护进程(使用上面讨论的用来最优化攻击者攻击受保护的进程组200或300的难度的标准选取该最小数目Pminimum)在所有的时刻都在运行(即,Pcurrent≥Pminimum)。
图4图解了用于开始运行软件应用240作为受保护的进程组200或300的一部分的方法400。
在第一步骤S410,该方法创建了保护进程210-1到210-p,以便保护进程210-1到210-p正被执行并且保护进程210-1到210-p中的每一个的进程状态正由其它保护进程210-1到210-p中的至少一个监控。
可以由在执行软件应用的主要功能(将要由受保护的进程组200或300保护的主要功能)之前执行的软件应用240中包含的一小部分代码实行该第一步骤S410。
可替代地,当用户希望启动或执行软件应用240时,可以请求用户通过执行不同的软件应用(启动应用)来启动软件应用240。可以对启动应用识别用户希望启动的软件应用240。然后可以在启动应用启动软件应用之前由启动应用来实行第一步骤S410以创建保护进程210-1到210-p。
可替代地,可以布置计算机系统以便在不知道要被作为受保护的进程组200或300的一部分执行的特定的软件应用240的情况下,受保护的进程组200或300优先于正被启动的任何软件应用240运行。因此仅仅采用保护进程210-1到210-p而不用用于运行应用240的进程230来创建受保护的进程组200或300。作为一个示例,可以在计算机系统引导时创建受保护的进程组200或300。然而,可以使用用于创建受保护的进程组200或300的任何其它先发制人的方法以便在用户希望启动软件应用240的那一点处受保护的进程组200或300已经在运行了。
总之,在步骤S410结束时,还没有执行软件应用的主要功能,并且受保护的进程组200或300的保护进程210-1到210-p正互相监控以检测任何对保护进程210-1到210-p的干扰。
在步骤S420,方法400检查保护进程210-1到210-p中的每一个以确定它们的进程状态是否正常,或换言之,以确定每一个保护进程210-1到210-p的进程状态是否对应于将由对保护进程210-1到210-p的操作的干扰造成的预确定的进程状态(诸如当有人试图对保护进程210-1到210-p进行反向工程时可能发生)。如果所有保护进程210-1到210-p的进程状态都正常,即不对应于预确定的进程状态,那么该方法继续进行到步骤S430。否则,如果检测到了干扰(诸如反向工程攻击),那么该方法继续进行到步骤S440(将在下面被进一步描述)。
在步骤S430,在保护进程210-1到210-p的监控下启动应用。在由在软件应用240的主要功能之前执行的软件应用240中的一小部分代码实现步骤S410的情况中,步骤S430包括继续执行软件应用的主要功能。在步骤S410中由分别的应用创建保护进程210-1到210-p或者保护进程210-1到210-p已经存在于计算机系统上的情况中,步骤430可以包括创建在其中执行软件应用240的分别的进程230。可替代地,步骤430可以包括创建保护进程210-1之一内的一个或多个执行线程以用于执行软件应用240。因此,在其内将要运行软件应用240的进程230可以被视为在其内创建了用于执行软件应用240的线程的保护进程210-1。在步骤S410中在不知道要被作为受保护的进程组200或300的一部分执行的特定的软件应用240的情况下创建受保护的进程组200或300的情况中,步骤430可以包括软件应用240(在其执行时)对保护进程组识别其自身以便保护进程210-1到210-p可以配置其自身以监控正在运行软件应用240的进程230。
总之,在步骤S430,软件应用240在保护进程210-1到210-p的监控下运行。
如果在前述的步骤S420处确定了保护进程210-1到210-p中的一个或多个已被干扰以致它们的进程状态对应于将作为反向工程攻击的结果发生的进程状态,那么步骤S440取代步骤S430而发生。
在步骤S440,该方法采取被设计成挫败可能正在发生的反向工程攻击的预确定的动作。如上面讨论的,存在很多不同的可以使用的预确定的动作。除了上面提及的示例,在步骤S440中可以采取的预确定的动作的一些进一步的示例包括:防止软件应用被启动,或启动一个不同的软件应用,或使得通过软件应用240跟随不同的执行路径。该改变对攻击者来说可能是难以察觉的,但是将阻止攻击者在反向工程攻击期间取得对软件应用240的真正了解。
可以使用软件变换技术以迷惑的方式以代码实现如上面描述的用于开始运行软件应用240作为受保护的进程组200或300的一部分的方法400,或者任何数目的组成步骤S410、S420、S430或S440。通过这样的迷惑,任何试图干预(或干扰)方法400或其组成步骤S410、S420、S430或S440的操作的攻击(例如,以防止创建受保护的进程组200或300)被变得更加困难。
该用于保护软件应用240的执行的方法意味着软件应用240可以被适配为仅采用对软件应用240的代码的最小的修改就能被保护免受反向工程攻击。在其中使用分别的启动应用以启动软件应用的实施例中,可能可以获取免受反向工程攻击的保护而完全不需要修改软件应用240的代码。这导致减少的开发时间、精力和成本。另外,被提供的免受反向工程攻击的保护很大程度上独立于软件应用其自身,并且可以被变得更一致并且更易于保持。
将领会的是,所描述的方法已经被示出为以特定的顺序实现的单独的步骤。然而,本领域技术人员将领会的是,这些步骤可以被组合或以不同的顺序被实现同时仍达到所期望的结果。
将领会的是,可以使用各种不同的信息处理系统实现本发明的实施例。特别地,尽管附图和其讨论提供了示例性计算系统和方法,但这些被呈现仅是用来提供在讨论本发明的各种方面中的有用的参考。可以在诸如个人计算机、膝上型计算机、个人数字助理、移动电话、机顶盒、电视、服务器计算机等的任何合适的数据处理设备上实现本发明的实施例。当然,出于讨论的目的简化了对系统和方法的描述,并且所述系统和方法只是可以被用于本发明的实施例的许多不同类型的系统和方法之一。将领会的是,逻辑块之间的边界仅仅是例证性的,并且替代的实施例可以合并逻辑块或元素、或可以在各种逻辑块或元素之上施加可替代的功能分解。
将领会的是,上面提及的功能可以被实现为作为硬件和/或软件的一个或多个对应的模块。例如,上面提及的功能可以被实现为用于由系统的处理器执行的一个或多个软件组件。可替代地,上面提及的功能可以被实现为诸如在一个或多个现场可编程门阵列(FPGAs)和/或一个或多个专用集成电路(ASICs)和/或一个或多个数字信号处理器(DSPs)和/或其它硬件布置上的硬件。在本文中包含的流程图中实现的或如上面描述的方法步骤中的每一个可以由对应的相应的模块实现;在本文中包含的流程图中实现的或如上面描述的多个方法步骤可以一起由单个模块实现。
将领会的是,在由计算机程序实现的本发明的实施例的范围内,则携带计算机程序的存储媒体和传输媒体形成了本发明的方面。计算机程序可以具有当由计算机执行时实现本发明的实施例的一个或多个程序指令、或程序代码。如本文中使用的术语“程序”可以是被设计用于在计算机系统上执行的指令序列,并且可以包括子例程、函数、过程、模块、目标方法、目标实现、可执行应用、小应用程序、小服务程序、源代码、目标代码、可分享数据库、动态链接数据库和/或被设计用于在计算机系统上执行的其它指令序列。存储媒体可以是磁盘(诸如硬盘或软盘)、光盘(诸如CD-ROM、DVD-ROM或蓝光盘)、或存储器(诸如ROM、RAM、EEPROM、EPROM、闪存存储器或可携带/可移除存储设备)等。传输媒体可以是在两个或更多个计算机之间的通信信号、数据广播、通信链路等等。

Claims (14)

1.一种保护软件应用的执行的方法,该方法由包含用于执行软件应用的进程的多个进程以及多个保护进程来实行,其中所述多个保护进程中的每一个保护进程被配置成:
监控所述多个进程中的至少一个其它进程的进程状态以确定所述进程状态是否对应于预确定的进程状态;以及
响应于确定所述进程状态对应于所述预确定的进程状态实行预确定的动作;
其中所述多个保护进程被配置以便由至少一个保护进程监控所述用于执行软件应用的进程的进程状态,并且由所述多个保护进程中的至少一个其它保护进程监控每一个保护进程的进程状态。
2.如权利要求1的方法,其中每一个保护进程还被配置成监控所述至少一个其它进程的进程状态以确定所述进程状态是否对应于第二预确定的进程状态。
3.如上述权利要求中的任意一个的方法,其中所述多个保护进程之一包含所述用于执行软件应用的进程。
4.如上述权利要求中的任意一个的方法,其中所述预确定的进程状态对应于指示反向工程攻击的进程状态,所述反向工程攻击诸如使用软件调试工具。
5.如上述权利要求中的任意一个的方法,其中所述预确定的动作包含以下中的一个或多个:使得软件应用的执行终止;使得软件应用的执行被传递到错误处理组件;和/或使得所述多个保护进程的执行终止。
6.如上述权利要求中的任意一个的方法,其中在执行软件应用之前生成并执行所述多个保护进程,以便在执行所述软件应用之前由所述多个保护进程中的至少一个其它保护进程监控每一个保护进程。
7.如权利要求6的方法,其中在执行所述软件应用之前,所述预确定的动作包含使得所述软件应用的执行被阻止。
8.如权利要求6或7之一的方法,其中所述软件应用被配置成当其被执行时,对所述多个保护进程识别其自身,以便所述多个保护进程可以监控所述用于执行所述软件应用的进程的进程状态。
9.如上述权利要求中的任意一个的方法,其中每一个保护进程被配置成监控一个其它保护进程,并且依次被一个其它保护进程监控,以便所述多个保护进程形成环形结构。
10.如上述权利要求中的任意一个的方法,其中所述多个进程中的保护进程的数目在所述软件应用的执行期间变化。
11.如上述权利要求中的任意一个的方法,其中所述多个进程中的保护进程的数目是这样的:攻击所述多个进程所需要的总时间大于由所述多个保护进程中的任何一个进程确定正在被监控的至少一个其它进程的进程状态对应于所述预确定的进程状态所花费的时间。
12.一种计算机程序,当由处理器执行时,该计算机程序使得处理器实现依照权利要求1到11中的任何一个的方法。
13.一种计算机可读媒体,其存储依照权利要求12的计算机程序。
14.一种系统,其被配置成实现依照权利要求1到11中的任何一个的方法。
CN201380077006.2A 2013-03-27 2013-03-27 保护软件应用 Expired - Fee Related CN105229654B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/000352 WO2014153680A1 (en) 2013-03-27 2013-03-27 Protecting software application

Publications (2)

Publication Number Publication Date
CN105229654A true CN105229654A (zh) 2016-01-06
CN105229654B CN105229654B (zh) 2019-02-19

Family

ID=51622331

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380077006.2A Expired - Fee Related CN105229654B (zh) 2013-03-27 2013-03-27 保护软件应用

Country Status (4)

Country Link
US (1) US10013553B2 (zh)
EP (1) EP2979211B1 (zh)
CN (1) CN105229654B (zh)
WO (1) WO2014153680A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107179980A (zh) * 2016-03-10 2017-09-19 罗伯特·博世有限公司 用于监视计算系统的方法和相应的计算系统
CN108871428A (zh) * 2018-05-09 2018-11-23 南京思达捷信息科技有限公司 一种基于大数据的地质监控平台及其方法
CN110032487A (zh) * 2018-11-09 2019-07-19 阿里巴巴集团控股有限公司 保活监控方法、装置及电子设备
CN110088736A (zh) * 2016-12-05 2019-08-02 耐瑞唯信有限公司 自调试
CN112363917A (zh) * 2020-10-30 2021-02-12 北京五八信息技术有限公司 应用程序调试异常的处理方法、装置、电子设备及介质
US10978162B2 (en) 2019-02-25 2021-04-13 Winbond Electronics Corp. Method and semiconductor device for protecting a semiconductor integrated circuit from reverse engineering
CN113987469A (zh) * 2021-10-26 2022-01-28 山西大鲲智联科技有限公司 应用于车机系统的进程保护方法、装置、电子设备
CN115220993A (zh) * 2022-04-20 2022-10-21 广州汽车集团股份有限公司 进程监控方法、装置、车辆及存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104350504B (zh) * 2012-02-10 2018-06-12 爱迪德技术有限公司 用于软件操作中的程序流的方法和装置
KR101519845B1 (ko) * 2013-11-14 2015-05-13 (주)잉카엔트웍스 안티디버깅 방법
GB201405754D0 (en) * 2014-03-31 2014-05-14 Irdeto Bv Protecting an item of software comprising conditional code
WO2019231000A1 (ko) * 2018-05-29 2019-12-05 라인플러스 주식회사 프로그램 보호를 위한 자바 디버거 차단 방법 및 시스템
CN111309444B (zh) * 2020-03-04 2023-12-15 北京奇艺世纪科技有限公司 利用进程虚拟机反调试的方法、装置、系统及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6539266B1 (en) * 1999-04-09 2003-03-25 Konami Co., Ltd. Computer system, method of executing computer program, and computer program storage medium
CN101040264A (zh) * 2004-10-15 2007-09-19 西门子公司 用于电设备的冗余控制的方法和装置
CN101128833A (zh) * 2005-02-25 2008-02-20 松下电器产业株式会社 安全处理装置和安全处理系统
EP2352109A1 (en) * 2008-11-26 2011-08-03 Panasonic Corporation Monitoring system, program-executing device, monitoring program, recording medium and integrated circuit

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6928585B2 (en) * 2001-05-24 2005-08-09 International Business Machines Corporation Method for mutual computer process monitoring and restart
US7159234B1 (en) * 2003-06-27 2007-01-02 Craig Murphy System and method for streaming media server single frame failover
US7764785B2 (en) * 2004-11-08 2010-07-27 King Fahd University Of Petroleum And Minerals Method for communicating securely over an insecure communication channel
US9137015B2 (en) * 2008-01-04 2015-09-15 Arcsoft, Inc. Protection scheme for AACS keys
EP2264635A1 (en) 2009-06-19 2010-12-22 Thomson Licensing Software resistant against reverse engineering
CN101587456B (zh) 2009-07-08 2011-06-15 腾讯科技(深圳)有限公司 一种对软件运行的保护处理方法及装置
EP2477110A1 (en) 2011-01-14 2012-07-18 Wibu-Systems AG Method for protecting an application program against reverse engineering and related computer program product
GB201105765D0 (en) * 2011-04-05 2011-05-18 Visa Europe Ltd Payment system
US8590041B2 (en) * 2011-11-28 2013-11-19 Mcafee, Inc. Application sandboxing using a dynamic optimization framework
CN102629308B (zh) 2012-03-09 2015-02-18 北京奇虎科技有限公司 一种防止登录信息被盗取的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6539266B1 (en) * 1999-04-09 2003-03-25 Konami Co., Ltd. Computer system, method of executing computer program, and computer program storage medium
CN101040264A (zh) * 2004-10-15 2007-09-19 西门子公司 用于电设备的冗余控制的方法和装置
CN101128833A (zh) * 2005-02-25 2008-02-20 松下电器产业株式会社 安全处理装置和安全处理系统
EP2352109A1 (en) * 2008-11-26 2011-08-03 Panasonic Corporation Monitoring system, program-executing device, monitoring program, recording medium and integrated circuit

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107179980A (zh) * 2016-03-10 2017-09-19 罗伯特·博世有限公司 用于监视计算系统的方法和相应的计算系统
CN110088736A (zh) * 2016-12-05 2019-08-02 耐瑞唯信有限公司 自调试
CN110088736B (zh) * 2016-12-05 2023-05-23 耐瑞唯信有限公司 自调试方法和系统
CN108871428A (zh) * 2018-05-09 2018-11-23 南京思达捷信息科技有限公司 一种基于大数据的地质监控平台及其方法
CN110032487A (zh) * 2018-11-09 2019-07-19 阿里巴巴集团控股有限公司 保活监控方法、装置及电子设备
US10978162B2 (en) 2019-02-25 2021-04-13 Winbond Electronics Corp. Method and semiconductor device for protecting a semiconductor integrated circuit from reverse engineering
TWI725616B (zh) * 2019-02-25 2021-04-21 華邦電子股份有限公司 保護半導體積體電路以防範逆向工程的方法及半導體裝置
CN112363917A (zh) * 2020-10-30 2021-02-12 北京五八信息技术有限公司 应用程序调试异常的处理方法、装置、电子设备及介质
CN112363917B (zh) * 2020-10-30 2022-03-04 北京五八信息技术有限公司 应用程序调试异常的处理方法、装置、电子设备及介质
CN113987469A (zh) * 2021-10-26 2022-01-28 山西大鲲智联科技有限公司 应用于车机系统的进程保护方法、装置、电子设备
CN115220993A (zh) * 2022-04-20 2022-10-21 广州汽车集团股份有限公司 进程监控方法、装置、车辆及存储介质
CN115220993B (zh) * 2022-04-20 2024-03-12 广州汽车集团股份有限公司 进程监控方法、装置、车辆及存储介质

Also Published As

Publication number Publication date
EP2979211A4 (en) 2016-11-16
EP2979211B1 (en) 2020-09-09
CN105229654B (zh) 2019-02-19
EP2979211A1 (en) 2016-02-03
US20160055333A1 (en) 2016-02-25
WO2014153680A1 (en) 2014-10-02
US10013553B2 (en) 2018-07-03

Similar Documents

Publication Publication Date Title
CN105229654A (zh) 保护软件应用
US10789105B2 (en) Systems and methods involving features of hardware virtualization, hypervisor, APIs of interest, and/or other features
US10051008B2 (en) Systems and methods involving aspects of hardware virtualization such as hypervisor, detection and interception of code or instruction execution including API calls, and/or other features
CN104866762B (zh) 安全管理程序功能
US9146833B2 (en) System and method for correct execution of software based on a variance between baseline and real time information
KR102003663B1 (ko) 디버그 예외 생성 제어
CN106326743A (zh) 用于虚拟机中的恶意软件检测的方法和系统
CN103793288A (zh) 一种软件看门狗系统及方法
CN102722672B (zh) 一种检测运行环境真实性的方法及装置
EP2891104B1 (en) Detecting a malware process
US10114948B2 (en) Hypervisor-based buffer overflow detection and prevention
JP2021051745A (ja) コンピュータ装置およびメモリ管理方法
US7823019B2 (en) Debug circuitry
US9798867B2 (en) Techniques for virtualization as interprocess communication, synchronization and code obfuscation
US9514028B2 (en) System and method for determining correct execution of software based on baseline and real time trace events
TW201610672A (zh) 在資料處理裝置中進行除錯
CN105373467B (zh) 能在多个特权层级执行指令的数据处理装置中的性能监控
CN106156621A (zh) 一种检测虚拟机逃逸的方法及装置
CN113467981A (zh) 异常处理的方法和装置
CN102446253B (zh) 一种网页木马检测方法及系统
WO2014004212A1 (en) Timer for hardware protection of virtual machine monitor runtime integrity watcher
US9003236B2 (en) System and method for correct execution of software based on baseline and real time information
CN109117631A (zh) 一种程序退出的方法及相关设备
WO2018226814A2 (en) Monitoring control-flow integrity
US20240193007A1 (en) System and Methods Involving Features of Hardware Virtualization, Hypervisors, APIs of Interest and/or Other Features

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190219

Termination date: 20210327