CN109725923A - 一种软件轻量更新方法、装置及设备 - Google Patents
一种软件轻量更新方法、装置及设备 Download PDFInfo
- Publication number
- CN109725923A CN109725923A CN201811607601.3A CN201811607601A CN109725923A CN 109725923 A CN109725923 A CN 109725923A CN 201811607601 A CN201811607601 A CN 201811607601A CN 109725923 A CN109725923 A CN 109725923A
- Authority
- CN
- China
- Prior art keywords
- function
- updated
- script
- determining
- program
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000013515 script Methods 0.000 claims abstract description 130
- 238000012544 monitoring process Methods 0.000 claims abstract description 32
- 230000006870 function Effects 0.000 claims description 231
- 238000001914 filtration Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 18
- 230000007246 mechanism Effects 0.000 description 6
- 238000009434 installation Methods 0.000 description 5
- 230000008439 repair process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种软件轻量更新方法、装置及设备。方案包括:客户端获取服务器发送的针对待更新程序的更新指令;所述更新指令用于指示所述客户端对所述待更新程序进行更新;从所述服务器中下载所述更新指令对应的脚本;从所述脚本中确定待更新函数在所述待更新程序中对应的地址信息;监控预设事件是否发生;得到监控结果;当所述监控结果表示所述预设事件发生时,根据所述地址信息将所述待更新函数替换为所述脚本中的目标函数。通过上述方法,实现自动化补丁以及APP功能动态轻量更新。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种软件轻量更新方法、装置及设备。
背景技术
随着互联网技术的发展,各种APP应用已经非常普及,用户端系统或者各种APP版本更新速度较快,在使用过程中一个重要的问题就是版本的更新。
在进行版本更新时,移动端会频繁收到升级提示,极大程度影响用户的使用体验。在更新过程中,需要将新的版本完全替换旧的版本,用户在更新过程中,无法对特定的场景进行修改和更新,导致更新过程持续时间较长。在移动端和PC端,当一个产品发布后,后续的产品功能更新、BUG修复等,都需要更新替换功能模块或是重新下载整个安装文件,有些安装包的体积较大,更新过程较长且由于平台、系统、网络和手机硬件的限制,每次对APP的升级和BUG修改都进行全量更新时,速度较慢,无法实现动态轻量更新。
发明内容
有鉴于此,本申请实施例提供了一种软件轻量更新方法、装置及设备,用于实现动态补丁以及APP功能自动化轻量级更新。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种软件轻量更新方法,包括:
客户端获取服务器发送的针对待更新程序的更新指令;所述更新指令用于指示所述客户端对所述待更新程序进行更新;
从所述服务器中下载所述更新指令对应的脚本;
从所述脚本中确定待更新函数在所述待更新程序中对应的地址信息;
监控预设事件是否发生;得到监控结果;
当所述监控结果表示所述预设事件发生时,根据所述地址信息将所述待更新函数替换为所述脚本中的目标函数。
可选的,所述从所述脚本中确定待更新函数在所述待更新程序中对应的地址信息,具体包括:
从所述脚本中确定HOOK模板;所述脚本为lua脚本;
根据所述HOOK模板确定所述待更新函数在所述待更新程序中的地址信息。
可选的,所述根据所述HOOK模板确定所述待更新函数在所述待更新程序中的地址信息,具体包括:
从所述HOOK模板中确定stub数据结构;
从所述stub数据结构中获取所述待更新函数指针数据;
根据所述待更新函数指针数据确定所述待更新函数的地址信息。
可选的,所述将所述待更新函数替换为所述脚本中的目标函数,具体包括:
从所述Lua脚本中确定所述目标函数的位置信息;
将所述待更新函数替换为所述Lua脚本中的目标函数。
可选的,所述从所述Lua脚本中确定所述目标函数的位置信息,具体包括:
从所述Lua脚本中确定所述目标函数的过滤函数;
根据所述过滤函数确定所述目标函数的位置信息。
可选的,所述将所述待更新函数替换为所述脚本中的目标函数之后,还包括:
将所述Lua脚本作为第一Lua功能脚本保存在所述客户端中;
当所述客户端收到所述服务器发送的新的更新指令时,从所述服务器中下载第二Lua功能脚本;
采用所述第二Lua功能脚本替换所述第一Lua功能脚本。
一种软件轻量更新装置,包括:
更新指令获取模块,用于客户端获取服务器发送的针对待更新程序的更新指令;所述更新指令用于指示所述客户端对所述待更新程序进行更新;
脚本下载模块,用于从所述服务器中下载所述更新指令对应的脚本;
待更新函数确定模块,用于从所述脚本中确定待更新函数在所述待更新程序中对应的地址信息;
监控模块,用于监控预设事件是否发生;得到监控结果;
替换模块,用于当所述监控结果表示所述预设事件发生时,根据所述地址信息将所述待更新函数替换为所述脚本中的目标函数。
可选的,所述待更新函数确定模块,具体包括:
HOOK模板确定单元,用于从所述Lua脚本中确定HOOK模板;
待更新函数确定单元,用于根据所述HOOK模板确定所述待更新函数在所述待更新程序中的地址信息。
一种软件轻量更新设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行所述一种软件轻量更新方法。
一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现所述一种软件轻量更新方法的步骤。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:通客户端获取服务器发送的针对待更新程序的更新指令,下载所述更新指令对应的脚本;从脚本中确定待更新函数在待更新程序中对应的地址信息;监控预设事件是否发生,得到监控结果;当所述监控结果表示所述预设事件发生时,根据所述地址信息将所述待更新函数替换为所述脚本中的目标函数,实现整个APP的更新和BUG修复功能。动态实现了产品功能和逻辑的更新,只需要在后台上传Lua脚本,就能实现全网用户的软件轻量级动态更新。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例提供的一种软件轻量更新方法的流程示意图;
图2为本说明书实施例提供的软件轻量更新方法中确定待更新函数的流程示意图;
图3为本说明书实施例提供的对应于图1的一种软件轻量更新装置的结构示意图;
图4为本说明书实施例提供的对应于图1的一种软件轻量更新设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
现有技术中在客户端(移动端或者PC端),当产品发布后,后续的产品如果需要功能更新或者BUG修复时,需要更新替换模块或者重新下载整个安装包,安装包占用体积较大且在进行全量更新过程中更新速度较慢,更新时间较长,影响了用户体验。
图1为本说明书实施例提供的一种软件轻量更新方法的流程示意图。从程序角度而言,流程的执行主体可以为搭载于应用服务器的程序或应用客户端。
如图1所示,该流程可以包括以下步骤:
S101:客户端获取服务器发送的针对待更新程序的更新指令;所述更新指令用于指示所述客户端对所述待更新程序进行更新。
客户端(Client),也可称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。例如:移动终端或PC端中的应用程序(APPlication,简称APP)。
服务器,也可以称为伺服器,是提供计算服务的设备。服务器的构成包括处理器、硬盘、内存、系统总线等,需要响应服务请求。
客户端启动后与服务器(server)建立联系,不间断的从服务器获取所需数据,数据的传输通过套接字(socket)完成,以发送接收数据包(packet)的形式交互,packet是一个结构体(struct),一般有命令id、长度、用户id以及其他成员变量组成。服务器会对客户端中对应的程序进行检测更新,当检测到客户端中存在需要更新的程序时,向客户端发送更新指令,指示客户端对待更新程序进行更新。
例如:所述更新指令可以是某APP的功能更新、版本更新或者是修复系统BUG。服务器会自动检测系统中的APP是否需要更新,是否存在漏洞(BUG)等等,当检测到需要进行修复更新时,则将更新指令发送给相应的客户端,并存储待更新程序对应的Lua脚本,供客户端下载。客户端在下载Lua脚本并进行更新的过程中,并不影响用户对其他客户端的正常使用,用户也不会频繁收到系统更新信息。
S102:从所述服务器中下载所述更新指令对应的脚本。
这里所说的脚本可以是lua脚本,Lua是一种小巧的脚本语言,Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,它不仅仅可以作为扩展脚本,也可以作为普通的配置文件,代替XML,ini等文件格式。
Lua和C++程序可以通过一个栈交换数据。
具体格式为:struct Lua State。
Lua脚本中一般对应的是一段利用标准C语言编写的程序,在上述步骤中表示的是更新指令对应的程序,这一更新程序编写完成后,存储在服务器中,当客户端需要进行更新时,从服务器中下载相应的更新程序(Lua脚本)。
例如:此时Lua脚本中可以存储的是一段替换原APP中的界面程序,也可以是一段增加APP功能的程序等等。
Lua脚本下载下来之后不能直接使用,需要采用使用任意ANSIC编译器进行编译后再进行调用。
S103:从所述Lua脚本中确定待更新函数在所述待更新程序中对应的地址信息。
Lua脚本与C++的函数可以互相调用,从Lua脚本中可以获取待更新函数在待更新程序中的地址信息。
例如:待更新程序中对应的APP界面为界面A,Lua脚本中对应的程序为界面B,其中,界面B相比界面A,布局增多、可读消息面积增大。此时,从Lua脚本中可以得到界面A对应的函数在待更新程序中的地址信息。
S104:监控预设事件是否发生;得到监控结果。
需要说明的是,上述步骤中提到的监控事件发生的状态,属于HOOK功能中的一部分。HOOK是Windows中提供的一种用以替换磁盘操作系统(Disk Operating System,简称DOS)下“中断”的系统机制。或者HOOK也可以是Windows消息处理机制的一个平台,应用程序可以在上面设置子程序以监视指定窗口的某种消息(或某个事件),当消息到达后或事件发生时,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,再把处理后的信息传递回原来的程序段。
预设事件可以是指定窗口的某种消息或某个事件,例如在某一个交友聊天软件中,预设事件可以是用户在打字区的触控操作,也可以是用户对语音录制区的触控操作等。
在HOOK机制下,C++编程的程序中存在有HOOK模板,C++中的函数调用Lua接口,将HOOK模板设置到Lua脚本中。
上述步骤中,根据地址信息,钩子程序捕获待更新函数,并对待更新函数进行处理,或者是替换该函数。Windows系统在运行过程中会产生各种各样的消息,HOOK通过捕获指定的消息,通过回调函数,对消息进行响应,或是修改消息,甚至是拦截消息的传递。在使用时,需要将HOOK安装到系统中,形成HOOK机制,使用结束后再卸载。
S105:当所述监控结果表示所述预设事件发生时,根据所述地址信息将所述待更新函数替换为所述脚本中的目标函数。
当所述监控结果表示所述预设事件发生时,将待更新函数替换为脚本中的目标函数,完成更新过程。
例如:在更新前,待更新函数对应的功能是字符显示,即当接收到用户在打字区的触控操作时,在显示区仅会显示字符;目标函数对应的功能是字符显示以及对应字符的表情包以及场景动图显示,即完成功能更新后,当接收到用户在打字区的触控操作时,在显示区显示字符以及字符对应的表情包或场景动图。
再比如:在更新前,待更新函数对应的功能是语音录制,即当接收到对语音录制区的触控操作时,会进行语音录制;目标函数对应的功能是语音录制后,会将语音转换为字符(字符可以包括文字、数字、符号等),即完成功能更新后,当接收到对语音录制区的触控操作时,在进行语音录制的同时会将语音转换为字符一起发送给对方。
图1中的方法,通过识别Lua脚本中的待更新函数以及目标函数的地址信息,采用Lua脚本调用原程序中的HOOK模板对待更新函数进行HOOK操作,将待更新函数更新为Lua脚本中的目标函数,实现整个APP的更新和BUG修复功能,无需用户下载更新补丁或是下载安装包,实现了轻量级动态更新。
基于图1的方法,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
在实际应用中,所述从所述Lua脚本中确定待更新函数在所述待更新程序中对应的地址信息,具体可以包括:
从所述Lua脚本中确定HOOK模板;
根据所述HOOK模板确定所述待更新函数在所述待更新程序中的地址信息。
在进行更新时,需要知道待更新函数在待更新程序中的地址信息,因此,该地址信息可以从Lua脚本中获取,具体的,是根据HOOK模板来确定待更新函数的地址信息。
更为具体地,所述根据所述HOOK模板确定所述待更新函数在所述待更新程序中的地址信息,具体可以包括:
从所述HOOK模板中确定stub数据结构;
从所述stub数据结构中获取所述待更新函数指针数据;
根据所述待更新函数指针数据确定所述待更新函数的地址信息。
Stub(桩代码),替代子模块(某些特定功能模块)的模拟函数或模拟类,负责接收本地方法调用,并将它们委派给各自的具体实现对象。
上述步骤中的tub数据结构用于存储待更新函数数据,一个待更新函数对应有一个stub数据块(数据结构),在stub数据结构中可以获取待更新函数指针数据,根据更新函数的指针数据就能确定待更新函数的具体地址信息。
其中,函数指针可以指的是指向函数的指针变量,该指针变量指向函数。C/C++在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样。函数指针除了可以调用函数之外,还可以用于做函数的参数。
图2为本说明书实施例提供的软件轻量更新方法中确定待更新函数的流程示意图。如图2所示,在确定待更新函数时,可以采用以下步骤实现:
S201:从Lua脚本中获取HOOK模板;所述HOOK模板是由C++程序生成的多个参数对应的模板;
S202:从所述HOOK模板中确定stub数据结构;
S203:从所述stub数据结构中获取待更新函数指针数据;
S204:根据所述待更新函数指针数据确定所述待更新函数的地址信息,并调用所述待更新函数。
从确定待更新函数的步骤中可以看出,一个HOOK模板中可以包括多个stub数据结构,每个stub数据结构中存储有对应的待更新函数数据,更为具体的,可以采用C++程序生成0到9十个参数的HOOK模板,此时,此时,一个HOOK模板中可以包含有0到9十个参数的stub数据结构,stub数据结构中保存有待更新函数的实体地址以及模板函数的实体地址。在查询待更新函数时,只需要确定stub数据结构,并从stub数据结构中确定出待更新函数指针数据,即可确定待更新函数的地址信息,并根据地址信息对待更新函数进行调用,根据stub数据结构还能调用到模板函数的汇编代码实体。
在实际应用中,在进行程序更新时,需要对上述步骤中确定的待更新函数进行HOOK操作,所述调用C++接口对所述待更新函数执行HOOK操作,具体可以包括:
从所述Lua脚本中确定所述目标函数的位置信息;
调用所述HOOK模板对所述目标函数执行HOOK操作。
Lua脚本中为服务器下发的更新指令对应的新函数,或者说Lua脚本中的函数为待更新函数对应的目标函数。在实际操作时,当面临功能更新时,将Lua脚本中的目标函数注册到待更新程序中,替换待更新函数。例如:某直播APP中的待更新程序表示该直播APP中可以进行语音聊天,但是该语音聊天最多只能录制10秒的语音,此时,想将语音录制时间延长至2分钟,将目标程序定义为语音录制时间为2分钟,此时将该目标程序对应的目标函数写入Lua脚本中,Lua脚本调用C++接口确定待更新函数的地址信息,并从Lua脚本中确定出目标函数的位置信息,Lua脚本通过调用C++接口,利用HOOK模板对所述待更新函数进行HOOK操作,将待更新函数替换为目标函数,实现更新后的该直播APP在进行语音聊天时,能实现2分钟的语音录制。
另一种功能更新是在待更新程序中增加新的功能,例如:某交友APP中,待更新程序中,在进行聊天时,仅能通过文字聊天或者语音聊天,针对这一背景,想在待更新程序中增加视频功能,此时,视频聊天对应的目标程序(或者目标函数)写入Lua脚本中,Lua脚本调用C++接口确定目标函数的待插入地址信息,并从Lua脚本中确定出目标函数的位置信息,Lua脚本通过调用C++接口,利用HOOK模板对所述待更新函数进行HOOK操作,将Lua脚本中对应的目标函数或目标程序插入到待更新程序中的对应位置,实现该交友APP在进行聊天时,除了能通过文字聊天或者语音聊天,还能通过视频聊天。
更为具体的,所述从所述Lua脚本中确定所述目标函数的位置信息,具体可以包括:
从所述Lua脚本中确定所述目标函数的过滤函数;
根据所述过滤函数确定所述目标函数的位置信息。
上述步骤中的过滤函数可以用于过滤序列,过滤掉不符合条件的元素,确定目标函数的位置信息。
所述将所述待更新函数替换为所述Lua脚本中的目标函数之后,还可以包括:
将所述Lua脚本作为第一Lua功能脚本保存在所述客户端中;
当所述客户端收到所述服务器发送的新的更新指令时,从所述服务器中下载第二Lua功能脚本;
采用所述第二Lua功能脚本替换所述第一Lua功能脚本。
LUA是我们功能的一部分,属于功能小巧脚本语言,下发后,会保存到客户端,作为缓存,在服务器不发更新的话,默认以当前Lua脚本为最新的功能脚本模块;当服务器下发新的更新指令时,采用新的Lua脚本替换本地缓存的Lua脚本。
上述方法中,Lua脚本的更新是一个替换的过程,并不会导致随着APP功能、版本更新而使Lua功能脚本数量越来越多。
为了更加清楚的了解图1中的技术方案,可以根据下面的例子做详细的说明:
例如:服务器检测到系统中出现了漏洞(BUG),想客户端发送更新指令,此时,服务器中存储的Lua脚本内写入了针对该漏洞的修复程序代码,当客户端执行到APP代码模块时,通过Lua C API(解析器)动态地加载已经下载好的Lua脚本业务逻辑代码,并通过已经集成到客户端程序中的Lua解析器来解析执行所述Lua脚本业务逻辑代码或者通过桥接器转换Lua解析器不能解析的代码,以达到动态更新的目的。客户端下载并解析Lua脚本之后,从Lua脚本中获取HOOK模板,并获取待修复BUG对应的函数的地址信息以及Lua脚本中对应的修复函数位置信息,然后采用Lua脚本调用C++接口对待修复BUG对应的函数进行HOOK操作,完成BUG修复。
例如:服务器检测到需要对某APP的A功能替换为B功能(例如:APP更新界面、更新图标、更新字体或者更新推送规则等等),此时,待更新函数可以是A功能对应的函数,目标函数可以是准备替换A功能的B功能对应的函数,通过图1以及图2中的方法步骤最后实现功能的替换。
再比如:服务器检测到需要对某APP增加C功能(比如:在动图上加声音,或者是文字聊天时自动弹出相应表情包等等),此时,客户端需要在待更新程序中增加Lua脚本中的新程序代码,但是同样可以采用图1以及图2中的步骤,此时待更新函数可能是动图显示对应的函数,目标函数可以为融合了动图显示和声音的函数,采用上述方案步骤将待更新函数替换为目标函数,实现功能的增加。
图1与图2中的方法,当需要对第三方APP的本地部分进行控制并更新APP时,通过设置在主程序(C++程序)中,只实现主要的功能接口,Lua脚本中实现逻辑功能部分;使用Lua脚本结合本地(native)中的代码,实现对原始目标程序中我们要控制的二进制代码部分进行动态HOOK,从native中跳转到Lua来执行。实现了每次更新,只需要确定待更新函数的地址信息以及目标函数的位置,就能在LUA脚本中动态实现功能更新,实现了轻量级的更新逻辑。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图3为本说明书实施例提供的对应于图1的一种软件轻量更新装置的结构示意图。如图3所示,该装置可以包括:
更新指令获取模块301,用于客户端获取服务器发送的针对待更新程序的更新指令;所述更新指令用于指示所述客户端对所述待更新程序进行更新;
脚本下载模块302,用于从所述服务器中下载所述更新指令对应的脚本;
待更新函数确定模块303,用于从所述脚本中确定待更新函数在所述待更新程序中对应的地址信息;
监控模块304,用于监控预设事件是否发生;得到监控结果;
替换模块305,用于当所述监控结果表示所述预设事件发生时,根据所述地址信息将所述待更新函数替换为所述脚本中的目标函数。
可选的,所述待更新函数确定模块303,具体可以包括:
HOOK模板确定单元,用于从所述Lua脚本中确定HOOK模板;
待更新函数确定单元,用于根据所述HOOK模板确定所述待更新函数在所述待更新程序中的地址信息。
可选的,所述待更新函数确定模块303,具体可以用于:
从所述HOOK模板中确定stub数据结构;
从所述stub数据结构中获取所述待更新函数指针数据;
根据所述待更新函数指针数据确定所述待更新函数的地址信息。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。
图4为本说明书实施例提供的对应于图1的一种软件轻量更新设备的结构示意图。如图4所示,设备400可以包括:
至少一个处理器410;以及,
与所述至少一个处理器通信连接的存储器430;其中,
所述存储器430存储有可被所述至少一个处理器410执行的指令420,所述指令被所述至少一个处理器410执行,以使所述至少一个处理器410能够:
客户端获取服务器发送的针对待更新程序的更新指令;所述更新指令用于指示所述客户端对所述待更新程序进行更新;
从所述服务器中下载所述更新指令对应的脚本;
从所述脚本中确定待更新函数在所述待更新程序中对应的地址信息;
监控预设事件是否发生,得到监控结果;
当所述监控结果表示所述预设事件发生时,根据所述地址信息将所述待更新函数替换为所述脚本中的目标函数。
基于同样的思路,本说明书实施例还提供了上述方法对应的计算机可读存储介质。
一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现以下步骤:
客户端获取服务器发送的针对待更新程序的更新指令;所述更新指令用于指示所述客户端对所述待更新程序进行更新;
从所述服务器中下载所述更新指令对应的脚本;
从所述脚本中确定待更新函数在所述待更新程序中对应的地址信息;
监控预设事件是否发生,得到监控结果;
当所述监控结果表示所述预设事件发生时,根据所述地址信息将所述待更新函数替换为所述脚本中的目标函数。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种软件轻量更新方法,其特征在于,包括:
客户端获取服务器发送的针对待更新程序的更新指令;所述更新指令用于指示所述客户端对所述待更新程序进行更新;
从所述服务器中下载所述更新指令对应的脚本;
从所述脚本中确定待更新函数在所述待更新程序中对应的地址信息;
监控预设事件是否发生,得到监控结果;
当所述监控结果表示所述预设事件发生时,根据所述地址信息将所述待更新函数替换为所述脚本中的目标函数。
2.如权利要求1所述的方法,其特征在于,所述从所述脚本中确定待更新函数在所述待更新程序中对应的地址信息,具体包括:
从所述脚本中确定HOOK模板;所述脚本为lua脚本;
根据所述HOOK模板确定所述待更新函数在所述待更新程序中的地址信息。
3.如权利要求2所述的方法,其特征在于,所述根据所述HOOK模板确定所述待更新函数在所述待更新程序中的地址信息,具体包括:
从所述HOOK模板中确定stub数据结构;
从所述stub数据结构中获取所述待更新函数指针数据;
根据所述待更新函数指针数据确定所述待更新函数的地址信息。
4.如权利要求1所述的方法,其特征在于,所述将所述待更新函数替换为所述脚本中的目标函数,具体包括:
从所述Lua脚本中确定所述目标函数的位置信息;
将所述待更新函数替换为所述Lua脚本中的目标函数。
5.如权利要求4所述的方法,其特征在于,所述从所述Lua脚本中确定所述目标函数的位置信息,具体包括:
从所述Lua脚本中确定所述目标函数的过滤函数;
根据所述过滤函数确定所述目标函数的位置信息。
6.如权利要求1所述的方法,其特征在于,所述将所述待更新函数替换为所述脚本中的目标函数之后,还包括:
将所述Lua脚本作为第一Lua功能脚本保存在所述客户端中;
当所述客户端收到所述服务器发送的新的更新指令时,从所述服务器中下载第二Lua功能脚本;
采用所述第二Lua功能脚本替换所述第一Lua功能脚本。
7.一种软件轻量更新装置,其特征在于,包括:
更新指令获取模块,用于客户端获取服务器发送的针对待更新程序的更新指令;所述更新指令用于指示所述客户端对所述待更新程序进行更新;
脚本下载模块,用于从所述服务器中下载所述更新指令对应的脚本;
待更新函数确定模块,用于从所述脚本中确定待更新函数在所述待更新程序中对应的地址信息;
监控模块,用于监控预设事件是否发生;得到监控结果;
替换模块,用于当所述监控结果表示所述预设事件发生时,根据所述地址信息将所述待更新函数替换为所述脚本中的目标函数。
8.如权利要求7所述的装置,其特征在于,所述待更新函数确定模块,具体包括:
HOOK模板确定单元,用于从所述Lua脚本中确定HOOK模板;
待更新函数确定单元,用于根据所述HOOK模板确定所述待更新函数在所述待更新程序中的地址信息。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-6任意一项所述的软件轻量更新方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现权利要求1-6所述的任一项方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811607601.3A CN109725923A (zh) | 2018-12-27 | 2018-12-27 | 一种软件轻量更新方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811607601.3A CN109725923A (zh) | 2018-12-27 | 2018-12-27 | 一种软件轻量更新方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109725923A true CN109725923A (zh) | 2019-05-07 |
Family
ID=66297764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811607601.3A Pending CN109725923A (zh) | 2018-12-27 | 2018-12-27 | 一种软件轻量更新方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109725923A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362330A (zh) * | 2019-07-18 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 应用程序更新方法、装置、终端及存储介质 |
CN110611705A (zh) * | 2019-09-02 | 2019-12-24 | 深圳市丰润达科技有限公司 | 设备修复方法、服务器和应用终端 |
CN111083563A (zh) * | 2019-12-30 | 2020-04-28 | 深圳市康冠智能科技有限公司 | 电视ui控件的调试方法、装置、电视机及存储介质 |
CN112492337A (zh) * | 2020-11-26 | 2021-03-12 | 北京达佳互联信息技术有限公司 | 一种通信方法、通信装置、服务器和存储介质 |
CN113010199A (zh) * | 2021-03-16 | 2021-06-22 | 南方电网数字电网研究院有限公司 | 应用更新方法、装置、计算机设备和存储介质 |
CN113360176A (zh) * | 2020-03-06 | 2021-09-07 | 浙江宇视科技有限公司 | 一种软件程序的升级方法、装置、存储介质及电子设备 |
CN113553090A (zh) * | 2021-07-26 | 2021-10-26 | 网易(杭州)网络有限公司 | 客户端应用程序的更新控制方法及装置 |
CN113596600A (zh) * | 2021-08-03 | 2021-11-02 | 广州繁星互娱信息科技有限公司 | 直播嵌入程序的安全管理方法、装置、设备及存储介质 |
WO2022228035A1 (zh) * | 2021-04-25 | 2022-11-03 | 花瓣云科技有限公司 | 应用程序的图标更新方法及相关装置 |
CN115473810A (zh) * | 2022-09-01 | 2022-12-13 | 珠海金山数字网络科技有限公司 | 双端同步脚本热更新方法及装置 |
WO2023202427A1 (en) * | 2022-04-20 | 2023-10-26 | International Business Machines Corporation | Dynamic update of a computer program in memory |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102651060A (zh) * | 2012-03-31 | 2012-08-29 | 北京奇虎科技有限公司 | 一种漏洞检测的方法和系统 |
CN104866307A (zh) * | 2015-05-14 | 2015-08-26 | 百度在线网络技术(北京)有限公司 | 一种应用程序的修复方法和装置 |
CN105354045A (zh) * | 2014-08-21 | 2016-02-24 | 中兴通讯股份有限公司 | 补丁的制作方法及装置、补丁的激活方法及装置 |
CN106371940A (zh) * | 2015-07-21 | 2017-02-01 | 腾讯科技(深圳)有限公司 | 一种程序崩溃解决方法及装置 |
CN107231490A (zh) * | 2017-07-19 | 2017-10-03 | 中国银行股份有限公司 | 动态更新ios系统应用程序的方法、客户端及服务器 |
US20180088934A1 (en) * | 2008-01-23 | 2018-03-29 | International Business Machines Corporation | Generating and applying patches to computer program code concurrently with its execution |
CN108829431A (zh) * | 2018-06-27 | 2018-11-16 | 杭州贝购科技有限公司 | iOS应用程序的更新方法、装置、设备及存储介质 |
-
2018
- 2018-12-27 CN CN201811607601.3A patent/CN109725923A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180088934A1 (en) * | 2008-01-23 | 2018-03-29 | International Business Machines Corporation | Generating and applying patches to computer program code concurrently with its execution |
CN102651060A (zh) * | 2012-03-31 | 2012-08-29 | 北京奇虎科技有限公司 | 一种漏洞检测的方法和系统 |
CN105354045A (zh) * | 2014-08-21 | 2016-02-24 | 中兴通讯股份有限公司 | 补丁的制作方法及装置、补丁的激活方法及装置 |
CN104866307A (zh) * | 2015-05-14 | 2015-08-26 | 百度在线网络技术(北京)有限公司 | 一种应用程序的修复方法和装置 |
CN106371940A (zh) * | 2015-07-21 | 2017-02-01 | 腾讯科技(深圳)有限公司 | 一种程序崩溃解决方法及装置 |
CN107231490A (zh) * | 2017-07-19 | 2017-10-03 | 中国银行股份有限公司 | 动态更新ios系统应用程序的方法、客户端及服务器 |
CN108829431A (zh) * | 2018-06-27 | 2018-11-16 | 杭州贝购科技有限公司 | iOS应用程序的更新方法、装置、设备及存储介质 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362330A (zh) * | 2019-07-18 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 应用程序更新方法、装置、终端及存储介质 |
CN110362330B (zh) * | 2019-07-18 | 2023-09-01 | 腾讯科技(深圳)有限公司 | 应用程序更新方法、装置、终端及存储介质 |
CN110611705A (zh) * | 2019-09-02 | 2019-12-24 | 深圳市丰润达科技有限公司 | 设备修复方法、服务器和应用终端 |
CN111083563A (zh) * | 2019-12-30 | 2020-04-28 | 深圳市康冠智能科技有限公司 | 电视ui控件的调试方法、装置、电视机及存储介质 |
CN111083563B (zh) * | 2019-12-30 | 2021-09-07 | 深圳市康冠智能科技有限公司 | 电视ui控件的调试方法、装置、电视机及存储介质 |
CN113360176A (zh) * | 2020-03-06 | 2021-09-07 | 浙江宇视科技有限公司 | 一种软件程序的升级方法、装置、存储介质及电子设备 |
CN113360176B (zh) * | 2020-03-06 | 2023-08-25 | 浙江宇视科技有限公司 | 一种软件程序的升级方法、装置、存储介质及电子设备 |
CN112492337B (zh) * | 2020-11-26 | 2023-05-23 | 北京达佳互联信息技术有限公司 | 一种通信方法、通信装置、服务器和存储介质 |
CN112492337A (zh) * | 2020-11-26 | 2021-03-12 | 北京达佳互联信息技术有限公司 | 一种通信方法、通信装置、服务器和存储介质 |
CN113010199A (zh) * | 2021-03-16 | 2021-06-22 | 南方电网数字电网研究院有限公司 | 应用更新方法、装置、计算机设备和存储介质 |
CN113010199B (zh) * | 2021-03-16 | 2023-01-20 | 南方电网数字电网研究院有限公司 | 应用更新方法、装置、计算机设备和存储介质 |
WO2022228035A1 (zh) * | 2021-04-25 | 2022-11-03 | 花瓣云科技有限公司 | 应用程序的图标更新方法及相关装置 |
CN113553090B (zh) * | 2021-07-26 | 2023-07-25 | 网易(杭州)网络有限公司 | 客户端应用程序的更新控制方法及装置 |
CN113553090A (zh) * | 2021-07-26 | 2021-10-26 | 网易(杭州)网络有限公司 | 客户端应用程序的更新控制方法及装置 |
CN113596600A (zh) * | 2021-08-03 | 2021-11-02 | 广州繁星互娱信息科技有限公司 | 直播嵌入程序的安全管理方法、装置、设备及存储介质 |
WO2023202427A1 (en) * | 2022-04-20 | 2023-10-26 | International Business Machines Corporation | Dynamic update of a computer program in memory |
US11928460B2 (en) | 2022-04-20 | 2024-03-12 | International Business Machines Corporation | Dynamic update of a computer program in memory |
CN115473810A (zh) * | 2022-09-01 | 2022-12-13 | 珠海金山数字网络科技有限公司 | 双端同步脚本热更新方法及装置 |
CN115473810B (zh) * | 2022-09-01 | 2024-04-26 | 珠海金山数字网络科技有限公司 | 双端同步脚本热更新方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109725923A (zh) | 一种软件轻量更新方法、装置及设备 | |
US11249744B2 (en) | Application deployment method, apparatus, and system | |
CN109194606B (zh) | 攻击检测系统、方法、计算机设备及存储介质 | |
CN102073507B (zh) | 微件Widget调用的方法、装置和系统 | |
CN105786538B (zh) | 基于安卓系统的软件升级方法和装置 | |
CN109656773B (zh) | 一种基于ios系统应用异常崩溃的处理框架 | |
CN106873960B (zh) | 一种应用软件的更新方法和设备 | |
US20130311615A1 (en) | Updating Web Resources | |
US10831892B2 (en) | Web browser script monitoring | |
CN107645546B (zh) | 基于安卓系统的文件监听方法、智能设备及存储介质 | |
CN108647032B (zh) | 应用加载方法及装置、计算机装置和计算机可读存储介质 | |
CN106709323A (zh) | 一种识别伪装下载链接的方法和装置 | |
CN113760324A (zh) | 构建微前端应用的方法和装置 | |
CN110895468B (zh) | 实现业务增强的方法和装置 | |
CN112702195A (zh) | 网关配置方法、电子设备及计算机可读存储介质 | |
CN111078256B (zh) | 自动化测试环境的升级方法、终端及可读存储介质 | |
CN109816453B (zh) | 一种推广资源链接的检测方法及装置 | |
CN111880990A (zh) | 一种异常处理方法及装置 | |
CN111679850A (zh) | 应用程序热更新处理方法、装置及系统 | |
CN114721740B (zh) | 消息触发方法、装置、设备及存储介质 | |
CN114610446B (zh) | 一种自动注入探针的方法、装置及系统 | |
CN110825373A (zh) | 一种移动端动态化方法及装置 | |
CN116069366A (zh) | 客户端应用程序更新方法及装置、存储介质及电子设备 | |
CN107423367B (zh) | Web页面加载方法及装置 | |
CN110543323A (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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20190507 Assignee: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd. Assignor: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd. Contract record no.: X2021440000031 Denomination of invention: A method, device and equipment for software lightweight updating License type: Common License Record date: 20210125 |