太阳城集团

  • / 9
  • 下载费用:30 金币  

一种实现PC客户端软件实时修复的方法及装置.pdf

摘要
申请专利号:

CN201611058655.X

申请日:

2016.11.25

公开号:

CN106776125A

公开日:

2017.05.31

当前法律状态:

实审

有效性:

审中

法律详情: 实质审查的生效IPC(主分类):G06F 11/14申请日:20161125|||公开
IPC分类号: G06F11/14; H04L29/08 主分类号: G06F11/14
申请人: 武汉斗鱼网络科技有限公司
发明人: 周志刚
地址: 430000 湖北省武汉市东湖开发区软件园东路1号软件产业4.1期B1栋11楼
优先权:
专利代理机构: 武汉智权专利代理事务所(特殊普通合伙) 42225 代理人: 沈林华
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201611058655.X

授权太阳城集团号:

|||

法律状态太阳城集团日:

太阳城集团2017.06.23|||2017.05.31

法律状态类型:

太阳城集团实质审查的生效|||公开

摘要

本发明公开了一种实现PC客户端软件实时修复的方法及装置,涉及软件修复/更新技术领域。该方法包括:服务器端获取PC客户端软件中出现错误的功能模块文件,将该功能模块文件与服务器端保存的相应的功能模块文件进行对比,找出差异数据并记录;根据找出的差异数据,生成配置文件;将生成的配置文件下发至PC客户端;PC客户端根据服务器端发来的配置文件,动态修改PC客户端软件中相应功能模块的内存数据。本发明能对PC客户端软件的少量错误进行在线实时修复/更新,不但节省带宽、节约网络流量,而且无需关闭软件中断操作,提高了用户体验。

权利要求书

