CN106055933A - 一种客户端软件代码校验的方法及系统 - Google Patents
一种客户端软件代码校验的方法及系统 Download PDFInfo
- Publication number
- CN106055933A CN106055933A CN201610475547.6A CN201610475547A CN106055933A CN 106055933 A CN106055933 A CN 106055933A CN 201610475547 A CN201610475547 A CN 201610475547A CN 106055933 A CN106055933 A CN 106055933A
- Authority
- CN
- China
- Prior art keywords
- client
- byte
- client software
- internal memory
- address
- 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
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000012795 verification Methods 0.000 claims description 37
- 238000012937 correction Methods 0.000 claims description 7
- 230000008439 repair process Effects 0.000 claims description 7
- 230000006870 function Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 5
- 230000000750 progressive effect Effects 0.000 claims description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
Classifications
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
Abstract
本发明公开了一种客户端软件代码校验的方法,涉及客户端软件安全领域,包括S1,客户端软件启动后,通过服务器获取需要校验的客户端组件的名称列表;S2,读取需要校验的客户端组件的原始路径,按照内存对齐的方式将客户端组件的原始代码段加载到内存中,并修正重定位信息;S3,获取客户端软件运行时加载到内存的地址,将客户端软件加载到内存中的代码段与原始代码段进行逐个字节进行校验;若校验不一致,进步骤S4,若校验一致,结束;S4,将不一致的字节在该客户端组件中的地址上报到服务器,并上报不一样的字节到服务器,结束。本发明可精确将被修改的位置和被修改的内容上报至服务器。本发明还公开了一种客户端软件代码校验系统。
Description
技术领域
本发明涉及客户端软件安全领域,具体涉及一种客户端软件代码校验的方法及系统。
背景技术
目前,计算机客户端软件在用户电脑上存在被黑客修改其中的代码来实现某种非法功能的方法。如试用软件通过修改其判断日期的逻辑来达到用不过期。如免费版本限制了某些功能,通过修改限制判断逻辑来实现打开收费功能。现在常用的做法是通过对软件代码进行循环冗余码校验值比对来对软件代码进行合法校验,来判断其是否有被修改,从而能对修改代码的用户对其进行惩罚。此方法不足点在于:一个计算hash有一定的概率会产生碰撞,从而漏过了被修改过得代码没有被检测到;同时,服务端并不知道客户端软件具体哪个位置被修改了,从而比较容易引起误判。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种客户端软件代码校验的方法及系统,可精确将被修改的位置和被修改的内容上报至服务器,以待服务器处理。
为达到以上目的,本发明采取的技术方案是:一种客户端软件代码校验的方法,包括:
S1,客户端软件启动后,通过服务器获取需要校验的客户端组件的名称列表;
S2,读取需要校验的客户端组件的原始路径,按照内存对齐的方式将客户端组件的原始代码段加载到内存中,并修正客户端组件的原始代码段的重定位信息;
S3,获取客户端软件运行时加载到内存的地址,读取客户端软件加载到内存中的代码段,将客户端软件加载到内存中的代码段与原始代码段进行逐个字节进行校验;若校验不一致,进步骤S4,若校验一致,结束;
S4,将不一致的字节在该客户端组件中的地址上报到服务器,并上报客户端组件的名称及被修改后的内容至服务器,结束。
在上述技术方案的基础上,所述校验不一致的字节在该客户端组件中的地址等于该字节的内存地址减去该客户端组件在内存中加载的起始地址。
在上述技术方案的基础上,步骤S3中校验的过程包括:
S301,获取客户端软件运行时载到内存的地址,获取客户端软件运行时加载到内存的起始地址codeAddress1,获取其代码段的长度N;获取步骤S2中加载的原始代码段的起始地址codeAddress2;客户端软件运行时加载到内存的代码段的每个字节的地址为codeAddress1[i],其中i为从1循环至N的整数;步骤S2中加载的原始代码段的每个字节的地址为codeAddress2[i],其中i为从1循环至N的整数;
S302,从i=1开始逐个字节比较codeAddress1[i]对应的字节和codeAddress2[i]对应的字节是否一致,直至i=N,全部字节校验完毕,结束。
在上述技术方案的基础上,需检验的客户端组件为多个。
本发明还包括一种客户端软件代码校验系统,包括:
组件名获取模块,用于客户端软件启动后,通过服务器获取需要校验的客户端组件的名称列表;
原始代码段加载模块,用于读取需要校验的客户端组件的原始路径,按照内存对齐的方式将客户端组件的原始代码段加载到内存中;
代码段校验模块,用于获取客户端组件加载到内存的地址,读取客户端组件加载到内存中的代码段,与原始代码段加载模块加载到内存中的原始代码段进行逐个字节进行校验;
校验结果上报模块,用于将经代码段校验模块校验不一致的字节在该客户端组件中的地址上报到服务器,并上报客户端组件的名称及被修改后的内容至服务器。
在上述技术方案的基础上,所述原始代码段加载模块包括重定位修复模块,所述重定位修复模块用于修正原始代码段加载模块加载到内存中的客户端组件的原始代码段的重定位信息。
在上述技术方案的基础上,所述校验不一致的字节在该客户端组件中的地址等于该字节的内存地址减去该客户端组件在内存中加载的起始地址。
在上述技术方案的基础上,所述客户端软件代码校验系统还包括上报结果分析模块,用于根据校验结果上报模块上报到服务器的不一致的字节在该客户端组件中的地址、客户端组件的名称及被修改后的内容分析被修改后的内容的功能。
与现有技术相比,本发明的优点在于:
1、本发明对客户端组件代码段逐个字节进行对比,从而不存在漏掉被修改的代码。
2、本发明通过校验准确找出不一致的字节的地址并将客户端组件的名称及被修改后的内容上报至服务器,即可精确将被修改的位置和被修改的内容上报至服务器,从而服务器可以进行进一步判断和处理。
附图说明
图1为本发明实施例中客户端软件代码校验的方法的流程示意图;
图2为本发明实施例中客户端软件代码校验系统的结构示意图。
图中:1-组件名获取模块,2-原始代码段加载模块,3-重定位修复模块,4-代码段校验模块,5-校验结果上报模块,6-上报结果分析模块。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例提供一种客户端软件代码校验的方法,包括以下步骤:
S1,客户端软件启动后,通过服务器获取需要校验的安装与运行客户端软件所需的客户端组件的名称列表;需检验的客户端组件为多个;
S2,读取需要校验的客户端组件的原始路径,按照内存对齐的方式将客户端组件的原始代码段加载到内存中,并修正客户端组件的原始代码段的重定位信息;
S3,获取客户端软件运行时加载到内存的地址,读取客户端软件加载到内存中的代码段,将客户端软件加载到内存中的代码段与原始代码段进行逐个字节进行校验;若校验不一致,进步骤S4,若校验一致,结束;
S4,将不一致的字节在该客户端组件中的地址上报到服务器,并上报客户端组件的名称及被修改后的内容至服务器,结束。校验不一致的字节在该客户端组件中的地址等于该字节的内存地址减去该客户端组件在内存中加载的起始地址。
其中,步骤S3中校验的过程包括:
S301,获取客户端软件运行时载到内存的地址,获取客户端软件运行时加载到内存的起始地址codeAddress1,获取其代码段的长度N;获取步骤S2中加载的原始代码段的起始地址codeAddress2;客户端软件运行时加载到内存的代码段的每个字节的地址为codeAddress1[i],其中i为从1循环至N的整数;步骤S2中加载的原始代码段的每个字节的地址为codeAddress2[i],其中i为从1循环至N的整数;
S302,从i=1开始逐个字节比较codeAddress1[i]对应的字节和codeAddress2[i]对应的字节是否一致,直至i=N,全部字节校验完毕,结束。
本发明还公开了一种客户端软件代码校验系统,包括:组件名获取模块1,用于客户端软件启动后,通过服务器获取需要校验的客户端组件的名称列表;原始代码段加载模块2,用于读取需要校验的客户端组件的原始路径,按照内存对齐的方式将客户端组件的原始代码段加载到内存中;原始代码段加载模块2包括一重定位修复模块3,重定位修复模块3用于修正原始代码段加载模块2加载到内存中的客户端组件的原始代码段的重定位信息;代码段校验模块4,用于获取客户端组件加载到内存的地址,读取客户端组件加载到内存中的代码段,与原始代码段加载模块2加载到内存中的原始代码段进行逐个字节进行校验;校验结果上报模块5,用于将经代码段校验模块4校验不一致的字节在该客户端组件中的地址上报到服务器,并上报客户端组件的名称及被修改后的内容至服务器。校验不一致的字节在该客户端组件中的地址等于该字节的内存地址减去该客户端组件在内存中加载的起始地址。客户端软件代码校验系统还包括上报结果分析模块6,用于根据校验结果上报模块5上报到服务器的不一致的字节在该客户端组件中的地址、客户端组件的名称及被修改后的内容分析被修改后的内容的功能。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (8)
1.一种客户端软件代码校验的方法,其特征在于,包括以下步骤:
S1,客户端软件启动后,通过服务器获取需要校验的客户端组件的名称列表;
S2,读取需要校验的客户端组件的原始路径,按照内存对齐的方式将客户端组件的原始代码段加载到内存中,并修正客户端组件的原始代码段的重定位信息;
S3,获取客户端软件运行时加载到内存的地址,读取客户端软件加载到内存中的代码段,将客户端软件加载到内存中的代码段与原始代码段进行逐个字节进行校验;若校验不一致,进步骤S4,若校验一致,结束;
S4,将不一致的字节在该客户端组件中的地址上报到服务器,并上报客户端组件的名称及被修改后的内容至服务器,结束。
2.如权利要求1所述的客户端软件代码校验的方法,其特征在于:所述校验不一致的字节在该客户端组件中的地址等于该字节的内存地址减去该客户端组件在内存中加载的起始地址。
3.如权利要求1所述的客户端软件代码校验的方法,其特征在于:步骤S3中校验的过程包括:
S301,获取客户端软件运行时载到内存的地址,获取客户端软件运行时加载到内存的起始地址codeAddress1,获取其代码段的长度N;获取步骤S2中加载的原始代码段的起始地址codeAddress2;客户端软件运行时加载到内存的代码段的每个字节的地址为codeAddress1[i],其中i为从1循环至N的整数;步骤S2中加载的原始代码段的每个字节的地址为codeAddress2[i],其中i为从1循环至N的整数;
S302,从i=1开始逐个字节比较codeAddress1[i]对应的字节和codeAddress2[i]对应的字节是否一致,直至i=N,全部字节校验完毕,结束。
4.如权利要求1所述的客户端软件代码校验的方法,其特征在于:需检验的客户端组件为多个。
5.一种客户端软件代码校验系统,其特征在于,包括:
组件名获取模块(1),用于客户端软件启动后,通过服务器获取需要校验的客户端组件的名称列表;
原始代码段加载模块(2),用于读取需要校验的客户端组件的原始路径,按照内存对齐的方式将客户端组件的原始代码段加载到内存中;
代码段校验模块(4),用于获取客户端组件加载到内存的地址,读取客户端组件加载到内存中的代码段,与原始代码段加载模块(2)加载到内存中的原始代码段进行逐个字节进行校验;
校验结果上报模块(5),用于将经代码段校验模块(4)校验不一致的字节在该客户端组件中的地址上报到服务器,并上报客户端组件的名称及被修改后的内容至服务器。
6.如权利要求5所述一种客户端软件代码校验系统,其特征在于:所述原始代码段加载模块(2)包括重定位修复模块(3),所述重定位修复模块(3)用于修正原始代码段加载模块(2)加载到内存中的客户端组件的原始代码段的重定位信息。
7.如权利要求6所述一种客户端软件代码校验系统,其特征在于:所述校验不一致的字节在该客户端组件中的地址等于该字节的内存地址减去该客户端组件在内存中加载的起始地址。
8.如权利要求7所述一种客户端软件代码校验系统,其特征在于:所述客户端软件代码校验系统还包括上报结果分析模块(6),用于根据校验结果上报模块(5)上报到服务器的不一致的字节在该客户端组件中的地址、客户端组件的名称及被修改后的内容分析被修改后的内容的功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610475547.6A CN106055933B (zh) | 2016-06-24 | 2016-06-24 | 一种客户端软件代码校验的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610475547.6A CN106055933B (zh) | 2016-06-24 | 2016-06-24 | 一种客户端软件代码校验的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106055933A true CN106055933A (zh) | 2016-10-26 |
CN106055933B CN106055933B (zh) | 2019-08-23 |
Family
ID=57166570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610475547.6A Active CN106055933B (zh) | 2016-06-24 | 2016-06-24 | 一种客户端软件代码校验的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106055933B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598854A (zh) * | 2016-12-08 | 2017-04-26 | 武汉斗鱼网络科技有限公司 | 一种实时获取pc客户端软件数据的方法及装置 |
CN106682512A (zh) * | 2016-11-25 | 2017-05-17 | 腾讯科技(深圳)有限公司 | 一种防止程序被修改的方法及其装置、系统 |
CN107038353A (zh) * | 2017-03-28 | 2017-08-11 | 武汉斗鱼网络科技有限公司 | 软件程序的校验保护方法及系统 |
CN107194250A (zh) * | 2017-03-31 | 2017-09-22 | 武汉斗鱼网络科技有限公司 | 内存代码的完整性校验方法及装置 |
CN107798247A (zh) * | 2017-11-24 | 2018-03-13 | 长沙理工大学 | 一种基于嵌入式系统的计量器具校准方法 |
CN108256353A (zh) * | 2018-01-11 | 2018-07-06 | 武汉斗鱼网络科技有限公司 | 一种数据完整性校验方法、装置及客户端 |
CN108875372A (zh) * | 2017-12-29 | 2018-11-23 | 哈尔滨安天科技股份有限公司 | 一种代码检测方法、装置、电子设备及存储介质 |
CN109214180A (zh) * | 2017-06-30 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 一种内存代码的校验方法及装置 |
CN109635567A (zh) * | 2019-01-29 | 2019-04-16 | 腾讯科技(深圳)有限公司 | 针对应用客户端的校验方法、装置及服务器平台 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1896957A (zh) * | 2005-07-14 | 2007-01-17 | 中兴通讯股份有限公司 | 一种定位虚拟操作系统内存泄漏的方法 |
US7184306B2 (en) * | 2000-02-17 | 2007-02-27 | Sandisk Corporation | Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
CN101290571A (zh) * | 2007-04-16 | 2008-10-22 | 阮建辉 | 一种生成可被动态装载执行的文件的方法 |
CN101458638A (zh) * | 2007-12-13 | 2009-06-17 | 安凯(广州)软件技术有限公司 | 一种用于嵌入式系统的大规模数据验证方法 |
CN101576838A (zh) * | 2009-05-13 | 2009-11-11 | 北京中星微电子有限公司 | 一种检测内存的方法和装置 |
CN105233499A (zh) * | 2015-09-25 | 2016-01-13 | 广州华多网络科技有限公司 | 一种游戏代码校验的方法及游戏客户端、系统 |
-
2016
- 2016-06-24 CN CN201610475547.6A patent/CN106055933B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7184306B2 (en) * | 2000-02-17 | 2007-02-27 | Sandisk Corporation | Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
CN1896957A (zh) * | 2005-07-14 | 2007-01-17 | 中兴通讯股份有限公司 | 一种定位虚拟操作系统内存泄漏的方法 |
CN101290571A (zh) * | 2007-04-16 | 2008-10-22 | 阮建辉 | 一种生成可被动态装载执行的文件的方法 |
CN101458638A (zh) * | 2007-12-13 | 2009-06-17 | 安凯(广州)软件技术有限公司 | 一种用于嵌入式系统的大规模数据验证方法 |
CN101576838A (zh) * | 2009-05-13 | 2009-11-11 | 北京中星微电子有限公司 | 一种检测内存的方法和装置 |
CN105233499A (zh) * | 2015-09-25 | 2016-01-13 | 广州华多网络科技有限公司 | 一种游戏代码校验的方法及游戏客户端、系统 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106682512A (zh) * | 2016-11-25 | 2017-05-17 | 腾讯科技(深圳)有限公司 | 一种防止程序被修改的方法及其装置、系统 |
CN106682512B (zh) * | 2016-11-25 | 2020-07-28 | 腾讯科技(深圳)有限公司 | 一种防止程序被修改的方法及其装置、系统 |
CN106598854B (zh) * | 2016-12-08 | 2019-08-02 | 武汉斗鱼网络科技有限公司 | 一种实时获取pc客户端软件数据的方法及装置 |
CN106598854A (zh) * | 2016-12-08 | 2017-04-26 | 武汉斗鱼网络科技有限公司 | 一种实时获取pc客户端软件数据的方法及装置 |
CN107038353A (zh) * | 2017-03-28 | 2017-08-11 | 武汉斗鱼网络科技有限公司 | 软件程序的校验保护方法及系统 |
CN107038353B (zh) * | 2017-03-28 | 2020-07-31 | 武汉斗鱼网络科技有限公司 | 软件程序的校验保护方法及系统 |
CN107194250A (zh) * | 2017-03-31 | 2017-09-22 | 武汉斗鱼网络科技有限公司 | 内存代码的完整性校验方法及装置 |
CN109214180A (zh) * | 2017-06-30 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 一种内存代码的校验方法及装置 |
CN109214180B (zh) * | 2017-06-30 | 2021-04-27 | 武汉斗鱼网络科技有限公司 | 一种内存代码的校验方法及装置 |
CN107798247A (zh) * | 2017-11-24 | 2018-03-13 | 长沙理工大学 | 一种基于嵌入式系统的计量器具校准方法 |
CN108875372A (zh) * | 2017-12-29 | 2018-11-23 | 哈尔滨安天科技股份有限公司 | 一种代码检测方法、装置、电子设备及存储介质 |
CN108256353A (zh) * | 2018-01-11 | 2018-07-06 | 武汉斗鱼网络科技有限公司 | 一种数据完整性校验方法、装置及客户端 |
CN108256353B (zh) * | 2018-01-11 | 2021-01-01 | 武汉斗鱼网络科技有限公司 | 一种数据完整性校验方法、装置及客户端 |
CN109635567A (zh) * | 2019-01-29 | 2019-04-16 | 腾讯科技(深圳)有限公司 | 针对应用客户端的校验方法、装置及服务器平台 |
CN109635567B (zh) * | 2019-01-29 | 2022-12-16 | 腾讯科技(深圳)有限公司 | 针对应用客户端的校验方法、装置及服务器平台 |
Also Published As
Publication number | Publication date |
---|---|
CN106055933B (zh) | 2019-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106055933A (zh) | 一种客户端软件代码校验的方法及系统 | |
CN109359468B (zh) | 漏洞检测方法、装置及设备 | |
US10372914B2 (en) | Validating firmware on a computing device | |
US8978160B2 (en) | Method for selective software rollback | |
CN103309768B (zh) | 系统文件修复方法和装置 | |
US8881308B2 (en) | Method to enable development mode of a secure electronic control unit | |
CN104052818B (zh) | 一种移动终端的版本升级方法及装置 | |
CN103368987B (zh) | 云服务器、应用程序的审核认证及管理系统和方法 | |
CN103530534B (zh) | 一种基于签名验证的Android程序ROOT授权方法 | |
US9392011B2 (en) | Web vulnerability repair apparatus, web server, web vulnerability repair method, and program | |
CN104408370A (zh) | 安卓系统安全性验证方法及其验证装置 | |
CN102509049A (zh) | 一种程序合法性验证方法和系统 | |
CN103677892A (zh) | 在安全电子控制单元中启用特殊优先模式的授权方案 | |
CN104715203A (zh) | 信息泄漏漏洞的定量分析的方法和系统 | |
JP2018505506A (ja) | 機械ベースの命令編集 | |
CN109074295B (zh) | 具有真实性的数据恢复 | |
CN106020858A (zh) | 一种应用程序的下载安装方法、终端和系统 | |
KR20110023124A (ko) | 차량용 전자제어장치의 소프트웨어 검증 장치 및 방법 | |
US20130166989A1 (en) | Vehicle data abnormality determination device | |
CN111459496A (zh) | 一种防篡改的程序文件的生成方法、设备的升级方法 | |
CN104680043B (zh) | 一种可执行文件的保护方法及装置 | |
CN111722998A (zh) | 代码的质量控制方法、系统、设备及存储介质 | |
CN111814138B (zh) | 一种基于云平台的软件安全管理系统 | |
US9824175B1 (en) | Method and system of evaluation of validity of a refinement rule for a hardware emulation | |
CN113468863A (zh) | 文件校验的方法、装置、电子设备和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231201 Address after: Room 311, Building 2, No. 328 Pingjiang Road, Jishan Street, Yuecheng District, Shaoxing City, Zhejiang Province, 312000 Patentee after: Zhejiang Zall Software Co.,Ltd. Address before: 430000 Wuhan Donghu Development Zone, Wuhan, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |