CN113672273B - 数据处理方法、系统及设备 - Google Patents
数据处理方法、系统及设备 Download PDFInfo
- Publication number
- CN113672273B CN113672273B CN202111228418.4A CN202111228418A CN113672273B CN 113672273 B CN113672273 B CN 113672273B CN 202111228418 A CN202111228418 A CN 202111228418A CN 113672273 B CN113672273 B CN 113672273B
- Authority
- CN
- China
- Prior art keywords
- function
- replaced
- functions
- stack
- check area
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 14
- 230000006870 function Effects 0.000 claims abstract description 514
- 238000000034 method Methods 0.000 claims abstract description 153
- 230000008569 process Effects 0.000 claims abstract description 112
- 238000012545 processing Methods 0.000 claims abstract description 33
- 230000008439 repair process Effects 0.000 claims description 32
- 238000004458 analytical method Methods 0.000 claims description 27
- 238000007689 inspection Methods 0.000 claims description 20
- 230000006399 behavior Effects 0.000 claims description 19
- 230000007717 exclusion Effects 0.000 claims description 18
- 238000011144 upstream manufacturing Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 5
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012367 process mapping Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供数据处理方法、系统及设备。其中,所述方法包括:根据热升级数据包确定出目标函数、内核程序中的待替换函数及安全检查区时,进入停机状态;其中,所述安全检查区中包含有所述内核程序中所述待替换函数所在调用路径上的多个函数;对所述安全检查区内所述多个函数所在进程进行检查;检查结果为安全时,根据所述目标函数,对所述待替换函数执行替换操作。本申请实施例提供的技术方案,不再需要对所有进程和栈帧进行全面检查,而是针对目标函数对应的安全检查区中存在风险可能的函数进行检查,降低栈安全检查的复杂度,能够有效提升栈安全检查的效率,进而能够提高热升级时的用户体验。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及数据处理方法、系统及设备。
背景技术
随着Linux应用需求的发展,用户需求日益多样化,进而导致用户对Linux应用系统差异化需求也越来越明显。
热补丁(或热修复、或热修复补丁)是一种不影响设备运行的条件下,修改设备软件缺陷的技术。热补丁技术不仅提供了一种及时修改运行系统中软件错误的手段,而且此技术可以降低版本升级造成客户收益的损失。热修复是面向移动设备或服务器的线上修复服务,为应用APP或操作系统线上版本提供静默更新,细粒度修复能力,帮助开发者实时修复线上问题,敏捷发布轻量级功能。
现有热修复技术,为了保证替换函数时,被替换函数不存在在任何进程的栈上,使用栈安全检查方法,检查每个进程的所有栈帧。如果被替换的函数(即升级/修复的函数)存在在进程的栈上,则会检查失败。而且,现有热修复时栈安全检查过程,复杂度高,如果当前系统负载较高,耗时会很长。
发明内容
为解决或改善现有技术中存在的问题,本申请各实施例提供了数据处理方法、系统及设备。
第一方面,在本申请的一个实施例中,提供了一种数据处理方法。该方法包括:
根据热升级数据包确定出目标函数、内核程序中的待替换函数及安全检查区时,进入停机状态;其中,所述安全检查区中包含有所述内核程序中所述待替换函数所在调用路径上的多个函数;
对所述安全检查区内所述多个函数所在进程进行检查;
检查结果为安全时,根据所述目标函数,对所述待替换函数执行替换操作。
第二方面,在本申请的一个实施例中,提供了另一种数据处理方法。该方法包括:
获取内核程序中待替换函数所在调用路径的路径信息;
对所述路径信息进行分析,确定是否存在安全检查区,其中,所述安全检查区内包含有所述调用路径上的多个函数;
输出是否存在所述安全检查区的分析结果,以辅助生成针对所述待替换函数的热升级数据包。
第三方面,在本申请的一个实施例中,提供了一种数据处理系统。所述系统包括:
客户端设备,用于获取内核程序中待替换函数所在调用路径的路径信息;对所述路径信息进行分析,确定是否存在安全检查区,其中,所述安全检查区内包含有所述调用路径上的多个函数;存在所述安全检查区时获取针对所述待替换函数的内核程序热修复模块;
服务器,用于获取所述内核程序热修复模块,根据所述内核程序热修复模块,确定目标函数、内核程序中的待替换函数及安全检查区;其中,所述安全检查区中包含有所述内核程序中所述待替换函数所在调用路径上的多个函数;进入停机状态;对所述安全检查区内所述多个函数所在进程进行检查;检查结果为安全时,根据所述目标函数,对所述待替换函数执行替换操作;恢复为工作状态,完成对所述内核程序的热修复。
第四方面,在本申请的一个实施例中,提供了一种电子设备,包括存储器及处理器;其中,
所述存储器,用于存储程序;
所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于实现第一方面所述的一种数据处理方法或第二方面所述的另一种数据处理方法。
本申请实施例提供的技术方案,在对Linux内核程序进行热升级的时候,需要确保被替换的函数没有被任何进程调用。具体来说,根据热升级数据包确定出目标函数、内核程序中的待替换函数及安全检查区时,进入停机状态;其中,所述安全检查区中包含有所述内核程序中所述待替换函数所在调用路径上的多个函数。对所述安全检查区内所述多个函数所在进程进行检查。检查结果为安全时,根据所述目标函数,对所述待替换函数执行替换操作。采用上述技术方案,不再需要对所有进程和栈帧进行全面检查,而是针对待替换函数对应的安全检查区中存在风险可能的函数进行检查,降低栈安全检查的复杂度,能够有效提升栈安全检查的效率,进而能够提高热修复时的用户体验。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的数据处理方法的流程示意图;
图2为本申请实施例提供的调用路径的结构示意图;
图3为本申请实施例提供的一种安全检查区的示意图;
图4为本申请实施例提供的另一种数据处理方法的流程示意图;
图5为本申请实施例提供的一种确定安全检查区的方法的流程示意图;
图6为本申请实施例提供的一种安全检查策略的流程示意图;
图7为本申请实施例提供的一种数据处理系统的结构示意图;
图8为本申请实施例提供的一种客户端设备的结构示意图;
图9为本申请实施例提供的一种数据处理装置的结构示意图;
图10为本申请实施例提供的一种服务端设备的结构示意图;
图11为本申请实施例提供的另一种数据处理装置的结构示意图。
具体实施方式
在对安装有Linux系统的电子设备(比如,服务器等)进行维护的时候,为了减少对电子设备运行的影响,通常会采用热修复或热升级方式对Linux内核进行维护。然而,在进行维护的过程中,若发现将要修复或者升级的函数正处于被进程调用中,那么将终止对该待替换函数的修复或升级工作。若未经检查,或者检查错后强制进行对待替换函数的替换操作,那么可能导致Linux系统出现错误,影响电子设备的正常运行,对用户电子设备的使用过程所造成的不良影响比较大。因此,在进行热修复或者热升级之前,通常会对系统所有进程栈进行栈安全检查。在现有的热修复方式有比如动态内核补丁机制的kpatch_backtrace_address_verify 方法、klp_check_stack_func 方法等。这两种方法比较类似,都是通过检查系统所有进程的栈帧判断是否存在安全隐患,如果待修复或者升级的函数存在进程的栈上,则会检查失败,也就无法进行对待修复函数的修复或者升级。在利用上述两种方法进行安全检查的时候,通常具有较高的复杂度,因为在进行检查的时候,要对所有进程及对应的栈帧都进行安全检查,也就意味着检查的复杂度为进程数量与栈深度的乘积。在有的安全检查方式中,需要在停机(stop_mahine)状态完成,检查复杂度较大,会增加停机时间,影响电子设备正常运行。而且有的一些特殊函数,比如,__schedule采用现有方法是无法进行替换的。因此,需要一种能够满足对函数(比如,Linux内核函数)进行修复或升级前的快速、简单的安全检查的技术方案。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。此外,下文描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请技术方案中,以Linux内核程序中函数的热修复为例进行说明。所述Linux内核程序中的函数包括:
为了能够实现快速栈安全检查,可以先对内核程序进行分析,并将分析结果和/或建议信息展示给开发人员,以便开发人员根据分析结果和/或建议信息去开发针对内核程序中某一函数的热升级数据包。比如,分析结果为待替换函数(即需要进行热升级热修复的函数)符合栈安全防护条件,内核程序中包含有所述待替换函数对应的安全检查区。这样开发人员便可基于分析结果,开发相应的内核模块(即用于热升级热修复待替换函数的数据包),使得具有该内核程序的设备(如服务器)在加载所述内核模块后,能采用轻量级的安全策略,进行热升级热修复,而不需要要对系统所有进程的进程栈都进行检查再进行函数的替换。需要说明的是,这里所说的热升级数据包还可以是热修复数据包,利用热修复数据包进行替换操作的过程与基于热升级数据包进行替换操作的过程是一样的。下面将通过具体实施例进行说明。
如图1为本申请一实施例提供的数据处理方法的流程示意图。在实际应用场景中,该方法的执行主体可以是电子设备(比如,计算机、服务器等)。该方法具体包括如下步骤:
101:根据热升级数据包确定出目标函数、内核程序中的待替换函数及安全检查区时,进入停机状态;其中,所述安全检查区中包含有所述内核程序中所述待替换函数所在调用路径上的多个函数。
102:对所述安全检查区内所述多个函数所在进程进行检查。
103:检查结果为安全时,根据所述目标函数,对所述待替换函数执行替换操作。
在实际应用中,如图2为本申请实施例提供的调用路径的结构示意图。在进程中调用的函数之间存在有符合执行逻辑的调用关系,根据这些调用关系可以了解到完整的调用路径。比如,从图2中可以看到该调用路径为一条链式调用路径。该调用路径中的一个或多个函数可为本实施例中的待替换函数。图2示出了函数3为待替换函数的情况。若存在多个需要替换的函数,则可以逐个对各个待替换函数进行相应的分析。
这里所说的待替换函数,可以是Linux内核中的各类型函数,比如,接口函数、特定功能函数(比如,调度器函数)等等。比如,在一次内核函数升级作业中,假设,对内核调度器的升级操作,需要对多个不同的接口函数都进行替换操作,那么这个调度器中各接口函数都可以称为待替换函数。若多个待替换函数分别在不同的调用路径中,则需要分别从对应的调用路径中确定对应的函数调用信息。为了提升内核数据的处理速度,在确定调用路径中的待替换函数时,若调用路径中有多个待替换函数,还可以顺便确定一下多个待替换函数之间的调用关系。如果多个待替换函数之间确实存在调用关系,那么可以同时对多个待替换函数进行检查。
这里所说的安全检查区,包含有内核程序中待替换函数在内的多个函数。具体来说,基于所述函数调用信息,沿调用路径遍历所述待替换函数的下游函数中是否存在调度函数。存在调度函数时,将所述待替换函数所在节点至所述调度函数所在节点之间的区域作为所述安全检查区。
如上述步骤102所述,对所述安全检查区内所述多个函数所在进程进行检查,包括:1021:获取所述安全检查区内所述多个函数所在进程的进程描述符。1022:基于所述多个函数所在进程的进程描述符,检查所述多个函数中是否存在具有设定行为的函数。1023:存在所述具有设定行为的函数时,检查结果为不通过。1024:不存在所述具有设定行为的函数时,检查结果为通过。
在Linux内核启动init程序作为第一个进程之后,可以通过进程描述符了解到进程栈中各函数具体信息。进程描述符的state字段描述了进程当前的状态,每个进程都处于多种状态中的一种,包括:Task_running:运行,进程是可执行的。Task_interruptible:可中断,进程被阻塞:等待被唤醒。Task_uninterruptible:不可中断,收到信号不作任何响应等。比如,通过进程描述符可以了解到待替换函数所在调用路径以及进程状态、进程栈中各函数的调用关系等等。举例来说,从安全检查区对应的进程描述符当中查找是否存在有设定互斥锁行为,比如,是否存在设定owner或者waiter行为。如果存在设定行为,则表示安全检查区中的函数处于被进程调用中,而且已经触发睡眠函数和/或上下文切换,则表示检查结果不通过,无法进行安全替换。如果不存在设定行为,则表示检查结果为通过,就可以对待替换函数进行安全替换。基于这样的安全检查方式仅对安全检查区中的函数进行有针对性的检查,有效提升检查效率,对这个安全检查区进行针对性检查的过程可以理解为轻量级栈安全检查。
这里所说的互斥锁(mutex锁)用于多线程编程中,防止两条线程同时对同一公共资源(比如,全域变数)进行读写的机制。在本申请方案中,恰好可以利用互斥锁的功能,对执行进程进行干扰,为待替换函数的替换操作提供便利条件。
下面结合附图说明一下安全检查区的确定方法。如图3为本申请实施例提供的一种安全检查区的示意图。从图3中可以看到,虚线框中表示该待替换函数的安全检查区。在确定安全检查区的时候,从待替换函数所在节点开始,沿着待替换函数所在路径的下游进行预设函数的查找,若查找如下中的至少一种:需获取互斥锁的函数、触发进程进入睡眠状态的函数、触发上下文切换的函数。则将待替换函数开始包括预设函数在内的整个区域作为安全检查区。
对安全检查区进行轻量级栈安全检查的方式也可以有两种。下面分别具体举例说明。
一种方式是对所述安全检查区中各节点函数的进程运行状态进行检查。若所述互斥锁存在被占用状态,则检查结果为所述安全检查区内存在有函数处于被进程调用中,则检查结果为不通过,将终止对所述待替换函数的替换处理;若检查所述互斥锁为未被占用状态,则检查结果为通过,可以对待替换函数进行替换处理。
例如,如图3所示,在图3中的5号节点函数获取 mutex B 锁,检查安全检查区后发现存在互斥锁mutexB锁,则将进一步检查该锁是否被占用,也就是具体检查是否有对owner和waiter的设定行为。如果也存在设定行为,则说明安全检查区内存在函数处于被进程调用中(换言之,已经有进程在安全检查区域内),而且已经触发睡眠函数和/或上下文切换,此时的安全检查区是不安全的。这种检查方式只需要检查 mutex锁或waitq即可,无需遍历所有进程,是一种非常快速的操作。具体的过程如下:
retry:
stop_machine();
check_owner_waiter();
if(success)
continue;
else
goto retry;
启动检查,并进行停机。检查owner 和 waiter状态,若被占用,则表示当前安全检查区的检查结果是不安全,将终止对待替换函数的替换操作。反之,若经检查后发现安全检查区(中各函数)处于安全状态,则表示检查通过,将会对待替换函数执行替换操作。当然,具体替换操作的方式需要根据待替换函数的类型确定的。
另一种方式是在待替换函数所在安全检查区中睡眠函数和/或上下文切换前后插入引用计数函数(Reference counting)。具体来说,获取所述安全检查区内所述多个函数中负责触发进程进入睡眠状态或者上下文切换的第一函数对应的引用计数值;基于所述引用计数值,确定是否能卸载所述待替换函数。比如,若所述安全检查区中的存在第一函数(例如,do_wait_for_common 、__schedule)触发睡眠状态或者上下文切换,第一函数的被引用次数不为零,则所述安全检查区内存在有节点函数处于被进程调用中,终止对所述待替换函数的替换处理。反之,如果为零,则安全检查区中函数当前处于安全状态,可以对待替换函数执行替换操作。
基于上述实施例,在进行待替换函数替换之前,需要对待替换函数相关进程进行栈安全检查。具体来说,从调度路径中锁定待替换函数相关的安全检查区,并进一步对安全检查区的进程状态进行分析,进而,根据分析结果执行对应的待替换函数处理方式。
在实际应用中,若要对待替换函数进行替换处理,除了采用上述轻量级栈安全检查的方式之外,还可以进行采用安全防护的方案。具体来说:根据热升级数据包确定出所述待替换函数符合栈安全防护条件时,对所述待替换函数进行安全防护操作。进而,根据所述目标函数,对完成所述防护操作的所述待替换函数执行替换操作。
需要说明的是,不同的栈安全防护条件对应的安全防护操作不同。下面将分别针对不同的栈安全防护条件下所采用的对应的安全防护措施进行具体举例说明。
一种情况:所述待替换函数的上游调用路径上存在互斥锁时所述待替换函数符合栈安全防护条件,并利用所述互斥锁对所述待替换函数进行安全防护操作。
具体来说,互斥锁位于安全检查区的上游时,确定在执行所述待替换函数对应的热修复时采用对应安全防护操作。从图3中可以看到一个用于表示安全检查区的虚线框,安全检查区的范围从待替换函数开始到睡眠函数截止。因为只有当在待替换函数(比如,接口函数)的下游路径中存在睡眠函数的范围内才属于安全区域。若进程已经执行到睡眠函数之后的节点函数8,那么不属于该待替换函数的安全范围。因为如果进程执行过睡眠函数6所在节点函数之后,进入到图3中的节点函数7和节点函数8,可以认为被替换待替换函数已经不存在替换隐患,也就不需要针对其进行栈安全检查。
进一步地,对所述待替换函数进行安全防护操作,包括:将所述互斥锁定义为被占用状态,以阻止所述待替换函数所在进程触发调用所述待替换函数以产生所述待替换函数对应的栈帧的动作。
举例来说,如图3所述,在图3中的节点函数2中存在互斥锁mutexA锁为被占用状态,表示当前调用路径对应的进程在此被中断或者跳转到其他进程当中。那么,在互斥锁mutexA后部的节点函数3至节点函数8都暂时不会进入到进程当中,也就处于安全状态,可以将待替换函数(图3中节点函数3)替换为目标函数。
在整条调用路径中,3 号节点函数及其子路径属于安全检查区。在 3 号节点函数的父节点2号节点函数,有获取 mutex A锁的行为,即整个安全检查区处于锁 A 的临界区内,此时可以利用mutex A进行栈安全防护。具体做法就是:
mutex_lock(mutex A);
<replace function 3>
mutex_unlock(mutex A);
通过上述安全防护处理方式,能够防止进程进入安全检查区,避免对待替换函数替换工作产生安全隐患;同时,在进行函数替换操作的时候,无需停机或线程同步操作,能够有效保证电子设备的正常进行。
另一种情况:所述待替换函数为调度函数时所述待替换函数符合栈安全防护条件,并利用所述调度函数中的负责进程切换的函数,对所述调度函数进行安全防护操作。
具体来说,如待替换函数是调度函数__schedule,标记为对所述待处理的待替换函数进行安全防护操作之后包括:若所述待替换函数为调度函数,则对所述调度函数进行拆分处理,以使上下文切换执行跳转到调度函数下半部,并对所述待替换函数的上半部进行替换处理。
例如,现有__schedule函数的简化结构如下:
pick_next_task → put_prev_task → context_switch → finish_task_switch → ...
↓↑
switch_to
对所述调度函数进行安全防护操作时,包括如下步骤:进入停机状态。修改所述调度函数中的负责进程切换的第二函数,以将所述调度函数拆分得到两个部分,分别为无栈安全问题的上半部分和有栈安全问题的下半部分,使得被调度回所述第二函数所在的进程后执行所述有栈安全问题的下半部分。在进行替换的时候,利用目标函数对所述无栈安全问题的上半部分执行替换操作。
例如:当处于 stop_machine 状态时,除了替换程序、以及 stopper 线程外,其它的进程都在 switch_to 函数里,即它们都在这发生了物理意义上的上下文切换。通过修改switch_to 函数的返回值,来解决这个栈安全问题,如下:
pick_next_task → put_prev_task → context_switch
↓
switch_to
↓
原 __schedule 函数下半部分 → finish_task_switch
上述“原 __schedule 函数下半部分”可以理解为是一个跳板,换言之,修改了switch_to 的返回值,使其总是返回到原 __scheduler函数下半部分。利用跳板技术实则是将 __schedule 函数拆分成两部分:无栈安全问题的上半部分,和有栈安全部分的下半部分。在进行替换的时候,仅对无栈安全问题的上半部进行替换,而switch_to后的下半部分函数则不进行替换。这样不论是原函数还是新函数,下一次上下文切换都会回到原函数的跳板中,进行__schedule上半部进行替换的栈安全问题得以解决。
上下文切换是从一个进程切换到另一个进程。上下文切换定义在kernel/sched.c中的context_switch函数,该函数完成两项基本工作。调用定义在include/asm/menu_context.h中的Switch_mm,负责把虚拟内存从一个进程映射切换到新进程中。调用定义在include/asm/system.h中的Switch_to,负责从上一个进程的处理器状态切换到新进程的处理器状态。
基于同样的思路,本申请实施例还提供一种数据处理方法。该方法执行主体可以是计算机等电子设备,通过该方法可以帮助开发人员生成适用于对对指定函数进行替换的热升级数据包。如图4为本申请实施例提供的另一种数据处理方法的流程示意图,该方法包括如下步骤
401:获取内核程序中待替换函数所在调用路径的路径信息。
402:对所述路径信息进行分析,确定是否存在安全检查区,其中,所述安全检查区内包含有所述调用路径上的多个函数。
403:输出是否存在所述安全检查区的分析结果,以辅助生成针对所述待替换函数的热升级数据包。
在内核程序中包含有很多函数。由于某些函数存在问题或者需要进行升级时,利用目标函数进行替换。一般来说是通过生成热升级数据包的方式对其进行替换。在生成热升级数据包之前,会针对不同的函数、不同进程状态制定不同的升级策略。
在制作热升级数据包之前,开发人员已经明确当前程序中有哪些函数需要被替换,对调用路径中上下游调用关系进行遍历的时候,判断待替换函数所在调用路径中是否存在调度函数(__schedule)。因为通过__schedule可以对进程进度进行查找分析,并对进程切换进行干扰。此外,在__schedule函数中定义有上下文切换和睡眠函数,所以在实际应用中可以对调用路径中上下文切换和/或睡眠函数的设定行为进行检查,若存在上下文切换和/或睡眠函数被设定,则可能存在有触发上下文切换或睡眠函数的函数处于被进程调用中。例如,假设存在上下文切换被触发,并且向上下文切换发送触发信息(比如,处于同一调用路径中)的待替换函数恰好被进程调用,这时若执行对待替换函数的替换则是不安全的,会导致替换完待替换函数并继续执行出现无法控制的结果。因此,需要对这种隐患进行排查。反之,若检查结果中没有发现对上下文切换和/或睡眠函数的设定行为,对应的待替换函数也没有处于执行一半的进程,那么检查结果就是安全的,可以利用目标函数对待替换函数进行替换操作。
需要说明的是,在上述方案中,利用目标函数对待替换函数进行替换的时候,先将需要被替换掉的待替换函数进行备份处理,并存储到或者复制另一个备用存储空间。进而,将热升级数据包中的目标函数替换待替换函数所在存储空间。
这里所说的路径信息包括调用路径中包含的函数、进程状态等等。对所述路径信息进行分析比如可以是对调用路径中的待替换函数的栈安全防护条件进行分析、对特定函数设定行为进行分析,从而指定对应的生成热升级数据包的方式。
在进行分析的时候,可以分情况进行,一种是对栈安全防护条件进行分析,另一种是对轻量级栈安全检查进行分析。下面对两种不同的情况分析进行举例说明。
先举例说明对栈安全防护条件进行分析过程。
分析所述待替换函数是否符合栈安全防护条件。输出所述待替换函数是否符合栈安全防护条件的分析结果,以结合所述分析结果辅助生成针对所述待替换函数的所述热升级数据包。
举例来说,若通过对调用路径中的上游相关路径信息进行分析,发现互斥锁位于安全检查区的上游时,则确定可以采栈安全防护方案。也就是,在开发热升级数据包的时候,可以将栈安全防护相关代码预置在热升级数据包中。
此外,还有一种特殊函数需要单独采用对应的安全防护方案,这个函数为调度函数__schedule。若所述待替换函数为调度函数,则对所述调度函数进行拆分处理,以使上下文切换执行跳转到调度函数下半部,并对所述待替换函数的上半部进行替换处理。具体地,通过调整switch_to在调度函数中的位置以及返回值,实现对调度函数的不存在栈安全问题的上半部进行替换。也就是,在开发热升级数据包的时候,可以将该方案的安全防护相关代码预置在热升级数据包中。
在获取到调用路径的路径信息之后,还需要基于路径信息确定是否存在安全检查区,以及是否可以采用轻量级栈安全分析。如图5为本申请实施例提供的一种确定安全检查区的方法的流程示意图。从图5中可以看到包括如下步骤:
501:根据所述路径信息,沿调用路径遍历所述待替换函数的下游函数中是否存在预设函数。
502:存在所述预设函数时,将所述调用路径上所述待替换函数至所述预设函数之间的多个函数确定为所述安全检查区;其中,所述预设函数包括如下中的至少一种:需获取互斥锁的函数、触发进程进入睡眠状态的函数、触发上下文切换的函数。
为了便于理解,结合图3可以看到在调用路径中确定安全检查区的示意图。从路径信息中查找在待替换函数的下游函数中是否存在预设函数(比如,获取互斥锁的函数、触发进程进入睡眠状态的函数、触发上下文切换的函数等)。如果存在,则从待替换函数开始到预设函数截止范围内的所有函数组成安全检查区。
在确定安全检查区之后,而且经过分析发现互斥锁位于安全检查区内,则可以对其进行轻量级栈安全检查方案,在开发热升级数据包的时候,可以将该方案的轻量级栈安全检查相关代码预置在热升级数据包中。
在一些应用场景中,如果不仅要利用目标函数替换待替换函数,还需要进一步地将待替换函数卸载。具体来说,可以插入引用计数函数,在安全检查区中睡眠函数和/或上下文切换点前后插入引用计数Reference counting函数。在开发热升级数据包的时候,可以将该方案相关代码预置在热升级数据包中。具体利用引用计数实现对待替换目标函数的替换操作可以参考上述实施例,这里就不再重复赘述。
在本申请技术方案中,在进行数据处理的时候,一种实际应用场景中可以是由开发人员进行轻量级栈安全检查策略的分析。在开发人员的工作的客户端设备中,可以看到显示有相关信息的显示交互界面,开发人员可以通过该显示交互界面比较直观清楚的看到函数调用信息。进而,响应于用户(比如,开发人员)在交互界面上的输入操作,获取用户导入到程序的待替换函数及程序中的函数调用信息。在实际开发过程中,开发人员的函数处理需求是明确的,因此,开发人员可以直接指定待替换函数有哪些,进而导入该待替换函数及其函数调用信息。通过上述实施例的处理过程,可以为后续工作人员提供针对待替换函数进行热修复是所需要采用策略的建议信息(比如前文所述是否采用轻量级栈安全检查策略,以及是否进行栈安全防护等等)。后续开发人员能够通过显示交互界面直观的了解到策略的建议信息。
为了便于理解,下面将安全检查流程进行整体举例说明。如图6为本申请实施例提供的一种安全检查策略的流程示意图。从图6中可以看到,通过对程序中待替换函数进行栈安全分析后,会向后续工作的开发人员输出建议信息,这个建议信息为是否满足采用轻量级栈安全检查的条件(例如,前文所述判断待替换函数所在路径中是否存在安全检查区)。不存在安全检查区的情况下,则采用传统栈安全检查。在存在安全检查区的情况下,还可以具体分为是采用安全防护还是轻量级栈安全检查。在确定需要采用的策略为轻量级栈安全检查策略之后,会进一步生成待替换函数对应的热升级数据包。
为了便于对上述技术方案的理解,下面以某一内核模块进行升级为例进行说明。预先生成一个内核模块升级数据包,从内核模块升级包中提取到内核模块和重定位工具。利用重定位工具,锁定内核函数中需要被替换掉的原接口函数。进而,基于stop machine机制进行停机处理,然后检查当前内核中将要被替换的原接口函数是否可以被替换。具体来说:
假设该内核模块升级时只需要对其中的接口函数进行替换。确定原接口函数的调用路径,并从调用路径中确定至少一个原接口函数的位置,以及对调用路径中的mutex锁进行查找。若查找到mutex锁位于某个原接口函数的安全检查区的上游,则可以采用安全防护操作方式进行处理,启用mutex锁,对其中的原接口函数进行替换,替换完成后解锁。对内核模块中的其他函数、公共数据、私有数据进行同步。完成同步后,解除停机,电子设备恢复正常。若查找到mutex锁位于某个待替换的原接口函数的安全检查区中,则可以采用轻量级栈安全检查的方式进行处理。
由此可见,虽然是对调度器模块进行升级,但是,在各个原接口函数满足轻量级栈安全检查条件或者栈安全防护处理条件的情况下,不需要进行太久的停机就能够完成检查。若检查通过也直接进行函数的替换,采用本申请技术方案能够有效提升栈安全检查效率,以及函数升级效率。
基于同样的思路,本申请实施例还提供一种数据处理系统。如图7为本申请实施例提供的一种数据处理系统的结构示意图。如图7所示,该系统包括:
第一客户端设备71,用于获取内核程序中待替换函数所在调用路径的路径信息;对所述路径信息进行分析,确定是否存在安全检查区,其中,所述安全检查区内包含有所述调用路径上的多个函数;存在所述安全检查区时获取针对所述待替换函数的内核程序热修复模块;
服务器72,用于获取所述内核程序热修复模块,根据所述内核程序热修复模块,确定目标函数、内核程序中的待替换函数及安全检查区;其中,所述安全检查区中包含有所述内核程序中所述待替换函数所在调用路径上的多个函数;进入停机状态;对所述安全检查区内所述多个函数所在进程进行检查;检查结果为安全时,根据所述目标函数,对所述待替换函数执行替换操作;恢复为工作状态,完成对所述内核程序的热修复。
或者发送给至少一个第二客户端设备73。
从图7中可以看到,在数据处理系统中,由开发人员利用客户端设备进行开发工作,进而可以利用热升级数据包对服务端设备进行修复处理。或者,另一种应用场景中,可以由服务端将该热升级数据包发送给第二客户端设备,以便第二客户端设备利用该热升级数据包进行修复处理。
本申请一个实施例还提供一种客户端设备。如图8为本申请实施例提供的一种客户端设备的结构示意图。该电子设备包括存储器801、处理器802及通信组件803;其中,
所述存储器801,用于存储程序;
所述处理器802,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于:
获取内核程序中待替换函数所在调用路径的路径信息;
对所述路径信息进行分析,确定是否存在安全检查区,其中,所述安全检查区内包含有所述调用路径上的多个函数;
输出是否存在所述安全检查区的分析结果,以辅助生成针对所述待替换函数的热升级数据包。
上述存储器801可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
进一步地,本实施例中的所述处理器802可以具体是:可编程交换处理芯片,该可编程交换处理芯片中配置有数据复制引擎,能对接收到的数据进行复制。
上述处理器802在执行存储器中的程序时,除了上面的功能之外,还可实现其它功能,具体可参见前面各实施例的描述。进一步,如图8所示,电子设备还包括:显示组件804等其它组件。
基于同样的思路,本申请实施例还提供一种数据处理装置。如图9为本申请实施例提供的一种数据处理装置的结构示意图。该数据处理装置包括:
获取模块901,用于获取内核程序中待替换函数所在调用路径的路径信息。
确定模块902,用于对所述路径信息进行分析,确定是否存在安全检查区,其中,所述安全检查区内包含有所述调用路径上的多个函数。
输出模块903,用于输出是否存在所述安全检查区的分析结果,以辅助生成针对所述待替换函数的热升级数据包。
进一步地,还包括:分析模块904,用于分析所述待替换函数是否符合栈安全防护条件。输出所述待替换函数是否符合栈安全防护条件的分析结果,以结合所述分析结果辅助生成针对所述待替换函数的所述热升级数据包。
进一步地,分析模块904,还用于所述待替换函数的上游调用路径上存在互斥锁时,所述待替换函数符合栈安全防护条件;所述待替换函数为调度函数时,所述待替换函数符合栈安全防护条件。
进一步地,确定模块902,还用于根据所述路径信息,沿调用路径遍历所述待替换函数的下游函数中是否存在预设函数。存在所述预设函数时,将所述调用路径上所述待替换函数至所述预设函数之间的多个函数确定为所述安全检查区。其中,所述预设函数包括如下中的至少一种:需获取互斥锁的函数、触发进程进入睡眠状态的函数、触发上下文切换的函数。
本申请一个实施例还提供一种服务端设备。如图10为本申请实施例提供的一种服务端设备的结构示意图。该电子设备包括存储器1001、处理器1002及通信组件1003;其中,
所述存储器1001,用于存储程序;
所述处理器1002,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于:
根据热升级数据包确定出目标函数、内核程序中的待替换函数及安全检查区时,进入停机状态;其中,所述安全检查区中包含有所述内核程序中所述待替换函数所在调用路径上的多个函数;
对所述安全检查区内所述多个函数所在进程进行检查;
检查结果为安全时,根据所述目标函数,对所述待替换函数执行替换操作。
上述存储器1001可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
进一步地,本实施例中的所述处理器1002可以具体是:可编程交换处理芯片,该可编程交换处理芯片中配置有数据复制引擎,能对接收到的数据进行复制。
上述处理器1002在执行存储器中的程序时,除了上面的功能之外,还可实现其它功能,具体可参见前面各实施例的描述。进一步,如图10所示,电子设备还包括:电源组件1004等其它组件。
基于同样的思路,本申请实施例还提供一种数据处理装置。如图11为本申请实施例提供的另一种数据处理装置的结构示意图。该数据处理装置包括:
确定模块1101,用于根据热升级数据包确定出目标函数、内核程序中的待替换函数及安全检查区时,进入停机状态;其中,所述安全检查区中包含有所述内核程序中所述待替换函数所在调用路径上的多个函数。
检查模块1102,用于对所述安全检查区内所述多个函数所在进程进行检查。
替换模块1103,用于检查结果为安全时,根据所述目标函数,对所述待替换函数执行替换操作。
进一步地,检查模块1102,还用于获取所述安全检查区内所述多个函数所在进程的进程描述符。基于所述多个函数所在进程的进程描述符,检查所述多个函数中是否存在具有设定行为的函数。存在所述具有设定行为的函数时,检查结果为不通过。不存在所述具有设定行为的函数时,检查结果为通过。
进一步地,还包括:获取模块1104,用于获取所述安全检查区内所述多个函数中负责触发进程进入睡眠状态或者上下文切换的第一函数对应的引用计数值。基于所述引用计数值,确定是否能卸载所述待替换函数。
进一步地,安全防护模块1105,还用于根据热升级数据包确定出所述待替换函数符合栈安全防护条件时,对所述待替换函数进行安全防护操作。根据所述目标函数,对完成所述防护操作的所述待替换函数执行替换操作。
进一步地,安全防护模块1105,还用于所述待替换函数的上游调用路径上存在互斥锁时所述待替换函数符合栈安全防护条件,并利用所述互斥锁对所述待替换函数进行安全防护操作。所述待替换函数为调度函数时所述待替换函数符合栈安全防护条件,并利用所述调度函数中的负责进程切换的函数,对所述调度函数进行安全防护操作。
进一步地,安全防护模块1105,还用于将所述互斥锁定义为被占用状态,以阻止所述待替换函数所在进程触发调用所述待替换函数以产生所述待替换函数对应的栈帧的动作。
进一步地,替换模块1103,还用于将待替换函数替换为所述目标函数。
进一步地,安全防护模块1105,还用于在进入停机状态后;修改所述调度函数中的负责进程切换的第二函数,以将所述调度函数拆分得到两个部分,分别为无栈安全问题的上半部分和有栈安全问题的下半部分,使得被调度回所述第二函数所在的进程后执行所述有栈安全问题的下半部分。
进一步地,替换模块1103,还用于根据所述目标函数,对所述无栈安全问题的上半部分执行替换操作。
基于上述实施例,在通过热修复技术对Linux内核中问题函数进行修复或者升级的时候,需要确保被修改或者替换的函数没有存在在任何进程的栈上。具体来说,获取程序的目标函数及所述程序中的函数调用信息;根据所述函数调用信息,确定所述程序的至少一个进程栈中是否存在含有所述目标函数对应栈帧的安全检查区;其中,所述安全检查区包含有至少一个栈帧;存在有所述安全检查区时,确定在执行所述目标函数对应的热修复时采用轻量级栈安全检查策略;其中,所述轻量级栈安全检查策略为检查所述安全检查区中的栈帧。采用上述技术方案,不再需要对所有进程和栈帧进行全面检查,而是针对待替换函数对应的安全检查区中存在风险可能的函数进行检查,降低栈安全检查的复杂度,能够有效提升栈安全检查的效率,进而能够提高热修复时的用户体验。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (14)
1.一种数据处理方法,包括:
根据热升级数据包确定出目标函数、内核程序中的待替换函数及安全检查区时,进入停机状态;其中,所述安全检查区中包含有所述内核程序中所述待替换函数所在调用路径上的多个函数;所述安全检查区的确定方式为基于所述调用路径上所述待替换函数至预设函数之间的多个函数确定的;
对所述安全检查区内所述多个函数所在进程进行检查;
检查结果为安全时,根据所述目标函数,对所述待替换函数执行替换操作。
2.根据权利要求1所述的方法,对所述安全检查区内所述多个函数所在进程进行检查,包括:
获取所述安全检查区内所述多个函数所在进程的进程描述符;
基于所述多个函数所在进程的进程描述符,检查所述多个函数中是否存在具有设定行为的函数;
存在所述具有设定行为的函数时,检查结果为不通过;
不存在所述具有设定行为的函数时,检查结果为通过。
3.根据权利要求1所述的方法,还包括:
获取所述安全检查区内所述多个函数中负责触发进程进入睡眠状态或者上下文切换的第一函数对应的引用计数值;
基于所述引用计数值,确定是否能卸载所述待替换函数。
4.根据权利要求1至3中任一项所述的方法,还包括:
根据所述热升级数据包能确定出所述待替换函数符合栈安全防护条件时,对所述待替换函数进行安全防护操作;
根据所述目标函数,对完成所述防护操作的所述待替换函数执行替换操作。
5.根据权利要求4所述的方法,所述待替换函数符合栈安全防护条件时,对所述待替换函数进行安全防护操作,包括:
所述待替换函数的上游调用路径上存在互斥锁时所述待替换函数符合栈安全防护条件,并利用所述互斥锁对所述待替换函数进行安全防护操作;
所述待替换函数为调度函数时所述待替换函数符合栈安全防护条件,并利用所述调度函数中的负责进程切换的函数,对所述调度函数进行安全防护操作。
6.根据权利要求5所述的方法,所述对所述待替换函数进行安全防护操作,包括:
将所述互斥锁定义为被占用状态,以阻止所述待替换函数所在进程触发调用所述待替换函数以产生所述待替换函数对应的栈帧的动作;
所述根据所述目标函数,对完成所述防护操作的所述待替换函数执行替换操作,包括:
将待替换函数替换为所述目标函数。
7.根据权利要求5所述的方法,利用所述调度函数中的负责进程切换的函数,对所述调度函数进行安全防护操作,包括:
进入停机状态;
修改所述调度函数中的负责进程切换的第二函数,以将所述调度函数拆分得到两个部分,分别为无栈安全问题的上半部分和有栈安全问题的下半部分,使得被调度回所述第二函数所在的进程后执行所述有栈安全问题的下半部分。
8.根据权利要求7所述的方法,根据所述目标函数,对所述待替换函数执行替换操作,包括:
根据所述目标函数,对所述无栈安全问题的上半部分执行替换操作。
9.一种数据处理方法,包括:
获取内核程序中待替换函数所在调用路径的路径信息;
对所述路径信息进行分析,确定是否存在安全检查区,其中,所述安全检查区内包含有所述调用路径上的多个函数;所述安全检查区的确定方式为基于所述调用路径上所述待替换函数至预设函数之间的多个函数确定的;
输出是否存在所述安全检查区的分析结果,以辅助生成针对所述待替换函数的热升级数据包。
10.根据权利要求9所述的方法,还包括:
分析所述待替换函数是否符合栈安全防护条件;
输出所述待替换函数是否符合栈安全防护条件的分析结果,以结合所述分析结果辅助生成针对所述待替换函数的所述热升级数据包。
11.根据权利要求10所述的方法,分析所述待替换函数是否符合栈安全防护条件,包括:
所述待替换函数的上游调用路径上存在互斥锁时,所述待替换函数符合栈安全防护条件;
所述待替换函数为调度函数时,所述待替换函数符合栈安全防护条件。
12.根据权利要求9至11中任一项所述的方法,对所述路径信息进行分析,确定是否存在安全检查区,包括:
根据所述路径信息,沿调用路径遍历所述待替换函数的下游函数中是否存在预设函数;
存在所述预设函数时,将所述调用路径上所述待替换函数至所述预设函数之间的多个函数确定为所述安全检查区;
其中,所述预设函数包括如下中的至少一种:需获取互斥锁的函数、触发进程进入睡眠状态的函数、触发上下文切换的函数。
13.一种数据处理系统,包括:
客户端设备,用于获取内核程序中待替换函数所在调用路径的路径信息;对所述路径信息进行分析,确定是否存在安全检查区,其中,所述安全检查区内包含有所述调用路径上的多个函数;存在所述安全检查区时获取针对所述待替换函数的内核程序热修复模块;
服务器,用于获取所述内核程序热修复模块,根据所述内核程序热修复模块,确定目标函数、内核程序中的待替换函数及安全检查区;其中,所述安全检查区中包含有所述内核程序中所述待替换函数所在调用路径上的多个函数;进入停机状态;对所述安全检查区内所述多个函数所在进程进行检查;检查结果为安全时,根据所述目标函数,对所述待替换函数执行替换操作;恢复为工作状态,完成对所述内核程序的热修复;
所述安全检查区的确定方式为基于所述调用路径上所述待替换函数至预设函数之间的多个函数确定的。
14.一种电子设备,包括存储器及处理器;其中,
所述存储器,用于存储程序;
所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于实现上述权利要求1至8中任一项所述的方法;或上述权利要求9至12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111228418.4A CN113672273B (zh) | 2021-10-21 | 2021-10-21 | 数据处理方法、系统及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111228418.4A CN113672273B (zh) | 2021-10-21 | 2021-10-21 | 数据处理方法、系统及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113672273A CN113672273A (zh) | 2021-11-19 |
CN113672273B true CN113672273B (zh) | 2022-04-15 |
Family
ID=78550752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111228418.4A Active CN113672273B (zh) | 2021-10-21 | 2021-10-21 | 数据处理方法、系统及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672273B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114691181A (zh) * | 2022-03-28 | 2022-07-01 | 阿里巴巴(中国)有限公司 | 热升级方法、装置、设备、分布式系统及存储介质 |
CN116484439B (zh) * | 2023-06-25 | 2023-09-01 | 中国人民解放军国防科技大学 | 基于Rust语言的安全性增强模型开发方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070011686A1 (en) * | 2005-07-08 | 2007-01-11 | Microsoft Corporation | Changing code execution path using kernel mode redirection |
CN104461625A (zh) * | 2014-12-04 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 一种热补丁实现方法和系统 |
CN111263933A (zh) * | 2017-09-30 | 2020-06-09 | 甲骨文国际公司 | 部署的容器平台中的实时调试实例 |
-
2021
- 2021-10-21 CN CN202111228418.4A patent/CN113672273B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070011686A1 (en) * | 2005-07-08 | 2007-01-11 | Microsoft Corporation | Changing code execution path using kernel mode redirection |
CN104461625A (zh) * | 2014-12-04 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 一种热补丁实现方法和系统 |
CN111263933A (zh) * | 2017-09-30 | 2020-06-09 | 甲骨文国际公司 | 部署的容器平台中的实时调试实例 |
Also Published As
Publication number | Publication date |
---|---|
CN113672273A (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106371940B (zh) | 一种程序崩溃解决方法及装置 | |
US7908521B2 (en) | Process reflection | |
KR100868762B1 (ko) | 임베디드용 소프트웨어의 오류 검출 방법 | |
CN113672273B (zh) | 数据处理方法、系统及设备 | |
JP6788178B2 (ja) | 設定支援プログラム、設定支援方法及び設定支援装置 | |
CN110795128B (zh) | 一种程序漏洞修复方法、装置、存储介质及服务器 | |
CN105988798B (zh) | 补丁处理方法及装置 | |
CN105468529A (zh) | 一种安卓应用ui控件精准遍历方法和装置 | |
Dia et al. | An empirical evaluation of the effectiveness of smart contract verification tools | |
CN111258591A (zh) | 程序部署任务执行方法、装置、计算机设备和存储介质 | |
CN107179982B (zh) | 一种跨进程调试方法和装置 | |
CN111783094A (zh) | 一种数据分析方法、装置、服务器及可读存储介质 | |
US20100077385A1 (en) | Debugger exception filtering with target-based rules | |
US8972784B2 (en) | Method and device for testing a system comprising at least a plurality of software units that can be executed simultaneously | |
CN110990289B (zh) | 一种自动提交bug的方法、装置、电子设备及存储介质 | |
CN113672269B (zh) | 数据处理方法、系统、电子设备及程序产品 | |
CN107229977A (zh) | 一种主机安全基线自动加固方法及系统 | |
CN113609478B (zh) | 一种ios平台应用程序篡改检测方法及装置 | |
CN111404715B (zh) | 一种网络服务实例化方法、装置、电子设备及存储介质 | |
CN117667643A (zh) | 测试用例集的演化方法、装置、计算设备集群及存储介质 | |
CN109388948B (zh) | 一种基于虚拟化技术的潜在恶意软件分析方法及相关装置 | |
CN106055322A (zh) | 一种流程调度方法及装置 | |
CN106021089B (zh) | 一种补丁接口的测试方法及装置 | |
Ruohonen et al. | A Static Analysis of Popular C Packages in Linux | |
CN116149707B (zh) | 分布式系统的升级风险检测和规避方法及装置 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40062662 Country of ref document: HK |