1.一种实现PC客户端软件实时修复的方法,其特征在于,该方法包括以下步骤:
步骤S1:服务器端获取PC客户端软件中出现错误的功能模块文件,将该功能模块文件
与服务器端保存的相应的功能模块文件进行对比,找出差异数据并记录;
步骤S2:服务器端根据找出的差异数据,生成配置文件;
步骤S3:服务器端将生成的配置文件下发至PC客户端;
步骤S4:PC客户端根据服务器端发来的配置文件,动态修改PC客户端软件中相应功能
模块的内存数据。
2.如权利要求1所述的实现PC客户端软件实时修复的方法,其特征在于,步骤S1具体包
括以下流程:
步骤S101:服务器端获取PC客户端软件中出现错误的功能模块文件;
步骤S102:通过二进制文件对比工具将该功能模块文件与服务器端保存的相应的功能
模块文件进行对比,查找出两个文件的差异数据;
步骤S103:记录下差异数据的文件偏移地址;并记录下服务器端保存的相应的功能模
块文件中的差异数据和差异数据长度。
3.如权利要求2所述的实现PC客户端软件实时修复的方法,其特征在于,步骤S2具体包
括以下流程:
步骤S201:服务器端通过将记录的差异数据的文件偏移地址转换为功能模块的内存偏
移,得到差异数据的内存偏移;
步骤S202:根据得到的差异数据的内存偏移以及步骤S103中记录的差异数据、差异数
据长度,生成PC客户端需要的配置文件,该配置文件的内容包括:功能模块的文件名+差异
数据的内存偏移+差异数据长度+差异数据。
4.如权利要求3所述的实现PC客户端软件实时修复的方法,其特征在于:步骤S201中,
服务器端通过将记录的差异数据的文件偏移地址转换为功能模块的内存偏移,得到差异数
据的内存偏移的具体过程为:
找到文件偏移所属功能模块的段的相对内存地址;
根据内存偏移=文件偏移所属功能模块的段的相对内存地址+(差异数据的文件偏移
地址-文件偏移在该文件的段的偏移),得到差异数据的内存偏移。
5.如权利要求2所述的实现PC客户端软件实时修复的方法,其特征在于,步骤S4具体包
括以下流程:
步骤S401:PC客户端收到服务器端发来的配置文件后,解析出配置文件中的字段;并通
过调用Windows的API函数HMODULE=GetModuleHandle(“功能模块的文件名”),获取到需要
修改的功能模块的内存地址;
步骤S402:根据实际需要修改的内存地址=需要修改的功能模块的内存地址+差异数
据的内存偏移,得到实际需要修改的内存地址;
步骤S403:通过调用Windows的API函数VirtualProtect,将实际需要修改的内存地址
的内存属性设置为可改写;
步骤S404:将服务器下发的差异数据拷贝到实际需要修改的内存地址处;
步骤S405:再次调用Windows的API函数VirtualProtect,将设置的内存属性改回原来
的内存属性值,结束。
6.一种实现PC客户端软件实时修复的装置,其特征在于:包括设置于服务器端的功能
模块文件对比单元、配置文件生成单元、配置文件下发单元;以及设置于PC客户端的内存数
据修改单元;
所述功能模块文件对比单元用于:获取PC客户端软件中出现错误的功能模块文件,将
该功能模块文件与服务器端保存的相应的功能模块文件进行对比,找出差异数据并记录;
所述配置文件生成单元用于:根据功能模块文件对比单元找出的差异数据,生成配置
文件;
所述配置文件下发单元用于:将生成的配置文件下发至PC客户端;
所述内存数据修改单元用于:根据服务器端发来的配置文件,动态修改PC客户端软件
中相应功能模块的内存数据。
7.如权利要求6所述的实现PC客户端软件实时修复的装置,其特征在于,所述功能模块
文件对比单元进行对比操作的具体流程为:获取PC客户端软件中出现错误的功能模块文
件;通过二进制文件对比工具将该功能模块文件与服务器端保存的相应的功能模块文件进
行对比,查找出两个文件的差异数据;记录下差异数据的文件偏移地址,并记录下服务器端
保存的相应的功能模块文件中的差异数据和差异数据长度。
8.如权利要求7所述的实现PC客户端软件实时修复的装置,其特征在于,所述配置文件
生成单元生成配置文件的具体流程为:将功能模块文件对比单元记录的差异数据的文件偏
移地址转换为功能模块的内存偏移,得到差异数据的内存偏移;根据得到的差异数据的内
存偏移以及功能模块文件对比单元记录的差异数据、差异数据长度,生成PC客户端需要的
配置文件,该配置文件的内容包括:功能模块的文件名+差异数据的内存偏移+差异数据长
度+差异数据。
9.如权利要求8所述的实现PC客户端软件实时修复的装置,其特征在于,所述配置文件
生成单元得到差异数据的内存偏移的具体流程为:找到文件偏移所属功能模块的段的相对
内存地址;根据内存偏移=文件偏移所属功能模块的段的相对内存地址+(差异数据的文件
偏移地址-文件偏移在该文件的段的偏移),得到差异数据的内存偏移。
10.如权利要求7所述的实现PC客户端软件实时修复的装置,其特征在于,所述内存数
据修改单元修改内存数据的具体流程为:所述内存数据修改单元收到服务器端发来的配置
文件后,解析出配置文件中的字段;并通过调用Windows的API函数HMODULE=
GetModuleHandle(“功能模块的文件名”),获取到需要修改的功能模块的内存地址;根据实
际需要修改的内存地址=需要修改的功能模块的内存地址+差异数据的内存偏移,得到实
际需要修改的内存地址;通过调用Windows的API函数VirtualProtect,将实际需要修改的
内存地址的内存属性设置为可改写;将服务器下发的差异数据拷贝到实际需要修改的内存
地址处;再次调用Windows的API函数VirtualProtect,将设置的内存属性改回原来的内存
属性值。

说明书

一种实现PC客户端软件实时修复的方法及装置

技术领域

本发明涉及软件修复/更新技术领域,具体来讲是一种实现PC(Personal
Computer,个人计算机)客户端软件实时修复的方法及装置。

