CN111488282A - 业务功能处理方法、装置、电子设备及存储介质 - Google Patents
业务功能处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111488282A CN111488282A CN202010284464.5A CN202010284464A CN111488282A CN 111488282 A CN111488282 A CN 111488282A CN 202010284464 A CN202010284464 A CN 202010284464A CN 111488282 A CN111488282 A CN 111488282A
- Authority
- CN
- China
- Prior art keywords
- memory space
- specific code
- victim
- victim process
- target instruction
- 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
Links
- 238000003672 processing method Methods 0.000 title abstract description 20
- 238000000034 method Methods 0.000 claims abstract description 271
- 230000008569 process Effects 0.000 claims abstract description 231
- 230000006870 function Effects 0.000 claims abstract description 78
- 238000012545 processing Methods 0.000 claims abstract description 75
- 238000002347 injection Methods 0.000 claims abstract description 42
- 239000007924 injection Substances 0.000 claims abstract description 42
- 238000004458 analytical method Methods 0.000 claims description 42
- 230000002159 abnormal effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 13
- 239000000243 solution Substances 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 241001025261 Neoraja caerulea Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请提供一种业务功能处理方法、装置、电子设备及存储介质,该方法包括:获取代码动态注入请求,代码动态注入请求包括与待处理的业务功能对应的特定代码的存储地址及受害者进程的标识;根据存储地址及受害者进程的标识,触发入侵者进程在受害者进程的堆区中申请第一内存空间,并将特定代码注入到第一内存空间中;通过入侵者进程设置受害者进程的EPC指向第一起始地址,并设置受害者进程的栈指针指向结束地址,以根据第一起始地址和结束地址,执行特定代码以实现相应的业务功能处理,实现了对待处理的业务功能的处理。
Description
技术领域
本申请涉及通信电子技术领域,尤其涉及一种业务功能处理方法、装置、电子设备及存储介质。
背景技术
无内部互锁流水级的微处理器(Microprocessor without interlocked pipedstages,MIPS)是一种精简指令系统,MIPS处理器广泛应用于数字电视、机顶盒、蓝光播放器、游戏机、网络设备、手机、电脑、平板电脑等设备中,由于MIPS指令系统的指令类型较少且复杂度较低,使得支持MIPS系统架构的中央处理器(central processing unit,CPU)运行的速度较快,数据处理效率较高。
现有技术中,在对设备中的软件进行安全管理软件、程序测试等功能需求时,可能需要将一段特定代码植入到一个正在运行的进程中,而将一段代码注入到正在运行的进程中的方法被称为代码动态注入方法,现有技术中,针对MIPS体系,并不存在代码动态注入方法,因此,针对MIPS体系,无法通过代码动态注入的方式实现安全管理软件、程序测试等业务功能处理。
因此,亟需一种基于MIPS体系的业务功能处理方法,以满足MIPS体系的特定的业务功能需求。
发明内容
本申请提供一种业务功能处理方法、装置、电子设备及存储介质,以实现特定的业务功能处理。
第一方面,本申请实施例提供一种业务功能处理方法,包括:
获取代码动态注入请求,代码动态注入请求包括与待处理的业务功能对应的特定代码的存储地址及受害者进程的标识;
根据存储地址及受害者进程的标识,触发入侵者进程在受害者进程的堆区中申请第一内存空间,并将特定代码注入到第一内存空间中;
通过入侵者进程设置受害者进程的异常程序计数器(Exception ProgramCounter,EPC)指向第一起始地址,并设置受害者进程的栈指针指向结束地址,以根据第一起始地址和结束地址,执行特定代码以实现相应的业务功能处理。
本申请实施例中,通过根据代码动态注入请求,触发入侵者进程在受害者进程的堆区申请内存空间,并将特定代码注入到该内存空间中,然后通过设置受害者进程的EPC和栈指针,执行特定代码以实现特定代码相应的业务功能处理,实现了特定的业务功能处理。
在一种可能的实施方式中,根据代码动态注入请求,触发入侵者进程在受害者进程的堆区中申请第一内存空间,包括:
根据代码动态注入请求,触发入侵者进程生成目标指令,并将目标指令写入受害者进程中可读写数据区的第二内存空间中,目标指令中携带有需要申请的第一内存空间的大小;
触发入侵者进程恢复运行受害者进程,以使恢复运行后的受害者进程执行第二内存空间中的目标指令,以在受害者进程的堆区中申请第一内存空间。
本申请实施例中,通过根据代码动态注入请求,触发入侵者进程生成目标指令,并将目标指令写入受害者进程的可读写数据区,进而通过受害者进程执行目标指令,以在受害者进程的堆区中申请第一内存空间,实现了对第一内存空间的申请。
在一种可能的实施方式中,将目标指令写入受害者进程中可读写数据区的第二内存空间中,包括:
读出受害者进程的第二内存空间中的原始数据,以将目标指令写入第二内存空间中,并设置受害者进程的EPC指向第二内存空间中目标指令的第二起始地址;
则恢复运行后的受害者进程执行第二内存空间中的目标指令,以在受害者进程的堆区中申请第一内存空间,包括:
恢复运行后的受害者进程根据第二起始地址,获取并执行第二内存空间中的目标指令,以在受害者进程的堆区中申请第一内存空间。
在一种可能的实施方式中,在触发入侵者进程恢复运行受害者进程之后,还包括:
将第二内存空间中的原始数据写回第二内存空间中。
本申请实施例中,通过将第二内存空间中的原始数据写回第二内存空间中,保证了受害者进程的正常执行。
在一种可能的实施方式中,触发入侵者进程在受害者进程的堆区中申请第一内存空间之前,还包括:
触发入侵者进程加载特定代码的文件,以获取特定代码的大小,并根据特定代码的大小确定第一内存空间的大小。
在一种可能的实施方式中,
若特定代码中存在绝对地址,则特定代码的文件为可重定位文件,其中,可重定位文件的MIPS指令集中取消全局指针(Global Pointer,GP)寄存器作为指向全局偏移量表(Global Offset Table,GOT)的指针的使用。
在一种可能的实施方式中,将特定代码注入到第一内存空间中之前,方法还包括:
触发入侵者进程加载特定代码的可重定位文件,并对可重定位文件进行符号解析,获取解析数据;根据解析数据中的符号类型,确定需要重定位的解析数据,并对需要重定位的解析数据进行重定位,以获取重置后的特定代码;
则将特定代码注入到第一内存空间中,包括:
将重置后的特定代码注入到第一内存空间中。
下面介绍本申请实施例提供的装置、电子设备、计算机可读存储介质以及计算机程序产品,其内容和效果可参考本申请实施例提供的业务功能处理方法,不再赘述。
第二方面,本申请实施例提供一种业务功能处理装置,包括:
获取模块,用于获取代码动态注入请求,代码动态注入请求包括与待处理的业务功能对应的特定代码的存储地址及受害者进程的标识;
处理模块,用于根据存储地址和受害者进程的标识,触发入侵者进程在受害者进程的堆区中申请第一内存空间,并将特定代码注入到第一内存空间中;
处理模块,还用于通过入侵者进程设置受害者进程的异常程序计数器EPC指向第一起始地址,并设置受害者进程的栈指针指向结束地址,以根据第一起始地址和结束地址,执行特定代码以实现相应的业务功能处理。
在一种可能的实施方式中,处理模块,包括:
第一处理子模块,用于根据代码动态注入请求,触发入侵者进程生成目标指令,并将目标指令写入受害者进程中可读写数据区的第二内存空间中,目标指令中携带有需要申请的第一内存空间的大小;
第二处理子模块,用于触发入侵者进程恢复运行受害者进程,以使恢复运行后的受害者进程执行第二内存空间中的目标指令,以在受害者进程的堆区中申请第一内存空间。
在一种可能的实施方式中,第一处理子模块,具体用于:
读出受害者进程的第二内存空间中的原始数据,以将目标指令写入第二内存空间中,并设置受害者进程的EPC指向第二内存空间中目标指令的第二起始地址;
第二处理子模块,具体用于:恢复运行后的受害者进程根据第二起始地址,获取并执行第二内存空间中的目标指令,以在受害者进程的堆区中申请第一内存空间。
在一种可能的实施方式中,第二处理子模块,还用于:
将第二内存空间中的原始数据写回第二内存空间中。
在一种可能的实施方式中,处理模块,还用于:
触发入侵者进程加载特定代码的文件,以获取特定代码的大小,并根据特定代码的大小,确定第一内存空间的大小。
在一种可能的实施方式中,若特定代码中存在绝对地址,则特定代码的文件为可重定位文件,其中,可重定位文件的MIPS指令集中取消GP寄存器作为指向GOT的指针的使用。
在一种可能的实施方式中,本申请实施例提供的业务功能处理装置还包括:
解析模块,用于触发入侵者进程加载特定代码的可重定位文件,并对可重定位文件进行符号解析,获取解析数据;
重置模块,根据解析数据中的符号类型,确定需要重定位的解析数据,并对需要重定位的解析数据进行重定位,以获取重置后的特定代码;
处理模块,具体用于:
将重置后的特定代码注入到第一内存空间中。
第三方面,本申请实施例提供一种电子设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如第一方面或第一方面可实现方式提供的方法。
第四方面,本申请实施例提供一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行如第一方面或第一方面可实现方式提供的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括:可执行指令,可执行指令用于实现如第一方面或第一方面可选方式提供的方法。
本申请提供的业务功能处理方法、装置、电子设备及存储介质,通过获取代码动态注入请求,代码动态注入请求包括与待处理的业务功能对应的特定代码的存储地址和受害者进程的标识;并根据存储地址和受害者进程的标识,触发入侵者进程在受害者进程的堆区中申请第一内存空间,并将特定代码注入到第一内存空间中;最后通过入侵者进程设置受害者进程的EPC指向第一起始地址,并设置受害者进程的栈指针指向结束地址,以根据第一起始地址和结束地址,执行特定代码以实现相应的业务功能处理。本申请实施例中,由于通过根据代码动态注入请求,触发入侵者进程在受害者进程的堆区申请内存空间,并将特定代码注入到该内存空间中,然后通过设置受害者进程的EPC和栈指针,执行特定代码以实现特定代码相应的业务功能处理,实现了特定的业务功能处理。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一示例性应用场景图;
图2是本申请一实施例提供的业务功能处理方法的流程示意图;
图3-图5是本申请实施例提供的动态代码注入的逻辑示意图;
图6是本申请另一实施例提供的业务功能处理方法的流程示意图;
图7是本申请另一实施例提供的动态代码注入的逻辑示意图;
图8是本申请又一实施例提供的动态代码注入的逻辑示意图;
图9是本申请又一实施例提供的业务功能处理方法的流程示意图;
图10是本申请一实施例提供的业务功能处理装置结构示意图;
图11是本申请实施例提供的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
MIPS是一种精简指令系统,MIPS处理器广泛应用于数字电视、机顶盒、蓝光播放器、游戏机、网络设备、手机、电脑、平板电脑等设备中,由于MIPS指令系统的指令类型较少且复杂度较低,使得支持MIPS系统架构的CPU运行的速度较快,数据处理效率较高。在对设备中的软件进行安全管理软件、程序测试等功能需求时,可能需要将一段特定代码植入到一个正在运行的进程中。然而现有技术中,针对MIPS体系,并不存在代码动态注入方法,因此,针对MIPS体系,无法通过代码动态注入的方式实现安全管理软件、程序测试等业务功能处理。因此,亟需一种基于MIPS体系的业务功能处理方法,以满足MIPS体系的特定的业务功能需求。
基于此,本申请实施例的发明构思在于:通过将待处理的业务功能对应的特定代码动态注入至受害者进程中,并通过受害者进程执行该特定代码的方式实现对待处理的业务功能处理。具体地,将特定代码动态注入至受害者进程,可以通过入侵者进程在受害者进程的堆区申请内存空间,并将特定代码注入到该内存空间中,然后通过设置受害者进程的EPC和栈指针,进而执行特定代码以实现特定代码相应的业务功能处理,实现了特定的业务功能处理。
以下,对本申请实施例的示例性应用场景进行介绍。
本申请实施例提供的业务功能处理方法可以通过本申请实施例提供的业务功能处理装置执行,本申请实施例提供的业务功能处理装置可以是终端设备。图1是本申请实施例提供的一示例性应用场景图,如图1所示,本申请实施例提供的业务功能处理方法可以应用于终端设备中,终端设备基于MIPS体系架构,且内部程序至少包括入侵者11(invader)和受害者12(invadee),入侵者11运行后的进程为入侵者进程,受害者12运行后的进程为受害者进程。其中,入侵者11可以是在root权限下运行的程序,可以对受害者进程进行控制,例如,可以暂停(pasuse)受害者进程(invadee process)、恢复(resume)受害者进程以及停止(stop)受害者进程等,本申请实施例对入侵者和受害者的具体程序类别不做限制。本申请实施例对终端设备的具体类型不做限制,例如,终端设备可以是智能手机、个人电脑、平板电脑、可穿戴设备、车载终端、数字电视、机顶盒、蓝光播放器、游戏机、网络设备等。
图2是本申请一实施例提供的业务功能处理方法的流程示意图,该方法可以由业务功能处理装置执行,该装置可以通过软件和/或硬件的方式实现,下面以终端设备为执行主体对业务功能处理方法进行说明,如图2所示,本申请实施例提供的业务功能处理方法可以包括:
步骤S101:获取代码动态注入请求,代码动态注入请求包括与待处理的业务功能对应的特定代码的存储地址及受害者进程的标识。
本申请实施例对待处理的业务功能的具体功能不做限制,例如,待处理的业务功能可以是针对受害者进程的检测、对受害者进程的管理、对受害者进程的功能改进等,本申请实施例仅以此为例,并不限于此。不同的业务功能存在各自对应的特定代码,本申请实施例对特定代码的编写语言、具体代码内容等均不做限制。
待处理的业务功能可能通过一个受害者进程执行或可能通过多个受害者进程执行,代码动态注入请求中通过包括受害者进程的标识,以使入侵者进程将特定代码注入至该标识对应的受害者进程中。
本申请实施例对获取代码动态注入请求的具体实现方式不做限制,例如,可以通过终端设备加载特定代码的文件,以获取与待处理的业务功能对应的特定代码的存储地址,进而生成代码动态注入请求。本申请实施例仅以此为例,并不限于此。
步骤S102:根据存储地址和受害者进程的标识,触发入侵者进程在受害者进程的堆区中申请第一内存空间,并将特定代码注入到第一内存空间中。
在获取到代码动态注入请求之后,终端设备可以通过特定代码的存储地址读取特定代码,并且可以通过受害者进程的标识,确定需要申请第一内存空间的受害者进程,并触发入侵者进程在需要申请第一内存空间的受害者进程的堆区中申请第一内存空间,其中,第一内存空间可以为预设内存空间,也可以根据特定代码的大小进行设置。第一内存空间用于存储特定代码以及特定代码在运行过程中的中间数据。
为了便于对本申请实施例提供的方法的介绍,在一种可能的实施方式中,图3-图5是本申请实施例提供的动态代码注入的逻辑示意图,如图3-图5所示,受害者进程中,由高地址到低地址依次可以包括内核、栈空间、共享库、堆区、可读写数据区、指令区和共享区。终端设备根据代码动态注入请求,触发入侵者进程在受害者进程的堆区中申请第一内存空间,如图3所示;然后通过入侵者进程将特定代码注入到第一内存空间中,如图4所示。本申请实施例对将特定代码注入到第一内存空间中的实施方式不做限制。
在一种可能的实施方式中,触发入侵者进程在受害者进程的堆区中申请第一内存空间之前,还包括:
触发入侵者进程加载特定代码的文件,以获取特定代码的大小,并根据特定代码的大小,并根据特定代码的大小确定第一内存空间的大小。
本申请实施例对特定代码的文件的类型不做限制,在一种可能的实施方式中,若所述特定代码中存在绝对地址,则所述特定代码的文件为可重定位文件,其中,可重定位文件的MIPS指令集中取消全局指针(Global Pointer,GP)寄存器作为指向全局偏移量表(Global Offset Table,GOT)的指针的使用。
由于受害者进程的动态加载器只能解析提前有记录的链接单元的GOT,而无法解析动态注入的代码里的GOT,所以需要取消掉MIPS指令集中GP寄存器作为指向GOT的指针的使用。
本申请实施例对根据特定代码的大小确定第一内存空间的大小的具体实现方式不做限制,例如,通过在特定代码的大小的基础上增加预设大小,作为第一内存空间的大小,或者,特定代码的大小与预设系数的乘积,作为第一内存空间的大小,其中,预设系数大于1。
步骤S103:通过入侵者进程设置受害者进程的EPC指向第一起始地址,并设置受害者进程的栈指针指向结束地址,以根据第一起始地址和结束地址,执行特定代码以实现相应的业务功能处理。
如图5所示,在将特定代码注入到第一内存空间之后,设置受害者进程的EPC指向第一起始地址,第一起始地址为第一内存空间的起始地址,也是特定代码的起始地址;设置受害者进程的栈指针指向特定代码的结束地址,例如,可以通过第一内存空间的起始地址和特定代码的大小确定结束地址。在设置受害者进程的EPC和栈指针之后,可以通过入侵者进程恢复运行受害者进程,以使受害者进程开始执行特定代码,进而实现特定代码相应的业务功能处理。
本申请实施例中,通过根据代码动态注入请求,触发入侵者进程在受害者进程的堆区申请内存空间,并将特定代码注入到该内存空间中,然后通过设置受害者进程的EPC和栈指针,执行特定代码以实现特定代码相应的业务功能处理,实现了特定的业务功能处理。
图6是本申请另一实施例提供的业务功能处理方法的流程示意图,在上述实施例的基础上,如图6所示,上述步骤S102的一种具体实现方式为:
步骤S201:根据代码动态注入请求,触发入侵者进程生成目标指令,并将目标指令写入受害者进程中可读写数据区的第二内存空间中。
目标指令可以是二进制代码,目标指令中携带有需要申请的第一内存空间的大小,所述需要申请的第一内存空间的大小可以是预先设置的足够大的可供特定代码存储的区域,或者,所述需要申请的第一内存空间的大小也可以根据该特定代码的大小设置,通过目标指令在受害者进程的堆区中申请需要的第一内存空间。入侵者进程在生成目标指令之后,将目标指令写入受害者进程中可读写数据区的第二内存空间中,其中,第二内存空间大于或等于目标指令的大小。图7是本申请另一实施例提供的动态代码注入的逻辑示意图,如图7所示,入侵者进程将目标指令写入受害者进程中的读写数据区的第二内存空间中。
本申请实施例对将目标指令写入受害者进程中可读写数据区的第二内存空间中的具体实现方式不做限制。例如,将目标指令写入受害者进程中可读写数据区的第二内存空间中,可以是将目标指令写入受害者进程中可读写数据区中的空闲空间内,也可以将受害者进程中可读写数据区的第二内存空间中的原始数据读出,然后再将目标指令写入第二内存空间中,本申请实施例仅以此为例,并不限于此。
在一种可能的实施方式中,将目标指令写入受害者进程中可读写数据区的第二内存空间中,包括:
读出受害者进程的第二内存空间中的原始数据,以将目标指令写入第二内存空间中,并设置受害者进程的EPC指向第二内存空间中目标指令的第二起始地址。
为便于介绍,图8是本申请又一实施例提供的动态代码注入的逻辑示意图,如图8所示,将受害者进程中可读写数据区的第二内存空间中的原始数据读出,然后再将目标指令写入第二内存空间中。
在读出受害者进程的第二内存空间中的原始数据之后,可以将原始数据保存起来。在读出第二内存空间中的原始数据之后,将目标指令写入第二内存空间中,并设置受害者进程的EPC指向第二内存空间中目标指令的第二起始地址。
步骤S202:触发入侵者进程恢复运行受害者进程,以使恢复运行后的受害者进程执行第二内存空间中的目标指令,以在受害者进程的堆区中申请第一内存空间。
在将目标指令写入受害者进程中可读写数据区的第二内存空间中之后,触发入侵者进程恢复运行受害者进程,以使恢复运行后的受害者进程执行第二内存空间中的目标指令,即,在受害者进程的堆区中申请第一内存空间。
在上述实施例的基础上,在一种可能的实施方式中,恢复运行后的受害者进程执行第二内存空间中的目标指令,以在受害者进程的堆区中申请第一内存空间,可以包括:
恢复运行后的受害者进程根据第二起始地址,获取并执行第二内存空间中的目标指令,以在受害者进程的堆区中申请第一内存空间。
为了保证入侵者进程的正常运行,在一种可能的实施方式中,在触发入侵者进程恢复运行受害者进程之后,还包括:将第二内存空间中的原始数据写回第二内存空间中。
本申请实施例中,通过将第二内存空间中的原始数据写回第二内存空间中,保证了受害者进程的正常执行。
步骤S203:将特定代码注入到第一内存空间中。
在申请到第一内存空间之后,将特定代码注入到第一内存空间中,本申请实施例对此不做限制。
本申请实施例中,通过根据代码动态注入请求,触发入侵者进程生成目标指令,并将目标指令写入受害者进程的可读写数据区,进而通过受害者进程执行目标指令,以在受害者进程的堆区中申请第一内存空间,实现了对第一内存空间的申请。
可重定位文件中可能会存在绝对地址引用的符号,该绝对地址需要根据可重定位文件加载到受害者进程中的空间位置来确定。为了保证特定代码可以被正常执行。在一种可能的实施方式中,图9是本申请又一实施例提供的业务功能处理方法的流程示意图,在上述两个实施例中任一实施例的基础上,如图9所示,步骤S102中将特定代码注入到第一内存空间中之前,该方法还可以进一步包括步骤S302和步骤S303。
以在图2所示的实施例的基础上为例,本申请实施例提供的业务功能处理方法的步骤S102可以包括:
步骤S301:根据存储地址和受害者进程的标识,触发入侵者进程在受害者进程的堆区中申请第一内存空间。
此步骤可以参考步骤S102中的介绍,不再赘述。
步骤S302:触发入侵者进程加载特定代码的可重定位文件,并对可重定位文件进行符号解析,获取解析数据。
终端设备通过触发入侵者进程加载并解析特定代码的可重定位文件,可以获取解析数据,解析数据可以包括MIPS指令集和数据,解析数据中包括不同的符号类型,例如,符号类型可以包括R_MIPS_PC16、R_MIPS_26、R_MIPS_32、R_MIPS_64等,本申请实施例仅以此为例,本申请实施例对解析数据中包含的具体符号类型不做限制。
步骤S303:根据解析数据中的符号类型,确定需要重定位的解析数据,并对需要重定位的解析数据进行重定位,以获取重置后的特定代码。
针对不同类型的符号,可能存在需要重定位的解析数据,通过对需要重定位的解析数据进行重定位,可以得到重置后的特定代码。
对需要重定位的解析数据的判断,可以通过解析数据的类型实现,例如,若解析数据的符号类型为以下任意一种:R_MIPS_PC16、R_MIPS_26、R_MIPS_32、R_MIPS_64、R_MIPS_HIGHEST、R_MIPS_HIGHER、R_MIPS_HI16、R_MIPS_LO16,则判断解析数据为需要重定位的解析数据。
在对需要重定位的解析数据进行重定位时,需要获取需要重定位的解析数据对应的重定位的关联地址,关联地址可以为第一起始地址。
步骤S102中将特定代码注入到第一内存空间中的具体实现方式为:
步骤S304:将重置后的特定代码注入到第一内存空间中。
将重置后的特定代码注入到第一内存空间的实现方式可参考步骤S102中将特定代码注入到第一内存空间的实现方式,不再赘述。
通过将重置后的特定代码注入到第一内存空间中,以保证实现特定代码相应的业务功能处理。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图10是本申请一实施例提供的业务功能处理装置的结构示意图,该装置可以通过软件和/或硬件的方式实现,如图10所示,本申请实施例提供的业务功能处理装置可以包括:获取模块81和处理模块82。
其中,获取模块81,用于获取代码动态注入请求,代码动态注入请求包括与待处理的业务功能对应的特定代码的存储地址及受害者进程的标识。处理模块82,用于根据存储地址及受害者进程的标识,触发入侵者进程在受害者进程的堆区中申请第一内存空间,并将特定代码注入到第一内存空间中。处理模块82,还用于通过入侵者进程设置受害者进程的异常程序计数器EPC指向第一起始地址,并设置受害者进程的栈指针指向结束地址,以根据第一起始地址和结束地址,执行特定代码以实现相应的业务功能处理。
本实施例的业务功能处理装置可以执行上述图1所示的方法实施例,其技术原理和技术效果与上述实施例相似,此处不再赘述。
在上述装置实施例的基础上,在一种可能的实施方式中,处理模块82包括:第一处理子模块821和第二处理子模块822。其中,第一处理子模块821,用于根据代码动态注入请求,触发入侵者进程生成目标指令,并将目标指令写入受害者进程中可读写数据区的第二内存空间中,目标指令中携带有需要申请的第一内存空间的大小。第二处理子模块822,用于触发入侵者进程恢复运行受害者进程,以使恢复运行后的受害者进程执行第二内存空间中的目标指令,以在受害者进程的堆区中申请第一内存空间。
另外,在一种可能的实施方式中,第一处理子模块821,具体用于:
读出受害者进程的第二内存空间中的原始数据,以将目标指令写入第二内存空间中,并设置受害者进程的EPC指向第二内存空间中目标指令的第二起始地址。
第二处理子模块822,具体用于:恢复运行后的受害者进程根据第二起始地址,获取并执行第二内存空间中的目标指令,以在受害者进程的堆区中申请第一内存空间。
在一种可能的实施方式中,第二处理子模块822,还用于:
将第二内存空间中的原始数据写回第二内存空间中。
在一种可能的实施方式中,处理模块82,还用于:
触发入侵者进程加载特定代码的文件,以获取特定代码的大小,并根据特定代码的大小,确定第一内存空间的大小。
在一种可能的实施方式中,若特定代码中存在绝对地址,则特定代码的文件为可重定位文件,其中,可重定位文件的MIPS指令集中取消GP寄存器作为指向GOT的指针的使用。
在一种可能的实施方式中,本申请实施例提供的业务功能处理装置还包括:解析模块83和重置模块84。
解析模块83,用于触发入侵者进程加载特定代码的可重定位文件,并对可重定位文件进行符号解析,获取解析数据。
重置模块84,根据解析数据中的符号类型,确定需要重定位的解析数据,并对需要重定位的解析数据进行重定位,以获取重置后的特定代码。
可选地,处理模块82,具体用于:
将重置后的特定代码注入到第一内存空间中。
本申请所提供的装置实施例仅仅是示意性的,图10中的模块划分仅仅是一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个模块可以结合或者可以集成到另一个系统。各个模块相互之间的耦合可以是通过一些接口实现,这些接口通常是电性通信接口,但是也不排除可能是机械接口或其它的形式接口。因此,作为分离部件说明的模块可以是或者也可以不是物理上分开的,既可以位于一个地方,也可以分布到同一个或不同设备的不同位置上。
图11是本申请实施例提供的电子设备的结构示意图,如图11所示,该电子设备包括:
处理器91、存储器92、收发器93以及计算机程序;其中,收发器93实现与其他设备之间的数据传输,计算机程序被存储在存储器92中,并且被配置为由处理器91执行,计算机程序包括用于执行上述业务功能处理方法的指令,其内容及效果请参考方法实施例。
此外,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当用户设备的至少一个处理器执行该计算机执行指令时,用户设备执行上述各种可能的方法。
其中,计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于用户设备中。当然,处理器和存储介质也可以作为分立组件存在于通信设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (16)
1.一种业务功能处理方法,其特征在于,包括:
获取代码动态注入请求,所述代码动态注入请求包括与待处理的业务功能对应的特定代码的存储地址及受害者进程的标识;
根据所述存储地址和所述受害者进程的标识,触发入侵者进程在所述受害者进程的堆区中申请第一内存空间,并将所述特定代码注入到所述第一内存空间中;
通过所述入侵者进程设置所述受害者进程的异常程序计数器EPC指向第一起始地址,并设置所述受害者进程的栈指针指向结束地址,以根据所述第一起始地址和所述结束地址,执行所述特定代码以实现相应的业务功能处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述代码动态注入请求,触发入侵者进程在受害者进程的堆区中申请第一内存空间,包括:
根据所述代码动态注入请求,触发所述入侵者进程生成目标指令,并将所述目标指令写入所述受害者进程中可读写数据区的第二内存空间中,所述目标指令中携带有需要申请的所述第一内存空间的大小;
触发所述入侵者进程恢复运行所述受害者进程,以使恢复运行后的所述受害者进程执行所述第二内存空间中的所述目标指令,以在所述受害者进程的堆区中申请所述第一内存空间。
3.根据权利要求2所述的方法,其特征在于,所述将所述目标指令写入所述受害者进程中可读写数据区的第二内存空间中,包括:
读出所述受害者进程的所述第二内存空间中的原始数据,以将所述目标指令写入所述第二内存空间中,并设置所述受害者进程的EPC指向所述第二内存空间中所述目标指令的第二起始地址;
则所述恢复运行后的所述受害者进程执行所述第二内存空间中的所述目标指令,以在所述受害者进程的堆区中申请所述第一内存空间,包括:
所述恢复运行后的所述受害者进程根据所述第二起始地址,获取并执行所述第二内存空间中的所述目标指令,以在所述受害者进程的堆区中申请所述第一内存空间。
4.根据权利要求3所述的方法,其特征在于,在触发所述入侵者进程恢复运行所述受害者进程之后,还包括:
将所述第二内存空间中的所述原始数据写回所述第二内存空间中。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述触发入侵者进程在受害者进程的堆区中申请第一内存空间之前,还包括:
触发所述入侵者进程加载所述特定代码的文件,以获取所述特定代码的大小,并根据所述特定代码的大小确定所述第一内存空间的大小。
6.根据权利要求5所述的方法,其特征在于,
若所述特定代码中存在绝对地址,则所述特定代码的文件为可重定位文件,其中,所述可重定位文件的MIPS指令集中取消GP寄存器作为指向全局偏移量表GOT的指针的使用。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述将所述特定代码注入到所述第一内存空间中之前,所述方法还包括:
触发所述入侵者进程加载所述特定代码的可重定位文件,并对所述可重定位文件进行符号解析,获取解析数据;
根据所述解析数据中的符号类型,确定需要重定位的解析数据,并对所述需要重定位的解析数据进行重定位,以获取重置后的特定代码;
则所述将所述特定代码注入到所述第一内存空间中,包括:
将所述重置后的特定代码注入到所述第一内存空间中。
8.一种业务功能处理装置,其特征在于,包括:
获取模块,用于获取代码动态注入请求,所述代码动态注入请求包括与待处理的业务功能对应的特定代码的存储地址及受害者进程的标识;
处理模块,用于根据所述存储地址和所述受害者进程的标识,触发入侵者进程在所述受害者进程的堆区中申请第一内存空间,并将所述特定代码注入到所述第一内存空间中;
所述处理模块,还用于通过所述入侵者进程设置所述受害者进程的异常程序计数器EPC指向第一起始地址,并设置所述受害者进程的栈指针指向结束地址,以根据所述第一起始地址和所述结束地址,执行所述特定代码以实现相应的业务功能处理。
9.根据权利要求8所述的装置,其特征在于,所述处理模块,包括:
第一处理子模块,用于根据所述代码动态注入请求,触发所述入侵者进程生成目标指令,并将所述目标指令写入所述受害者进程中可读写数据区的第二内存空间中,所述目标指令中携带有需要申请的所述第一内存空间的大小;
第二处理子模块,用于触发所述入侵者进程恢复运行所述受害者进程,以使恢复运行后的所述受害者进程执行所述第二内存空间中的所述目标指令,以在所述受害者进程的堆区中申请所述第一内存空间。
10.根据权利要求9所述的装置,其特征在于,所述第一处理子模块,具体用于:
读出所述受害者进程的所述第二内存空间中的原始数据,以将所述目标指令写入所述第二内存空间中,并设置所述受害者进程的EPC指向所述第二内存空间中所述目标指令的第二起始地址;
则所述第二处理子模块,具体用于:所述恢复运行后的所述受害者进程根据所述第二起始地址,获取并执行所述第二内存空间中的所述目标指令,以在所述受害者进程的堆区中申请所述第一内存空间。
11.根据权利要求10所述的装置,其特征在于,所述第二处理子模块,还用于:
将所述第二内存空间中的所述原始数据写回所述第二内存空间中。
12.根据权利要求8至11任一项所述的装置,其特征在于,所述处理模块,还用于:
触发所述入侵者进程加载所述特定代码的文件,以获取所述特定代码的大小,并根据所述特定代码的大小,确定所述第一内存空间的大小。
13.根据权利要求12所述的装置,其特征在于,
若所述特定代码中存在绝对地址,则所述特定代码的文件为可重定位文件,
其中,所述可重定位文件的MIPS指令集中取消GP寄存器作为指向全局偏移量表GOT的指针的使用。
14.根据权利要求8-13任一项所述的装置,其特征在于,所述装置还包括:
解析模块,用于触发所述入侵者进程加载所述特定代码的可重定位文件,并对所述可重定位文件进行符号解析,获取解析数据;
重置模块,根据所述解析数据中的符号类型,确定需要重定位的解析数据,并对所述需要重定位的解析数据进行重定位,以获取重置后的特定代码;
所述处理模块,具体用于:
将所述重置后的特定代码注入到所述第一内存空间中。
15.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010284464.5A CN111488282B (zh) | 2020-04-13 | 2020-04-13 | 业务功能处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010284464.5A CN111488282B (zh) | 2020-04-13 | 2020-04-13 | 业务功能处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111488282A true CN111488282A (zh) | 2020-08-04 |
CN111488282B CN111488282B (zh) | 2023-11-07 |
Family
ID=71791685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010284464.5A Active CN111488282B (zh) | 2020-04-13 | 2020-04-13 | 业务功能处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111488282B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6698016B1 (en) * | 2000-08-29 | 2004-02-24 | Microsoft Corporation | Method for injecting code into another process |
CN101470619A (zh) * | 2007-12-29 | 2009-07-01 | 安凯(广州)软件技术有限公司 | 一种基于微核操作系统的应用程序动态加载方法 |
CN101763273A (zh) * | 2008-12-26 | 2010-06-30 | 上海闻泰电子科技有限公司 | 一种在嵌入式系统的扩展存储器中动态装入代码的方法 |
CN101984409A (zh) * | 2010-11-10 | 2011-03-09 | 南京南瑞继保电气有限公司 | 一种用于Linux系统测试代码注入的方法 |
CN104137062A (zh) * | 2012-02-09 | 2014-11-05 | 微软公司 | 将代码动态注入到运行中的进程 |
-
2020
- 2020-04-13 CN CN202010284464.5A patent/CN111488282B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6698016B1 (en) * | 2000-08-29 | 2004-02-24 | Microsoft Corporation | Method for injecting code into another process |
CN101470619A (zh) * | 2007-12-29 | 2009-07-01 | 安凯(广州)软件技术有限公司 | 一种基于微核操作系统的应用程序动态加载方法 |
CN101763273A (zh) * | 2008-12-26 | 2010-06-30 | 上海闻泰电子科技有限公司 | 一种在嵌入式系统的扩展存储器中动态装入代码的方法 |
CN101984409A (zh) * | 2010-11-10 | 2011-03-09 | 南京南瑞继保电气有限公司 | 一种用于Linux系统测试代码注入的方法 |
CN104137062A (zh) * | 2012-02-09 | 2014-11-05 | 微软公司 | 将代码动态注入到运行中的进程 |
Also Published As
Publication number | Publication date |
---|---|
CN111488282B (zh) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018227822A1 (zh) | 异常堆栈信息获取方法、装置及计算机可读存储介质 | |
US10176327B2 (en) | Method and device for preventing application in an operating system from being uninstalled | |
CN104049986A (zh) | 插件加载方法及装置 | |
CN107908444B (zh) | 终端应用的挂钩方法及装置 | |
CN107025145B (zh) | 错误码解析方法及装置 | |
US20170090950A1 (en) | Information processing device, information processing method, and computer readable storage medium | |
CN102713845A (zh) | 一种启动无线手持设备的方法及无线手持设备 | |
CN104268472A (zh) | 还原被第三方动态库修改函数地址的方法和装置 | |
CN106997313B (zh) | 一种应用程序的信号处理方法、系统及终端设备 | |
CN108920159B (zh) | 一种安全升级方法、装置及电子设备 | |
US8726101B2 (en) | Apparatus and method for tracing memory access information | |
US10503430B2 (en) | Method and device for clearing data and electronic device | |
CN111338831B (zh) | 一种多线程运行性能的处理方法、装置、介质和电子设备 | |
CN116126581B (zh) | 内存故障处理方法、装置、系统、设备及存储介质 | |
CN109324838B (zh) | 单片机程序的执行方法、执行装置及终端 | |
CN111488282A (zh) | 业务功能处理方法、装置、电子设备及存储介质 | |
US20170169044A1 (en) | Property retrieval apparatus, method and system | |
CN108228273B (zh) | 一种执行可执行文件的方法及设备 | |
KR101529713B1 (ko) | 비정상 전원절환에 대한 안드로이드 단말의 안정성 강화 방법 및 이를 위한 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체 | |
CN111026609B (zh) | 一种信息审计方法、系统、设备及计算机可读存储介质 | |
US20170280123A1 (en) | Method and device for detecting a slice time length in a media play list | |
CN108133149B (zh) | 一种数据保护方法、装置及电子设备 | |
CN110262856B (zh) | 一种应用程序数据采集方法、装置、终端及存储介质 | |
CN109344575B (zh) | Lua脚本文件处理方法、装置及计算设备 | |
CN108875372B (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 | ||
CB02 | Change of applicant information |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |