CN111124444A - 代码注入的方法及其装置、计算机程序产品、存储介质 - Google Patents
代码注入的方法及其装置、计算机程序产品、存储介质 Download PDFInfo
- Publication number
- CN111124444A CN111124444A CN201811295814.7A CN201811295814A CN111124444A CN 111124444 A CN111124444 A CN 111124444A CN 201811295814 A CN201811295814 A CN 201811295814A CN 111124444 A CN111124444 A CN 111124444A
- Authority
- CN
- China
- Prior art keywords
- program
- code
- injected
- module
- injection
- 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
- 238000002347 injection Methods 0.000 title claims abstract description 112
- 239000007924 injection Substances 0.000 title claims abstract description 112
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000004590 computer program Methods 0.000 title claims abstract description 15
- 230000006870 function Effects 0.000 claims description 47
- 238000012544 monitoring process Methods 0.000 claims description 7
- 238000012986 modification Methods 0.000 claims description 6
- 230000004048 modification Effects 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 18
- 238000011161 development Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000002035 prolonged effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 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
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)
- Stored Programmes (AREA)
Abstract
本发明提出一种代码注入的方法及其装置、计算机程序产品、存储介质,其中,方法包括:在需要进行代码注入的程序中添加待注入代码,在程序中获取需要进行代码注入的程序模块,在程序模块中获取程序模块的初始化函数,在初始化函数中注入待注入代码所对应的启动代码。由此,本发明实施例实现了代码的自动化注入,提高了效率,节省了人力,而且保证了代码注入的准确度,解决了现有技术中效率低下,容易出错的技术问题。
Description
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种代码注入的方法及其装置、计算机程序产品、存储介质。
背景技术
在现有软件程序中注入代码以实现新的功能,是软件升级中不可回避的一项工作,随着软件升级周期的缩短,如何在现有软件程序中快速、准确注入代码成为一项亟需解决的技术问题。
相关技术中,通过人工手动注入代码,不仅效率低下,浪费人力,而且容易出现差错,需要通过反复测试检验代码注入的准确性,延长了软件的更新周期。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种代码注入的方法,以实现代码的自动化注入,提高效率,节省人力,保证代码注入的准确度
本发明的第二个目的在于提出一种代码注入的装置。
本发明的第三个目的在于提出一种计算机程序产品。
本发明的第四个目的在于提出一种非临时性计算机可读存储介质。
为达上述目的,本发明第一方面实施例提出了一种代码注入的方法,包括:在需要进行代码注入的程序中添加待注入代码,在程序中获取需要进行代码注入的程序模块,在程序模块中获取程序模块的初始化函数,在初始化函数中注入待注入代码所对应的启动代码。
和现有技术相比,通过在需要进行代码注入的程序中添加待注入代码,精确寻找到需要进行代码注入的程序模块的初始化函数,然后在初始化函数中注入待注入代码所对应的启动代码。因此通过本发明实施例实现了代码的自动化注入,提高了效率,节省了人力,而且保证了代码注入的准确度。
另外,本发明实施例的代码注入的方法,还具有如下附加的技术特征:
可选地,所述待注入代码在构建工具中进行注入,所述在需要进行代码注入的程序中添加待注入代码,包括:监控所述构建工具的生命周期回调函数;在所述生命周期回调函数中判断所述程序中是否已经添加所述待注入代码;若所述程序中没有添加所述待注入代码,则在所述程序中添加所述待注入代码。
可选地,所述在所述程序中获取需要进行代码注入的程序模块,包括:获取所述程序的信息描述文件;对所述程序的信息描述文件进行解析,以获取所述需要进行代码注入的程序模块的名称。
可选地,在所述对所述程序的信息描述文件进行解析,以获取所述需要进行代码注入的程序模块之后,还包括:对所述需要进行代码注入的程序模块的名称和所述需要进行代码注入的程序进行名称匹配,以获得所述需要进行代码注入的程序模块在所述需要进行代码注入的程序中的位置。
可选地,在所述获取所述程序的信息描述文件之后,还包括:判断所述程序的信息描述文件中是否已经声明过所述待注入代码所必须的权限;若所述程序的信息描述文件中没有声明过所述待注入代码所必须的权限,则修改所述程序的信息描述文件,以添加所述待注入代码所必须的权限。
可选地,所述待注入代码所必须的权限,包括:网络连接、获取当前位置、存储器读写中的一种或多种。
本发明第二方面实施例提出了一种代码注入的装置,包括:添加模块,用于在需要进行代码注入的程序中添加待注入代码;第一获取模块,用于在所述程序中获取需要进行代码注入的程序模块;第二获取模块,用于在所述程序模块中获取所述程序模块的初始化函数;注入模块,用于在所述初始化函数中注入所述待注入代码所对应的启动代码。
另外,本发明实施例的代码注入的装置,还具有如下附加的技术特征:
可选地,所述添加模块包括:监控单元,用于监控所述构建工具的生命周期回调函数;判断单元,用于在所述生命周期回调函数中判断所述程序中是否已经添加所述待注入代码;添加单元,用于当所述判断单元确定所述程序中没有添加所述待注入代码时,在所述程序中添加所述待注入代码。
可选地,所述第一获取模块包括:第一获取单元,用于获取所述程序的信息描述文件;解析单元,用于对所述程序的信息描述文件进行解析,以获取所述需要进行代码注入的程序模块的名称。
可选地,所述装置还包括:匹配模块,用于对所述需要进行代码注入的程序模块的名称和所述需要进行代码注入的程序进行名称匹配,以获得所述需要进行代码注入的程序模块在所述需要进行代码注入的程序中的位置。
可选地,所述装置还包括:判断模块,用于判断所述程序的信息描述文件中是否已经声明过所述待注入代码所必须的权限;修改模块,用于当所述判断模块确定所述程序的信息描述文件中没有声明过所述待注入代码所必须的权限时,修改所述程序的信息描述文件,以添加所述待注入代码所必须的权限。
本发明第三方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时实现如前述方法实施例所述的代码注入的方法。
本发明第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述方法实施例所述的代码注入的方法。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例所提供的一种代码注入的方法的流程示意图;
图2为本发明实施例所提供的另一种代码注入的方法的流程示意图;
图3为本发明实施例所提供的又一种代码注入的方法的流程示意图;
图4为本发明实施例所提供的安卓APP代码注入的整体方案的示意图;
图5为本发明实施例所提供的自定义插件开发过程的示意图;
图6为本发明实施例所提供的Gradle的生命周期的示意图;
图7为本发明实施例所提供的自动添加待注入代码的一种实现方式的代码展示图;
图8为本发明实施例所提供的自动修改信息描述文件的一种实现方式的代码展示图;
图9为本发明实施例所提供的设置添加权限的一种实现方式的代码展示图;
图10为本发明实施例所提供的在信息描述文件中添加权限的一种实现方式的代码展示图;
图11为本发明实施例所提供的解析信息描述文件获取类名的一种实现方式的代码展示图;
图12为本发明实施例所提供的解析信息描述文件获取类名的另一种实现方式的代码展示图;
图13为本发明实施例所提供的实现代码注入的流程示意图;
图14为本发明实施例所提供的在初始化函数中注入代码的一种实现方式的代码展示图;
图15为本发明实施例所提供的一种代码注入的装置的结构示意图;
图16为本发明实施例所提供的一种代码注入的装置的一种可能的实现方式的结构示意图;
图17为本发明实施例所提供的另一种代码注入的装置的结构示意图;
图18为本发明实施例所提供的又一种代码注入的装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的代码注入的方法及其装置、计算机程序产品、存储介质。
基于上述现有技术的描述可以知道,相关技术中,通过人工手动注入代码,不仅效率低下,浪费人力,而且容易出现差错,需要通过反复测试检验代码注入的准确性,延长了软件的更新周期。因此通过现有技术注入代码,无法快速、准确地完成代码注入工作。
针对这一问题,本发明实施例提供了一种代码注入的方法,通过在需要进行代码注入的程序中添加待注入代码,精确寻找到需要进行代码注入的程序模块的初始化函数,然后在初始化函数中注入待注入代码所对应的启动代码,提高了代码注入的效率和准确度。图1为本发明实施例所提供的一种代码注入的方法的流程示意图。如图1所示,该方法包括以下步骤:
S101,在需要进行代码注入的程序中添加待注入代码。
具体地,在程序中添加待注入代码的方式有很多。一种可能的实现方式是,将待注入代码直接复制到程序中,作为程序的一个新的程序模块。另一种可能的实现方式是,将待注入代码作为一个新文档添加至程序所在的目录下,以方便程序调用。
进一步地,为了确认已经将待注入代码添加至需要进行代码注入的程序中,一种可能的实现方式是,待注入代码在构建工具中进行注入,监控构建工具的生命周期回调函数,在生命周期回调函数中判断程序中是否已经添加待注入代码,若程序中没有添加待注入代码,则在程序中添加待注入代码。其中,构建工具是用来编译、打包程序的工具,比如Android Studio中提供的Gradle。
S102,在程序中获取需要进行代码注入的程序模块。
应当理解,程序模块是实现相对独立功能的逻辑单元,比如在Java中一般使用类作为程序模块,C语言中一般使用函数作为程序模块。
S103,在程序模块中获取程序模块的初始化函数。
其中,初始化函数是程序模块的入口,当程序模块被调用时,首先运行初始化函数对程序模块中的参数和函数进行定义或者声明,因此只要程序模块被调用,初始化函数必然要被执行。
S104,在初始化函数中注入待注入代码所对应的启动代码。
其中,待注入代码所对应的启动代码是用来调用待注入代码的代码,当启动代码被执行时,跳转执行待注入代码。
综上所述,本发明实施例的一种代码注入的方法,在需要进行代码注入的程序中添加待注入代码,在程序中获取需要进行代码注入的程序模块,在程序模块中获取程序模块的初始化函数,在初始化函数中注入待注入代码所对应的启动代码。由此,本发明实施例实现了代码的自动化注入,提高了效率,节省了人力,而且保证了代码注入的准确度。
为了让本发明实施例所提出的代码注入的方法能够准确地在程序中获取需要进行代码注入的程序模块的名称,本发明实施例还提出了另一种代码注入的方法,图2为本发明实施例所提供的另一种代码注入的方法的流程示意图,基于图1所示的方法流程,如图2所示,S102在程序中获取需要进行代码注入的程序模块,包括:
S201,获取程序的信息描述文件。
其中,信息描述文件中记录了程序的属性、程序模块等主要信息。
S202,对程序的信息描述文件进行解析,以获取需要进行代码注入的程序模块的名称。
具体地,信息描述文件按照预设的格式,逐项记录程序的主要信息,对信息描述文件进行解析,就可根据预设的格式,在信息描述文件的相应位置获取需要进行代码注入的程序模块的名称。
进一步地,为了确定程序模块在程序中的位置,一种可能的实现方式是,对需要进行代码注入的程序模块的名称和需要进行代码注入的程序进行名称匹配,以获得需要进行代码注入的程序模块在需要进行代码注入的程序中的位置。
从而,实现了准确地在程序中获取需要进行代码注入的程序模块的名称。
为了让本发明实施例所提出的代码注入的方法所注入的代码能够获取所必须的权限,本发明实施例还提出了又一种代码注入的方法,图3为本发明实施例所提供的又一种代码注入的方法的流程示意图,基于图2所示的方法流程,如图3所示,在S201获取程序的信息描述文件之后,还包括:
S301,判断程序的信息描述文件中是否已经声明过待注入代码所必须的权限。
其中,待注入代码所必须的权限与其实现的具体功能有关,因此,对于不同的待注入代码,对应的所必须的权限不同。一种可能的情况是,待注入代码所必须的权限,包括:网络连接、获取当前位置、存储器读写中的一种或多种。
需要特别说明的是,程序实现功能所必须的权限都需要在信息描述文件中进行声明,因此,注入代码之后,程序实现的功能增加,需要对新增功能所必须的权限是否已经声明进行判断。
S302,若程序的信息描述文件中没有声明过待注入代码所必须的权限,则修改程序的信息描述文件,以添加待注入代码所必须的权限。
具体地,修改程序的信息描述文件可以在原有的信息描述文件中添加内容,也可以生成新的信息描述文件替换原有的信息描述文件。
从而,实现了添加注入代码所必须的权限。
为了更加清楚地说明本发明实施例所提出的代码注入的方法,下面以安卓APP的代码注入为例进行说明,安卓APP代码注入的整体方案如图4所示,开发者通过配置、编译、打包等步骤,对已有的安卓APP进行代码注入,得到新的APK。
Android Studio是谷歌公司提供的一款安卓APP的集成开发软件,基于该软件可以开发一个自定义的插件实现代码的自动注入,插件的开发过程如图5示。插件发布后,用户可在Android Studio中通过简单配置引入该插件。
Android Studio提供的构建工具是Gradle,Gradle的生命周期如图6所示,分为初始化阶段、配置阶段、执行阶段,在配置阶段的生命周期回调函数中监测安卓APP的开发包中是否已经添加了待注入的代码,如果没有则自动添加待注入代码,具体可以通过如图7示的代码实现。
安卓APP的信息描述文件是AndroidManifest.xml文件。
通过Groovy操作xml,在AndroidManifest.xml文件中自动添加代码所必须的权限。具体地,通过如图8所示的代码实现对AndroidManifest.xml文件的自动修改,设置添加权限的代码如图9所示,通过Groovy操作xml,在AndroidManifest.xml文件中自动添加权限,具体代码如图10所示。
如图11和图12所示,通过Groovy解析AndroidManifest.xml,获取Application类名和Activity类名,再在具体类中实现代码注入,实现代码注入的流程如图13所示,通过字节码处理工具对该具体类进行修改。具体地,在Gradle中自定义Transform过程,通过Javassist对类中的onCreate函数中进行代码注入,完成APP编译完成前的修改,具体实现代码如图14所示。
为了实现上述实施例,本发明实施例还提出一种代码注入的装置,图15为本发明实施例所提供的一种代码注入的装置的结构示意图,如图15所示,该装置包括:添加模块410,第一获取模块420,第二获取模块430,注入模块440。
添加模块410,用于在需要进行代码注入的程序中添加待注入代码。
第一获取模块420,用于在程序中获取需要进行代码注入的程序模块。
第二获取模块430,用于在程序模块中获取程序模块的初始化函数。
注入模块440,用于在初始化函数中注入待注入代码所对应的启动代码。
进一步地,为了确认已经将待注入代码添加至需要进行代码注入的程序中,一种可能的实现方式是,如图16所述,添加模块410包括:监控单元411,用于监控构建工具的生命周期回调函数,判断单元412,用于在生命周期回调函数中判断程序中是否已经添加待注入代码,添加单元413,用于当判断单元确定程序中没有添加待注入代码时,在程序中添加待注入代码。
需要说明的是,前述对代码注入的方法实施例的解释说明也适用于该实施例的代码注入的装置,此处不再赘述。
综上所述,本发明实施例的一种代码注入的装置,在需要进行代码注入的程序中添加待注入代码,在程序中获取需要进行代码注入的程序模块,在程序模块中获取程序模块的初始化函数,在初始化函数中注入待注入代码所对应的启动代码。由此,本发明实施例实现了代码的自动化注入,提高了效率,节省了人力,而且保证了代码注入的准确度。
为了实现上述实施例,本发明实施例还提出另一种代码注入的装置,图17为本发明实施例所提供的另一种代码注入的装置的结构示意图,如图17所示,基于图15所示的装置结构,第一获取模块420包括:第一获取单元421,解析单元422。
第一获取单元421,用于获取程序的信息描述文件。
解析单元422,用于对程序的信息描述文件进行解析,以获取需要进行代码注入的程序模块的名称。
进一步地,为了确定程序模块在程序中的位置,一种可能的实现方式是,该装置还包括:匹配模块450,用于对需要进行代码注入的程序模块的名称和需要进行代码注入的程序进行名称匹配,以获得需要进行代码注入的程序模块在需要进行代码注入的程序中的位置。
需要说明的是,前述对代码注入的方法实施例的解释说明也适用于该实施例的代码注入的装置,此处不再赘述。
从而,实现了准确地在程序中获取需要进行代码注入的程序模块的名称。
为了实现上述实施例,本发明实施例还提出又一种代码注入的装置,图18为本发明实施例所提供的又一种代码注入的装置的结构示意图,如图18所示,基于图17所示的装置结构,该装置还包括:判断模块460,修改模块470。
判断模块460,用于判断程序的信息描述文件中是否已经声明过待注入代码所必须的权限。
修改模块470,用于当判断模块确定程序的信息描述文件中没有声明过待注入代码所必须的权限时,修改程序的信息描述文件,以添加待注入代码所必须的权限。
需要说明的是,前述对代码注入的方法实施例的解释说明也适用于该实施例的代码注入的装置,此处不再赘述。
从而,实现了添加注入代码所必须的权限。
为了实现上述实施例,本发明实施例还提出一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时实现如前述方法实施例所述的代码注入的方法。
为了实现上述实施例,本发明实施例还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述方法实施例所述的代码注入的方法。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (13)
1.一种代码注入的方法,其特征在于,包括:
在需要进行代码注入的程序中添加待注入代码;
在所述程序中获取需要进行代码注入的程序模块;
在所述程序模块中获取所述程序模块的初始化函数;
在所述初始化函数中注入所述待注入代码所对应的启动代码。
2.如权利要求1所述的方法,其特征在于,所述待注入代码在构建工具中进行注入,所述在需要进行代码注入的程序中添加待注入代码,包括:
监控所述构建工具的生命周期回调函数;
在所述生命周期回调函数中判断所述程序中是否已经添加所述待注入代码;
若所述程序中没有添加所述待注入代码,则在所述程序中添加所述待注入代码。
3.如权利要求1所述的方法,其特征在于,所述在所述程序中获取需要进行代码注入的程序模块,包括:
获取所述程序的信息描述文件;
对所述程序的信息描述文件进行解析,以获取所述需要进行代码注入的程序模块的名称。
4.如权利要求3所述的方法,其特征在于,在所述对所述程序的信息描述文件进行解析,以获取所述需要进行代码注入的程序模块之后,还包括:
对所述需要进行代码注入的程序模块的名称和所述需要进行代码注入的程序进行名称匹配,以获得所述需要进行代码注入的程序模块在所述需要进行代码注入的程序中的位置。
5.如权利要求3所述的方法,其特征在于,在所述获取所述程序的信息描述文件之后,还包括:
判断所述程序的信息描述文件中是否已经声明过所述待注入代码所必须的权限;
若所述程序的信息描述文件中没有声明过所述待注入代码所必须的权限,则修改所述程序的信息描述文件,以添加所述待注入代码所必须的权限。
6.如权利要求5所述的方法,其特征在于,所述待注入代码所必须的权限,包括:网络连接、获取当前位置、存储器读写中的一种或多种。
7.一种代码注入的装置,其特征在于,包括:
添加模块,用于在需要进行代码注入的程序中添加待注入代码;
第一获取模块,用于在所述程序中获取需要进行代码注入的程序模块;
第二获取模块,用于在所述程序模块中获取所述程序模块的初始化函数;
注入模块,用于在所述初始化函数中注入所述待注入代码所对应的启动代码。
8.如权利要求7所述的装置,其特征在于,所述添加模块包括:
监控单元,用于监控所述构建工具的生命周期回调函数;
判断单元,用于在所述生命周期回调函数中判断所述程序中是否已经添加所述待注入代码;
添加单元,用于当所述判断单元确定所述程序中没有添加所述待注入代码时,在所述程序中添加所述待注入代码。
9.如权利要求7所述的装置,其特征在于,所述第一获取模块包括:
第一获取单元,用于获取所述程序的信息描述文件;
解析单元,用于对所述程序的信息描述文件进行解析,以获取所述需要进行代码注入的程序模块的名称。
10.如权利要求9所述的装置,其特征在于,所述装置还包括:
匹配模块,用于对所述需要进行代码注入的程序模块的名称和所述需要进行代码注入的程序进行名称匹配,以获得所述需要进行代码注入的程序模块在所述需要进行代码注入的程序中的位置。
11.如权利要求9所述的装置,其特征在于,所述装置还包括:
判断模块,用于判断所述程序的信息描述文件中是否已经声明过所述待注入代码所必须的权限;
修改模块,用于当所述判断模块确定所述程序的信息描述文件中没有声明过所述待注入代码所必须的权限时,修改所述程序的信息描述文件,以添加所述待注入代码所必须的权限。
12.一种计算机程序产品,其特征在于,当所述计算机程序产品中的指令处理器执行时实现如权利要求1-6中任一所述的代码注入的方法。
13.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6中任一所述的代码注入的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811295814.7A CN111124444B (zh) | 2018-11-01 | 2018-11-01 | 代码注入的方法及其装置、计算机程序产品、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811295814.7A CN111124444B (zh) | 2018-11-01 | 2018-11-01 | 代码注入的方法及其装置、计算机程序产品、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124444A true CN111124444A (zh) | 2020-05-08 |
CN111124444B CN111124444B (zh) | 2023-12-19 |
Family
ID=70495060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811295814.7A Active CN111124444B (zh) | 2018-11-01 | 2018-11-01 | 代码注入的方法及其装置、计算机程序产品、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124444B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782261A (zh) * | 2020-06-29 | 2020-10-16 | 百度在线网络技术(北京)有限公司 | 软件配置方法、装置、电子设备以及存储介质 |
CN113254057A (zh) * | 2021-04-30 | 2021-08-13 | 南京爱福路汽车科技有限公司 | 一种基于代码注入增强数据库管理平台的方法 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021789A (zh) * | 2007-03-23 | 2007-08-22 | 陈伟 | 在应用软件系统中新增信息流管理功能的实现方法 |
US20090089773A1 (en) * | 2007-10-02 | 2009-04-02 | Huestis Jonathan M | System and method of delivering software product updates via a response file |
US8607208B1 (en) * | 2008-10-01 | 2013-12-10 | Oracle International Corporation | System and methods for object code hot updates |
CN103885807A (zh) * | 2014-04-03 | 2014-06-25 | 四川九成信息技术有限公司 | 设备程序更新方法 |
CN103942066A (zh) * | 2014-03-25 | 2014-07-23 | 中国科学院长春光学精密机械与物理研究所 | 一种星载嵌入式软件模块在轨更新方法 |
CN105528231A (zh) * | 2016-01-21 | 2016-04-27 | 华中科技大学 | 一种基于中间辅助函数的软件动态升级方法及系统 |
US20160196127A1 (en) * | 2015-01-01 | 2016-07-07 | Bank Of America Corporation | Automated code deployment system |
WO2016201853A1 (zh) * | 2015-06-15 | 2016-12-22 | 中兴通讯股份有限公司 | 加解密功能的实现方法、装置及服务器 |
CN106557305A (zh) * | 2015-09-25 | 2017-04-05 | 株式会社理光 | 一种自动回放Android程序的方法及系统 |
CN107220074A (zh) * | 2016-03-21 | 2017-09-29 | 阿里巴巴集团控股有限公司 | 对支撑层软件功能的访问、升级方法及装置 |
US20170344344A1 (en) * | 2016-05-25 | 2017-11-30 | Smartshift Technologies, Inc. | Systems and methods for automated retrofitting of customized code objects |
CN107817972A (zh) * | 2017-11-03 | 2018-03-20 | 泰康保险集团股份有限公司 | 缓存代码处理方法、装置、存储介质及电子设备 |
CN108196873A (zh) * | 2018-01-30 | 2018-06-22 | 山东科技大学 | 电力系统嵌入式软件远程动态升级方法和系统 |
US10089461B1 (en) * | 2013-09-30 | 2018-10-02 | Fireeye, Inc. | Page replacement code injection |
CN108717365A (zh) * | 2018-06-11 | 2018-10-30 | 广州酷狗计算机科技有限公司 | 在应用程序中执行功能的方法和装置 |
-
2018
- 2018-11-01 CN CN201811295814.7A patent/CN111124444B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021789A (zh) * | 2007-03-23 | 2007-08-22 | 陈伟 | 在应用软件系统中新增信息流管理功能的实现方法 |
US20090089773A1 (en) * | 2007-10-02 | 2009-04-02 | Huestis Jonathan M | System and method of delivering software product updates via a response file |
US8607208B1 (en) * | 2008-10-01 | 2013-12-10 | Oracle International Corporation | System and methods for object code hot updates |
US10089461B1 (en) * | 2013-09-30 | 2018-10-02 | Fireeye, Inc. | Page replacement code injection |
CN103942066A (zh) * | 2014-03-25 | 2014-07-23 | 中国科学院长春光学精密机械与物理研究所 | 一种星载嵌入式软件模块在轨更新方法 |
CN103885807A (zh) * | 2014-04-03 | 2014-06-25 | 四川九成信息技术有限公司 | 设备程序更新方法 |
US20160196127A1 (en) * | 2015-01-01 | 2016-07-07 | Bank Of America Corporation | Automated code deployment system |
WO2016201853A1 (zh) * | 2015-06-15 | 2016-12-22 | 中兴通讯股份有限公司 | 加解密功能的实现方法、装置及服务器 |
CN106557305A (zh) * | 2015-09-25 | 2017-04-05 | 株式会社理光 | 一种自动回放Android程序的方法及系统 |
CN105528231A (zh) * | 2016-01-21 | 2016-04-27 | 华中科技大学 | 一种基于中间辅助函数的软件动态升级方法及系统 |
CN107220074A (zh) * | 2016-03-21 | 2017-09-29 | 阿里巴巴集团控股有限公司 | 对支撑层软件功能的访问、升级方法及装置 |
US20170344344A1 (en) * | 2016-05-25 | 2017-11-30 | Smartshift Technologies, Inc. | Systems and methods for automated retrofitting of customized code objects |
CN107817972A (zh) * | 2017-11-03 | 2018-03-20 | 泰康保险集团股份有限公司 | 缓存代码处理方法、装置、存储介质及电子设备 |
CN108196873A (zh) * | 2018-01-30 | 2018-06-22 | 山东科技大学 | 电力系统嵌入式软件远程动态升级方法和系统 |
CN108717365A (zh) * | 2018-06-11 | 2018-10-30 | 广州酷狗计算机科技有限公司 | 在应用程序中执行功能的方法和装置 |
Non-Patent Citations (4)
Title |
---|
CHUANAO8829: "Android Gradle高级用法,动态编译技术:Plugin Transform Javassist操作Class文件", pages 2 - 19, Retrieved from the Internet <URL:https://blog.csdn.net/chuanao8829/article/details/100751196> * |
TSUNEO NAKANISHI 等: "A software update scheme by airwaves for automotive equipment", 《2013 INTERNATIONAL CONFERENCE ON INFORMATICS, ELECTRONICS AND VISION (ICIEV)》, pages 1 - 6 * |
严忠林: "Java重定义接口实现代码的自动注入", 《微型电脑应用》, vol. 29, no. 8, pages 62 - 64 * |
孙海洋: "Android 字节码动态分析分布式框架", 《中国优秀硕士学位论文全文数据库 信息科技辑》, pages 138 - 5226 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782261A (zh) * | 2020-06-29 | 2020-10-16 | 百度在线网络技术(北京)有限公司 | 软件配置方法、装置、电子设备以及存储介质 |
CN111782261B (zh) * | 2020-06-29 | 2024-05-28 | 百度在线网络技术(北京)有限公司 | 软件配置方法、装置、电子设备以及存储介质 |
CN113254057A (zh) * | 2021-04-30 | 2021-08-13 | 南京爱福路汽车科技有限公司 | 一种基于代码注入增强数据库管理平台的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111124444B (zh) | 2023-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3265916B1 (en) | A method for identifying a cause for a failure of a test | |
CN110990019B (zh) | 一种Java类分析方法、装置、存储介质及电子设备 | |
US9086899B2 (en) | Loading and debugging method and debugging system thereof | |
CN105446712B (zh) | 一种应用程序缺陷修补方法及装置 | |
US20150040112A1 (en) | Enabling Interoperability Between Software Applications By Utilizing Partial Binaries | |
JP5213671B2 (ja) | テストケースの選択方法及び選択システム | |
CN110543423B (zh) | 一种软件依赖包能力检测方法、系统及介质 | |
CN107220074B (zh) | 对支撑层软件功能的访问、升级方法及装置 | |
CN111176722B (zh) | 第三方库的文件版本检测方法、装置及存储介质 | |
US20120030654A1 (en) | Apparatus and method for automated testing of software program | |
CN107643893B (zh) | 一种程序检测方法及装置 | |
CN109933326B (zh) | 改写代码的编译方法、装置及相应终端 | |
CN111124444A (zh) | 代码注入的方法及其装置、计算机程序产品、存储介质 | |
CN108650507B (zh) | 终端设备的测试方法、装置、终端设备和存储介质 | |
CN111290740B (zh) | 应用程序的开发方法、装置、计算机设备和存储介质 | |
CN110750280A (zh) | 一种基于Android平台的应用升级方法及系统、存储介质 | |
CN112181858A (zh) | Java软件项目依赖冲突语义一致性的自动化检测方法 | |
CN111679852A (zh) | 一种冲突依赖库的检测方法及装置 | |
CN105095074A (zh) | 配置文件的升级测试方法和装置 | |
CN112052037A (zh) | 一种应用软件开发方法、装置、设备及介质 | |
EP2885712B1 (en) | Imperative attribution for elements in managed runtimes | |
US20160055074A1 (en) | Program analysis device, program analysis method, and program analysis program | |
CN108121561B (zh) | 应用程序修复方法、装置和系统 | |
CN110928760A (zh) | 一种嵌入式系统中的单元测试方法与装置 | |
CN112783736A (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 |