背景技术

目前,对于PC客户端软件进行修复/更新的方法是从服务器下载一个最新的软件
包来进行修复/更新操作。而一些更先进的修复/更新方案是对客户端软件的组件进行修
复/更新,从而只需要修复/更新部分修改过的组件,对于没有改动的组件则不需要进行修
复/更新。这样很大的减少了带宽,节约了网络流量,提高了用户修复/更新成功率,同时也
减少了服务器下载软件的宽带负载。

但在实际使用中发现,现有的修复/更新方法依然存在以下缺陷:

(1)在某些情况下,PC客户端软件仅仅只更新了一个数据或者只更改了一个判断
语句(此时只想修改客户端代码中的一个常量配置数据,或者说需要修改某个阈值等),因
此只需要更新几个字节的数据即可,但如果按照现有的方法更新整个文件则可能需要消耗
比较多的网络流量。

(2)当存在一种情况是用户已经在运行PC客户端软件,但需要修复/更新某个文件
的某个数据。此时通常的做法是先让用户关闭客户端软件,再更新客户端软件,然后重新打
开客户端软件。这一方式无疑会中断用户的当前操作,影响使用,从而导致用户体验较差。

发明内容

本发明的目的是为了克服上述背景技术的不足,提供一种实现PC客户端软件实时
修复的方法及装置,能对PC客户端软件的少量错误进行在线实时修复/更新,不但节省带
宽、节约网络流量,而且无需关闭软件中断操作,提高了用户体验。

为达到以上目的,本发明提供一种实现PC客户端软件实时修复的方法,包括以下
步骤:

步骤S1:服务器端获取PC客户端软件中出现错误的功能模块文件,将该功能模块
文件与服务器端保存的相应的功能模块文件进行对比,找出差异数据并记录;

步骤S2:服务器端根据找出的差异数据,生成配置文件;

步骤S3:服务器端将生成的配置文件下发至PC客户端;

步骤S4:PC客户端根据服务器端发来的配置文件,动态修改PC客户端软件中相应
功能模块的内存数据。

本发明还提供一种实现PC客户端软件实时修复的装置,包括设置于服务器端的功
能模块文件对比单元、配置文件生成单元、配置文件下发单元;以及设置于PC客户端的内存
数据修改单元;

所述功能模块文件对比单元用于:获取PC客户端软件中出现错误的功能模块文
件,将该功能模块文件与服务器端保存的相应的功能模块文件进行对比,找出差异数据并
记录;所述配置文件生成单元用于:根据功能模块文件对比单元找出的差异数据,生成配置
文件;所述配置文件下发单元用于:将生成的配置文件下发至PC客户端;所述内存数据修改
单元用于:根据服务器端发来的配置文件,动态修改PC客户端软件中相应功能模块的内存
数据。

本发明的有益效果在于:

本发明中,服务器端能获取PC客户端软件中出现错误的功能模块文件,并将该功
能模块文件与服务器端保存的相应的功能模块文件进行对比,找到其中的差异,然后将差
异生成配置文件下发至PC客户端;PC客户端收到配置文件后,实现动态的修改客户端软件
的内存代码数据,来达到实时修复/更新的目的。

与现有技术相比,本发明只需要对出现错误的功能模块文件中的几个字节(即差
异数据)进行修复/更新,就可达到实时修复/更新的目的,特别适用于客户端出现错误需要
紧急修复/更新,而服务器端又不想重新发布版本的时候。只需要非常小的几个字节改动
(如更新某个配置数据或更新某个阈值数据等),即可修复软件,极大的减少了带宽,节约了
网络流量。并且,本发明提供的方法可以在不关闭PC客户端软件的同时对PC客户端软件进
行修复/更新,不会中断用户的当前操作,不影响使用,用户体验佳。

附图说明

图1为本发明实施例中实现PC客户端软件实时修复的方法的流程图;

图2为本发明实施例中实现PC客户端软件实时修复的装置的结构框图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细描述。

参见图1所示,本发明实施例提供一种实现PC客户端软件实时修复的方法,包括以
下步骤:

步骤S1:当PC客户端软件出现错误需要紧急修复/更新,而服务器端又不想重新发
布版本时,服务器端获取PC客户端软件中出现错误的功能模块文件,将该功能模块文件与
服务器端保存的相应的功能模块文件进行对比,找出差异数据并记录。

可以理解的是,在将功能模块文件与服务器端保存的相应的功能模块文件进行对
比时,可通过二进制文件对比工具来实现。该二进制文件对比工具可以使用第三方的二进
制文件对比工具,也可以是开发人员自己编写的二进制文件对比工具,只需要分别读取2个
功能模块文件,记录下2个文件不一样的地方即可。具体来说,步骤S1具体包括以下流程:

步骤S101:服务器端获取PC客户端软件中出现错误的功能模块文件,转入步骤
S102。

步骤S102:通过二进制文件对比工具将该功能模块文件与服务器端保存的相应的
功能模块文件进行对比,查找出两个文件的差异数据(即不一样的地方),转入步骤S103。

步骤S103:记录下差异数据的文件偏移地址FileOffset(相对于文件开始的偏
移);并记录下服务器端保存的相应的功能模块文件中的差异数据NewData和差异数据长
度。

步骤S2:服务器端根据找出的差异数据,生成配置文件。

可以理解的是,由于一个功能模块文件在磁盘中的文件内容对齐方式和内存中的
文件对齐方式是不一样的,而配置文件在用户电脑上(即客户端上)是修改内存的数据,所
以需要转换成内存的偏移。因此,服务器端获取到了差异数据的文件偏移地址后,需要将其
转换成功能模块的内存偏移。转换方法如下:

(1)找到文件偏移所属功能模块的段的相对内存地址(功能模块文件的组织结构
是由多个段组成,每个数据必定属于某个段,如代码段,数据段等)。

(2)根据内存偏移=该段的内存地址+(文件偏移-该段的文件偏移),得到差异数
据的内存偏移;

其中,内存偏移就是实际需要修改的内存不一致的内存地址,即差异数据的内存
偏移;

该段的内存地址是指实际需要修改的内存地址的段的地址,即文件偏移所属功能
模块的段的相对内存地址;

文件偏移是指对比2个功能模块文件得到的文件差异,相对于文件开头的偏移,即
差异数据的文件偏移地址;

该段的文件偏移是指文件偏移在该文件的段的偏移。

在上述基础上,实际操作时,步骤S2具体包括以下流程:

步骤S201:服务器端通过将记录的差异数据的文件偏移地址转换成功能模块的内
存偏移,得到差异数据的内存偏移,转入步骤S202。具体转换操作见上文详述,此处不赘述。

步骤S202:根据得到的差异数据的内存偏移以及步骤S103中记录的差异数据
NewData、差异数据长度,生成PC客户端需要的配置文件,该配置文件的内容包括:功能模块
的文件名(即需要修改的模块的文件名)+差异数据的内存偏移(即需要修改的内存偏移)+
差异数据长度(即需要修改的数据长度)+差异数据NewData(即需要修改的数据内容)。

步骤S3:服务器端将生成的配置文件下发至PC客户端。

步骤S4:PC客户端根据服务器端发来的配置文件,动态修改PC客户端软件中相应
功能模块的内存数据。

具体来说,步骤S4具体包括以下流程:

步骤S401:PC客户端收到服务器端发来的配置文件后,解析出配置文件中的字段;
并通过调用Windows的API(Application Programming Interface,应用编程接口)函数
HMODULE=GetModuleHandle(“功能模块的文件名”),获取到需要修改的功能模块的内存地
址HMODULE,其中,“功能模块的文件名”表示该函数传入的参数,转入步骤S402。

步骤S402:根据实际需要修改的内存地址=需要修改的功能模块的内存地址
HMODULE+需要修改的内存偏移(即差异数据的内存偏移),得到实际需要修改的内存地址,
转入步骤S403。

步骤S403:通过调用Windows的API函数VirtualProtect,将实际需要修改的内存
地址的内存属性设置为可改写,转入步骤S404。

具体来说,调用的VirtualProtect函数具体为:

BOOL WINAPI VirtualProtect(LPVOID lpAddress,SIZE_T dwSize,DWORD
flNewProtect,PDWORD lpflOldProtect);

其中,lpAddress填入得到的实际需要修改的内存地址;

dwSize填入需要修改的数据长度,即差异数据长度;

flNewProtect填入“PAGE_READWRITE”,用来设置为可改写;

lpflOldProtect用来保存内存块原先的内存属性。

步骤S404:待内存属性设置完成后,将服务器下发的差异数据拷贝到实际需要修
改的内存地址处,即实现了对PC客户端软件的实时修复/更新。

步骤S405:待差异数据拷贝完成后,再次调用Windows的API函数VirtualProtect
将设置的内存属性改回原来的内存属性值(即不可改写),结束。

参见图2所示,本发明实施例还提供一种实现PC客户端软件实时修复的装置,包括
设置于服务器端的功能模块文件对比单元、配置文件生成单元、配置文件下发单元;以及设
置于PC客户端的内存数据修改单元。

其中,功能模块文件对比单元用于:获取PC客户端软件中出现错误的功能模块文
件,将该功能模块文件与服务器端保存的相应的功能模块文件进行对比,找出差异数据并
记录。其具体流程为:获取PC客户端软件中出现错误的功能模块文件;通过二进制文件对比
工具将该功能模块文件与服务器端保存的相应的功能模块文件进行对比,查找出两个文件
的差异数据;记录下差异数据的文件偏移地址,并记录下服务器端保存的相应的功能模块
文件中的差异数据和差异数据长度。

配置文件生成单元用于:根据功能模块文件对比单元找出的差异数据,生成配置
文件。其具体流程为:将功能模块文件对比单元记录的差异数据的文件偏移地址转换为功
能模块的内存偏移,得到差异数据的内存偏移;根据得到的差异数据的内存偏移以及功能
模块文件对比单元记录的差异数据、差异数据长度,生成PC客户端需要的配置文件。

更进一步地,所述配置文件生成单元得到差异数据的内存偏移的具体流程为:找
到文件偏移所属功能模块的段的相对内存地址;根据内存偏移=文件偏移所属功能模块的
段的相对内存地址+(差异数据的文件偏移地址-文件偏移在该文件的段的偏移),得到差异
数据的内存偏移。

配置文件下发单元用于:将生成的配置文件下发至PC客户端。

内存数据修改单元用于:根据服务器端发来的配置文件,动态修改PC客户端软件
中相应功能模块的内存数据。其具体流程为:所述内存数据修改单元收到服务器端发来的
配置文件后,解析出配置文件中的字段;并通过调用Windows的API函数HMODULE=
GetModuleHandle(“功能模块的文件名”),获取到需要修改的功能模块的内存地址;根据实
际需要修改的内存地址=需要修改的功能模块的内存地址+差异数据的内存偏移,得到实
际需要修改的内存地址;通过调用Windows的API函数VirtualProtect,将实际需要修改的
内存地址的内存属性设置为可改写;将服务器下发的差异数据拷贝到实际需要修改的内存
地址处;再次调用Windows的API函数VirtualProtect,将设置的内存属性改回原来的内存
属性值。

需要说明的是:上述实施例提供的装置在进行操作时,仅以上述各功能单元的划
分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即
将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离
本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护
范围之内。

本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

关 键 词:
一种 实现 PC 客户端 软件 实时 修复 方法 装置
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:一种实现PC客户端软件实时修复的方法及装置.pdf
链接地址:http://zh228.com/p-6019599.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');