CN107194250A - 内存代码的完整性校验方法及装置 - Google Patents

内存代码的完整性校验方法及装置 Download PDF

Info

Publication number
CN107194250A
CN107194250A CN201710206433.6A CN201710206433A CN107194250A CN 107194250 A CN107194250 A CN 107194250A CN 201710206433 A CN201710206433 A CN 201710206433A CN 107194250 A CN107194250 A CN 107194250A
Authority
CN
China
Prior art keywords
code
client
check
object identifier
unique mark
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
Application number
CN201710206433.6A
Other languages
English (en)
Inventor
周志刚
张文明
陈少杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710206433.6A priority Critical patent/CN107194250A/zh
Publication of CN107194250A publication Critical patent/CN107194250A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例公开了一种内存代码的完整性校验方法及装置,其中,所述方法包括:将预先设置的至少两个校验代码发送至客户端,以供所述客户端从所述校验代码中选取目标校验代码对所述客户端的指定内存代码进行校验;获取所述客户端返回的客户端校验结果,所述客户端校验结果中包括所述目标校验代码的返回值和唯一标识;根据所述目标校验代码的唯一标识将所述客户端校验结果与服务端对应的目标校验结果进行匹配;若所述客户端校验结果与所述目标校验结果一致,则确定所述客户端的内存代码通过完整性校验。本发明能够极大的提高HACK修改内存代码的门槛,确保客户端的内存代码完整性校验的准确率,提高安全性。

Description

内存代码的完整性校验方法及装置
技术领域
本发明涉及互联网技术领域,尤其涉及一种内存代码的完整性校验方法及装置。
背景技术
随着智能移动终端功能的增强,其已经成为人们生活中的必备品。为了满足用户的各种需求,互联网上存在基于智能移动终端开发的各种各样的客户端应用软件,例如各种视频直播、阅读、游戏应用等。
目前,对于终端设备的客户端软件其核心功能都在客户端软件代码中进行实现。比如对于一些客户端工具软件会有些收费功能,客户端逻辑中会判断当前用户是否是一个VIP用户,只有是VIP用户该功能才能够使用。而对于一些HACK通过反汇编方式逆向分析软件的这个功能的实现逻辑,通过修改客户端代码中对VIP判断的进程的内存代码,从而绕过了VIP用户的判断,使得非VIP用户也可以使用该功能。例如,对于网络游戏来说,HACK可以通过修改客户端内存中的代码来实现多种多样的游戏“外挂”功能,比如通过修改游戏中的碰撞检测逻辑,从而可以实现游戏角色的穿墙功能和格斗游戏的“无敌”功能,最终给游戏开发厂商带来了巨大的利益损失。再例如,对于直播软件客户端来说,HACK也可以通过修改内存代码来实现一些收费功能的破解。现有技术中,各个软件开发商都有对代码进行完整性检查,检查的方法大多都是通过一个HASH(HASH,就是把任意长度的输入通过散列算法,变换成固定长度的输出,该输出就是散列值)函数来计算一段内存的HASH值,并将结果上报服务器,服务器来判断结果是否正确。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
现有技术中的内存代码的完整性校验方法采用单点校验,很容易被HACK绕过,具体的HACK通过修改校验的代码本身的逻辑从而绕过了对内存代码的HASH,可见,现有的内存代码的完整性校验方法仍然存在安全风险。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的内存代码的完整性校验方法及装置。
本发明的一个方面,提供了一种内存代码的完整性校验方法,包括:
将预先设置的至少两个校验代码发送至客户端,以供所述客户端从所述校验代码中选取目标校验代码对所述客户端的指定内存代码进行校验;
获取所述客户端返回的客户端校验结果,所述客户端校验结果中包括所述目标校验代码的返回值和唯一标识;
根据所述目标校验代码的唯一标识将所述客户端校验结果与服务端对应的目标校验结果进行匹配;
若所述客户端校验结果与所述目标校验结果一致,则确定所述客户端的内存代码通过完整性校验。
可选地,在所述将预先设置的至少两个校验代码发送至客户端之前,所述方法还包括:
预先采用预设的校验算法生成对应的校验代码,并为每一校验代码设置有唯一标识;
所述将预先设置的至少两个校验代码发送至客户端,具体包括:将带有唯一标识的各个校验代码打包后发送到客户端。
可选地,所述将带有唯一标识的各个校验代码打包后发送到客户端,包括:
将带有唯一标识的各个校验代码分别进行编译,获取每一校验代码对应的汇编代码;
对各个校验代码对应的汇编代码进行加密,并将加密后的汇编代码打包后发送到所述客户端。
可选地,所述方法还包括:
对所述校验代码进行更新,和/或,对所述每一校验代码设置的唯一标识进行更新。
可选地,所述客户端从所述校验代码中选取目标校验代码对所述客户端的指定内存代码进行校验,包括:所述客户端从所述校验代码中选取预设数量的目标校验代码分别对所述客户端的指定内存代码进行校验,或,所述客户端从所述校验代码中选取预设数量的目标校验代码并按照预设的校验逻辑对所述客户端的指定内存代码和其他校验代码进行校验。
可选地,当所述客户端从所述校验代码中选取预设数量的目标校验代码分别对所述客户端的指定内存代码进行校验时,所述根据所述目标校验代码的唯一标识将所述客户端校验结果与服务端对应的目标校验结果进行匹配,包括:
根据各个目标校验代码的唯一标识查找服务端预存的采用各个目标校验代码对完整的客户端进行校验的校验值;
根据客户端校验结果中每一目标校验代码的返回值与各个目标校验代码对应的校验值进行匹配。
本发明的另一个方面,提供了一种内存代码的完整性校验装置,包括:
通信模块,用于将预先设置的至少两个校验代码发送至客户端,以供所述客户端从所述校验代码中选取目标校验代码对所述客户端的指定内存代码进行校验;
获取模块,用于获取所述客户端返回的客户端校验结果,所述客户端校验结果中包括所述目标校验代码的返回值和唯一标识;
匹配模块,用于根据所述目标校验代码的唯一标识将所述客户端校验结果与服务端对应的目标校验结果进行匹配;
判定模块,用于若所述客户端校验结果与所述目标校验结果一致,则确定所述客户端的内存代码通过完整性校验。
可选地,所述装置还包括:
生成模块,用于在所述将预先设置的至少两个校验代码发送至客户端之前,预先采用预设的校验算法生成对应的校验代码,并为每一校验代码设置有唯一标识;
所述通信模块,具体用于将带有唯一标识的各个校验代码打包后发送到客户端。
可选地,所述通信模块包括:
编译单元,用于将带有唯一标识的各个校验代码分别进行编译,获取每一校验代码对应的汇编代码;
加密单元,用于对各个校验代码对应的汇编代码进行加密,并将加密后的汇编代码打包后发送到所述客户端。
可选地,所述装置还包括:
更新模块,用于对所述校验代码进行更新,和/或,对所述每一校验代码设置的唯一标识进行更新。
本发明实施例提供的内存代码的完整性校验方法及装置,通过将校验内存的校验代码通过服务器下发到客户端,以供客户端根据接收到的校验代码进行完整性校验,实现在客户端的发布程序中无需携带固定的校验代码即可完成客户端的完整性校验,从而比较好的起到隐藏校验代码的功能,提高安全性;同时,本发明还能够比较方便的实现校验算法的随时更新,而且在下发的内存校验代码中,使用了多套校验代码去校验客户端的指定内存代码,从而极大的提高了HACK修改内存代码的门槛,进一步确保客户端完整性校验的准确率,提高安全性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例的一种内存代码的完整性校验方法的流程图;
图2为本发明实施例的另一种内存代码的完整性校验方法的流程图;
图3为本发明实施例的一种内存代码的完整性校验装置的结构示意图;
图4为本发明实施例的另一种内存代码的完整性校验装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
图1示意性示出了本发明一个实施例的内存代码的完整性校验方法的流程图。参照图1,本发明实施例的内存代码的完整性校验方法具体包括以下步骤:
步骤S11、将预先设置的至少两个校验代码发送至客户端,以供所述客户端从所述校验代码中选取目标校验代码对所述客户端的指定内存代码进行校验。
其中,每一校验代码可通过校验算法,例如HASH函数生成,而且各个校验代码对应的HASH函数可以是不同的,常用的HASH算法包括MD5、MD4、CRC32、SHA1等等。
在具体实施例中,为了进一步地提高HACK成功修改客户端内存代码的门槛,客户端从接收到的多个校验代码中选取目标校验代码对客户端的指定内存代码进行校验,包括:客户端从校验代码中选取预设数量的目标校验代码分别对所述客户端的指定内存代码进行校验,或是,所述客户端从所述校验代码中选取预设数量的目标校验代码并按照预设的校验逻辑对所述客户端的指定内存代码和其他校验代码进行校验。
步骤S12、获取所述客户端返回的客户端校验结果,所述客户端校验结果中包括所述目标校验代码的返回值和唯一标识。在具体实施例中所述的唯一标识可以是校验代码对应的序列编号或其他可以唯一标示一个校验代码的标识。
步骤S13、根据所述目标校验代码的唯一标识将所述客户端校验结果与服务端对应的目标校验结果进行匹配。
在实际应用中,当所述客户端从所述校验代码中选取预设数量的目标校验代码分别对所述客户端的指定内存代码进行校验时,所述根据所述目标校验代码的唯一标识将所述客户端校验结果与服务端对应的目标校验结果进行匹配,具体包括:根据各个目标校验代码的唯一标识查找服务端预存的采用各个目标校验代码对完整的客户端进行校验的校验值;根据客户端校验结果中每一目标校验代码的返回值与各个目标校验代码对应的校验值进行匹配。
在一个具体实施例中,当所述客户端从所述校验代码中选取预设数量的目标校验代码并按照预设的校验逻辑对所述客户端的指定内存代码和其他校验代码进行校验时,所述根据所述目标校验代码的唯一标识将所述客户端校验结果与服务端对应的目标校验结果进行匹配的具体实现如下:目标校验代码会校验2处代码,一段是客户端需要校验的指定内存代码,另一段是其他的校验代码本身,假设有3套校验代码A、B、C,如果目标校验代码为A,那么A代码会校验B代码和客户端代码,如果目标校验代码为B,那么B代码会校验C代码和客户端代码,如果目标校验代码为C,那么C代码会校验A代码和客户端代码,通过这种方式可以产生一个循环的网状校验,使得校验代码本身也是有被校验的逻辑,从而极大的提高了HACK修改内存代码的门槛。
在实际应用中,客户端在返回客户端校验结果时,还可以调用加密算法来对该客户端校验结果数据进行加密,以提高安全性。相应的,服务器在收到客户端返回的客户端校验结果后,首先调用相应的解密算法来对客户端校验结果进行解密,解密后从上报的校验结果数据中解析出每一目标校验代码的唯一标识和其计算的返回值,服务器则可以根据事先使用正确的客户端计算出的目标校验结果存储作为判断依据,从而实现对其他用户上报的校验结果和服务器存储的目标校验结果的一致性判断。
步骤S14、若所述客户端校验结果与所述目标校验结果一致,则确定所述客户端的内存代码通过完整性校验。
在实际应用中,如果所述客户端校验结果与所述目标校验结果一致,则说明客户端的代码没有被修改,如果所述客户端校验结果与所述目标校验结果不一致,则说明有HACK对客户端的代码进行了修改,从而可对该客户端执行相应的处理操作。
本发明实施例提供的内存代码的完整性校验方法,通过将校验内存的校验代码通过服务器下发到客户端,以供客户端根据接收到的校验代码进行完整性校验,实现在客户端的发布程序中无需携带固定的校验代码即可完成客户端的完整性校验,从而比较好的起到隐藏校验代码的功能,提高安全性;同时,本发明还能够比较方便的实现校验算法的随时更新,而且在下发的内存校验代码中,使用了多套校验代码去校验客户端的指定内存代码,从而极大的提高了HACK修改内存代码的门槛,进一步确保客户端完整性校验的准确率,提高安全性。
在本发明的一个可选实施例中,如图2所示,在所述将预先设置的至少两个校验代码发送至客户端之前,所述方法还包括:
步骤S10,预先采用预设的校验算法生成对应的校验代码,并为每一校验代码设置有唯一标识。
本发明实施例,通过编写多套内存的校验代码,从而可以有多套代码来校验客户端比较重要的内存代码,也可以产生一个循环校验来对校验代码本身进行校验。而且每套校验代码使用的HASH函数可以是不同的,从而产生多样的校验结果,也提高了其复杂度。常用的HASH算法包括MD5、MD4、CRC32、SHA1等等。同时也可以对上述HASH算法进行稍微的加密从而可以变换出多套HASH算法。在一个具体实施例中,可以对于每套HASH算法本文进行编号,从而可以区分出是那套在进行校验以及结果上报中包含HASH算法的编号。具体的一个HASH函数接口可以设计为如下伪代码:
void CodeCheck1(int nAddres1,int nLen1,int nAddres2,int nLen2,int&nNo,void*pResult)
{
}
其中,参数CodeCheck1是该HASH函数的名字。
其中,参数int nAddres1标示校验的第一处代码的内存地址。
其中,参数int nLen1标示校验的第一处代码的内存长度。
其中,参数int nAddres2标示校验的第二处代码的内存地址。
其中,参数int nLen2标示校验的第二处代码的内存长度。
其中,参数int&nNo用来返回该算法的编号。
其中,参数void*pResult用来返回HASH的2处校验结果。
具体的,校验逻辑则可以是CRC32函数,其实现如下:
Int nResult1=Crc32.check(nAddres1,nLen1);
Int nResult2=Crc32.check(nAddres2,nLen2);
其中nResult1则是校验客户端的第一处指定内存代码的结果,nResult2则是校验客户端的第二处指定内存代码的结果。然后将2处结果一去打包到接口的pResult中。本发明实施例通过使用不同的校验代码实现对客户端的指定内存代码,从而可以实现多套校验算法。
相应的,所述步骤S11中的将预先设置的至少两个校验代码发送至客户端,具体包括:将带有唯一标识的各个校验代码打包后发送到客户端。
其中,所述将带有唯一标识的各个校验代码打包后发送到客户端,具体包括:将带有唯一标识的各个校验代码分别进行编译,获取每一校验代码对应的汇编代码;对各个校验代码对应的汇编代码进行加密,并将加密后的汇编代码打包后发送到所述客户端。
在一个具体实施例中,在预先采用多种校验算法生成对应的多个校验代码之后,具体可以通过在Windows平台上使用编译工具编译后,会生成对应的每个函数的原始汇编代码,通过取出每套校验代码的原始汇编代码作为数据加密后一起打包下发到客户端(类似于shellcode代码,将汇编代码作为数据来保存和转发)。本实施例,通过将校验代码编译为数据下发,实现在客户端的发布程序中无需携带固定的校验代码即可完成客户端的完整性校验,从而比较好的起到隐藏校验代码的功能,进而避免被HACK分析,同时对各个校验代码对应的汇编代码进行加密,还可以进一步的加强其在网络传输中的安全性。而且,服务器在将下发的代码打包后,还可以使用AES加密算法来对数据进一步的加密,以实现将所有的校验代码变成数据打包并进行加密后下发到客户端程序中。
实际应用中,客户端通过网络接受到服务器下发的打包数据后,首先调用AES算法来对数据进行解密,得到各个校验代码对应的加密后的汇编数据后,然后采用相应的解密算法对其进行解密,进而得到各个校验代码的原始汇编代码,并通过再次编译得到对应的原始的校验代码,而这段代码还只是数据,并不能直接执行。那么接下来,客户端为每个校验代码分配一段可以执行的内存来将该段内存代码拷贝到可执行内存中,并调用该段可以执行的内存。具体实现如下:
首先调用Windows的API函数VirtualAlloc来分配一段可以执行的内存,
lpAddress是指定内存开始的地址。
dwSize是分配内存的大小。
flAllocationType是分配内存的类型。
flProtect是访问这块分配内存的权限。
其中,得到的返回值则是该分配内存的起始地址FuncAddr,该地址则是该校验代码所在的内存地址,那么对于其他校验代码则也需要对这段内存地址的代码进行校验。然后调用内存拷贝函数将待校验的内存代码,如,客户端的指定内存代码,拷贝到这段分配的内存代码中。同样的对于其他的校验代码也使用上述的方法来分配可以执行的内存空间,并将对应的校验数据拷贝到该空间中。最后在每套校验代码分配完内存空间后,执行时则需要传入接口CodeCheck1中需要的6个参数,其中前2个是客户端程序需要校验的内存代码的地址和长度,后2个则是在上述分配内存空间中的每个校验代码所在的内存地址和校验代码本身的长度。最后通过参数pResult来得到校验的返回值。最后将所有校验代码的校验结果一起打包加密后上报到服务器中。打包的数据如下:
Checknumber:1
checkResult:XXXX
Checknumber:2
checkResult:XXXX
其中Checknumber标识校验代码的唯一标识,checkResult则是校验的结果。实现了对客户端核心代码进行HASH校验,并对校验代码本身也做了校验,最终将校验的结果一去打包上报到服务器。
在本发明的一个可选实施例中,所述方法还包括:对校验代码进行更新,和/或,对所述每一校验代码设置的唯一标识进行更新。本发明实施例能够实现实时的或定时的更新校验代码,服务器每次向客户端下发最新更新的校验代码,以确保客户端使用最新的校验逻辑实现完整性校验。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
图3示意性示出了本发明一个实施例的内存代码的完整性校验装置的结构示意图。参照图3,本发明实施例的内存代码的完整性校验装置具体包括通信模块301、获取模块302、匹配模块303以及判定模块304,其中:所述的通信模块301,用于将预先设置的至少两个校验代码发送至客户端,以供所述客户端从所述校验代码中选取目标校验代码对所述客户端的指定内存代码进行校验;所述的获取模块302,用于获取所述客户端返回的客户端校验结果,所述客户端校验结果中包括所述目标校验代码的返回值和唯一标识;所述的匹配模块303,用于根据所述目标校验代码的唯一标识将所述客户端校验结果与服务端对应的目标校验结果进行匹配;所述的判定模块304,用于若所述客户端校验结果与所述目标校验结果一致,则确定所述客户端的内存代码通过完整性校验。
在本发明的一个可选实施例中,如图4所示,所述装置还包括生成模块300,所述的生成模块300,用于在所述将预先设置的至少两个校验代码发送至客户端之前,预先采用多种校验算法生成对应的多个校验代码,并为每一校验代码设置有唯一标识;
相应的所述通信模块301,具体用于将带有唯一标识的各个校验代码打包后发送到客户端。
进一步地,所述通信模块301包括编译单元和加密单元,其中:
所述的编译单元,用于将带有唯一标识的各个校验代码分别进行编译,获取每一校验代码对应的汇编代码;
所述的加密单元,用于对各个校验代码对应的汇编代码进行加密,并将加密后的汇编代码打包后发送到所述客户端。
在本发明的一个可选实施例中,所述装置还包括附图中未示出的更新模块,所述的更新模块,用于对所述校验代码进行更新,和/或,对所述每一校验代码设置的唯一标识进行更新。
在具体实施例中,为了进一步地提高HACK成功修改客户端内存代码的门槛,所述客户端从所述校验代码中选取目标校验代码对所述客户端的指定内存代码进行校验,包括:所述客户端从所述校验代码中选取预设数量的目标校验代码分别对所述客户端的指定内存代码进行校验,或是,所述客户端从所述校验代码中选取预设数量的目标校验代码并按照预设的校验逻辑对所述客户端的指定内存代码和其他校验代码进行校验。
相应的,当所述客户端从所述校验代码中选取预设数量的目标校验代码分别对所述客户端的指定内存代码进行校验时,所述匹配模块303进一步包括查找单元和匹配单元,其中:
所述的查找单元,用于根据各个目标校验代码的唯一标识查找服务端预存的采用各个目标校验代码对完整的客户端进行的校验值;
所述的匹配单元,用于根据客户端校验结果中每一目标校验代码的返回值与各个目标校验代码对应的校验值进行匹配。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
此外,本发明另一实施例还提供了一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,所述电路板安置在所述壳体围成的空间内部,所述处理器和所述存储器设置在所述电路板上;所述电源电路,用于为所述电子设备的各个电路或器件供电;所述存储器用于存储可执行程序代码;所述处理器通过读取所述存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行以下步骤:将预先设置的至少两个校验代码发送至客户端,以供所述客户端从所述校验代码中选取目标校验代码对所述客户端的指定内存代码进行校验;获取所述客户端返回的客户端校验结果,所述客户端校验结果中包括所述目标校验代码的返回值和唯一标识;根据所述目标校验代码的唯一标识将所述客户端校验结果与服务端对应的目标校验结果进行匹配;若所述客户端校验结果与所述目标校验结果一致,则确定所述客户端的内存代码通过完整性校验。
本发明实施例提供的内存代码的完整性校验方法及装置,通过将校验内存的校验代码通过服务器下发到客户端,以供客户端根据接收到的校验代码进行完整性校验,实现在客户端的发布程序中无需携带固定的校验代码即可完成客户端的完整性校验,从而比较好的起到隐藏校验代码的功能,提高安全性;同时,本发明还能够比较方便的实现校验算法的随时更新,而且在下发的内存校验代码中,使用了多套校验代码去校验客户端的指定内存代码,从而极大的提高了HACK修改内存代码的门槛,进一步确保客户端完整性校验的准确率,提高安全性。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种内存代码的完整性校验方法,其特征在于,包括:
将预先设置的至少两个校验代码发送至客户端,以供所述客户端从所述校验代码中选取目标校验代码对所述客户端的指定内存代码进行校验;
获取所述客户端返回的客户端校验结果,所述客户端校验结果中包括所述目标校验代码的返回值和唯一标识;
根据所述目标校验代码的唯一标识将所述客户端校验结果与服务端对应的目标校验结果进行匹配;
若所述客户端校验结果与所述目标校验结果一致,则确定所述客户端的内存代码通过完整性校验。
2.根据权利要求1所述的方法,其特征在于,在所述将预先设置的至少两个校验代码发送至客户端之前,所述方法还包括:
预先采用预设的校验算法生成对应的校验代码,并为每一校验代码设置有唯一标识;
所述将预先设置的至少两个校验代码发送至客户端,具体包括:将带有唯一标识的各个校验代码打包后发送到客户端。
3.根据权利要求2所述的方法,其特征在于,所述将带有唯一标识的各个校验代码打包后发送到客户端,包括:
将带有唯一标识的各个校验代码分别进行编译,获取每一校验代码对应的汇编代码;
对各个校验代码对应的汇编代码进行加密,并将加密后的汇编代码打包后发送到所述客户端。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
对所述校验代码进行更新,和/或,对所述每一校验代码设置的唯一标识进行更新。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述客户端从所述校验代码中选取目标校验代码对所述客户端的指定内存代码进行校验,包括:所述客户端从所述校验代码中选取预设数量的目标校验代码分别对所述客户端的指定内存代码进行校验,或,所述客户端从所述校验代码中选取预设数量的目标校验代码并按照预设的校验逻辑对所述客户端的指定内存代码和其他校验代码进行校验。
6.根据权利要求5所述的方法,其特征在于,当所述客户端从所述校验代码中选取预设数量的目标校验代码分别对所述客户端的指定内存代码进行校验时,所述根据所述目标校验代码的唯一标识将所述客户端校验结果与服务端对应的目标校验结果进行匹配,包括:
根据各个目标校验代码的唯一标识查找服务端预存的采用各个目标校验代码对完整的客户端进行校验的校验值;
根据客户端校验结果中每一目标校验代码的返回值与各个目标校验代码对应的校验值进行匹配。
7.一种内存代码的完整性校验装置,其特征在于,包括:
通信模块,用于将预先设置的至少两个校验代码发送至客户端,以供所述客户端从所述校验代码中选取目标校验代码对所述客户端的指定内存代码进行校验;
获取模块,用于获取所述客户端返回的客户端校验结果,所述客户端校验结果中包括所述目标校验代码的返回值和唯一标识;
匹配模块,用于根据所述目标校验代码的唯一标识将所述客户端校验结果与服务端对应的目标校验结果进行匹配;
判定模块,用于若所述客户端校验结果与所述目标校验结果一致,则确定所述客户端的内存代码通过完整性校验。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
生成模块,用于在所述将预先设置的至少两个校验代码发送至客户端之前,预先采用预设的校验算法生成对应的校验代码,并为每一校验代码设置有唯一标识;
所述通信模块,具体用于将带有唯一标识的各个校验代码打包后发送到客户端。
9.根据权利要求8所述的装置,其特征在于,所述通信模块包括:
编译单元,用于将带有唯一标识的各个校验代码分别进行编译,获取每一校验代码对应的汇编代码;
加密单元,用于对各个校验代码对应的汇编代码进行加密,并将加密后的汇编代码打包后发送到所述客户端。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
更新模块,用于对所述校验代码进行更新,和/或,对所述每一校验代码设置的唯一标识进行更新。
CN201710206433.6A 2017-03-31 2017-03-31 内存代码的完整性校验方法及装置 Pending CN107194250A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710206433.6A CN107194250A (zh) 2017-03-31 2017-03-31 内存代码的完整性校验方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710206433.6A CN107194250A (zh) 2017-03-31 2017-03-31 内存代码的完整性校验方法及装置

Publications (1)

Publication Number Publication Date
CN107194250A true CN107194250A (zh) 2017-09-22

Family

ID=59871035

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710206433.6A Pending CN107194250A (zh) 2017-03-31 2017-03-31 内存代码的完整性校验方法及装置

Country Status (1)

Country Link
CN (1) CN107194250A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108038021A (zh) * 2017-11-13 2018-05-15 北京全路通信信号研究设计院集团有限公司 一种计算机程序运行阶段代码内存校验方法
CN108196975A (zh) * 2017-11-21 2018-06-22 深信服科技股份有限公司 基于多校验和的数据验证方法、装置及存储介质
CN108259490A (zh) * 2018-01-12 2018-07-06 武汉斗鱼网络科技有限公司 一种客户端校验方法及装置
CN108287997A (zh) * 2018-01-10 2018-07-17 武汉斗鱼网络科技有限公司 目标应用程序的宿主环境识别方法、装置、介质及设备
CN108880785A (zh) * 2018-05-25 2018-11-23 武汉斗鱼网络科技有限公司 一种检测C++虚表被hook的方法、装置、终端及可读介质
CN109446176A (zh) * 2018-10-29 2019-03-08 深圳市路畅科技股份有限公司 一种文件复制方法、装置、设备及存储介质
CN111478903A (zh) * 2020-04-07 2020-07-31 浙江同花顺智能科技有限公司 一种基于客户端的验证方法、服务器及存储介质
CN111736841A (zh) * 2020-05-25 2020-10-02 广东职业技术学院 一种基于移动互联网的应用集成开发方法及***
CN112631821A (zh) * 2021-01-28 2021-04-09 长沙景嘉微电子股份有限公司 内存故障检测定位方法、装置、计算机设备及存储介质
CN112668004A (zh) * 2019-10-16 2021-04-16 武汉斗鱼网络科技有限公司 一种基于llvm的函数校验方法及相关装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103345602A (zh) * 2013-06-14 2013-10-09 腾讯科技(深圳)有限公司 一种客户端代码完整性检测方法、装置和***
CN104270395A (zh) * 2014-10-24 2015-01-07 中国建设银行股份有限公司 一种输入数据校验的方法、装置及***
CN104700002A (zh) * 2013-12-05 2015-06-10 航天信息软件技术有限公司 一种软件保护、授权和注册的方法
CN105808251A (zh) * 2016-03-03 2016-07-27 武汉斗鱼网络科技有限公司 一种基于虚函数表劫持绕过安全检测的方法与***
CN106055933A (zh) * 2016-06-24 2016-10-26 武汉斗鱼网络科技有限公司 一种客户端软件代码校验的方法及***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103345602A (zh) * 2013-06-14 2013-10-09 腾讯科技(深圳)有限公司 一种客户端代码完整性检测方法、装置和***
CN104700002A (zh) * 2013-12-05 2015-06-10 航天信息软件技术有限公司 一种软件保护、授权和注册的方法
CN104270395A (zh) * 2014-10-24 2015-01-07 中国建设银行股份有限公司 一种输入数据校验的方法、装置及***
CN105808251A (zh) * 2016-03-03 2016-07-27 武汉斗鱼网络科技有限公司 一种基于虚函数表劫持绕过安全检测的方法与***
CN106055933A (zh) * 2016-06-24 2016-10-26 武汉斗鱼网络科技有限公司 一种客户端软件代码校验的方法及***

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108038021B (zh) * 2017-11-13 2021-03-02 北京全路通信信号研究设计院集团有限公司 一种计算机程序运行阶段代码内存校验方法
CN108038021A (zh) * 2017-11-13 2018-05-15 北京全路通信信号研究设计院集团有限公司 一种计算机程序运行阶段代码内存校验方法
CN108196975A (zh) * 2017-11-21 2018-06-22 深信服科技股份有限公司 基于多校验和的数据验证方法、装置及存储介质
CN108287997A (zh) * 2018-01-10 2018-07-17 武汉斗鱼网络科技有限公司 目标应用程序的宿主环境识别方法、装置、介质及设备
CN108287997B (zh) * 2018-01-10 2020-07-31 武汉斗鱼网络科技有限公司 目标应用程序的宿主环境识别方法、装置、介质及设备
CN108259490A (zh) * 2018-01-12 2018-07-06 武汉斗鱼网络科技有限公司 一种客户端校验方法及装置
CN108259490B (zh) * 2018-01-12 2021-02-02 武汉斗鱼网络科技有限公司 一种客户端校验方法及装置
CN108880785A (zh) * 2018-05-25 2018-11-23 武汉斗鱼网络科技有限公司 一种检测C++虚表被hook的方法、装置、终端及可读介质
CN108880785B (zh) * 2018-05-25 2021-07-23 武汉斗鱼网络科技有限公司 一种检测C++虚表被hook的方法、装置、终端及可读介质
CN109446176A (zh) * 2018-10-29 2019-03-08 深圳市路畅科技股份有限公司 一种文件复制方法、装置、设备及存储介质
CN112668004A (zh) * 2019-10-16 2021-04-16 武汉斗鱼网络科技有限公司 一种基于llvm的函数校验方法及相关装置
CN112668004B (zh) * 2019-10-16 2022-06-21 武汉斗鱼网络科技有限公司 一种基于llvm的函数校验方法及相关装置
CN111478903A (zh) * 2020-04-07 2020-07-31 浙江同花顺智能科技有限公司 一种基于客户端的验证方法、服务器及存储介质
CN111736841A (zh) * 2020-05-25 2020-10-02 广东职业技术学院 一种基于移动互联网的应用集成开发方法及***
CN111736841B (zh) * 2020-05-25 2023-07-04 广东职业技术学院 一种基于移动互联网的应用集成开发方法及***
CN112631821A (zh) * 2021-01-28 2021-04-09 长沙景嘉微电子股份有限公司 内存故障检测定位方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
CN107194250A (zh) 内存代码的完整性校验方法及装置
CN108664221B (zh) 一种数据持有证明方法、装置及可读存储介质
CN110032878B (zh) 一种安全的特征工程方法和装置
KR102417067B1 (ko) 블록 체인 네트워크의 노드에서 수행되는 블록 생성 방법 및 장치
CN104166822B (zh) 一种数据保护的方法和装置
CN107070847B (zh) 频率隐藏保序加密
CN104380245B (zh) 随机数生成器和流密码
CN110569159A (zh) 挡板生成方法、装置、设备及计算机存储介质
CN106778099A (zh) 防篡改apk的生成方法和装置、安装及运行方法和装置
CN110474900A (zh) 一种游戏协议测试方法及装置
CN111242784A (zh) 区块预打包方法、区块节点、装置及存储介质
US11204860B2 (en) Methods and apparatuses for generating smart contract test case
CN108769057A (zh) 基于区块链的身份识别方法及装置
CN107579973A (zh) 一种网络空间探测方法、装置及计算设备
CN108075888A (zh) 动态url生成方法及装置
CN105468970B (zh) 一种基于防御网的Android应用程序防篡方法及***
CN107040799A (zh) 视频播放的权限校验方法及装置
CN105809066B (zh) 加密数据的存储方法及终端
CN111475402A (zh) 程序功能的测试方法及相关装置
Ceccato et al. Codebender: Remote software protection using orthogonal replacement
Kapourniotis et al. Unifying quantum verification and error-detection: theory and tools for optimisations
CN106911738A (zh) 一种生成应用推广安装包的方法和服务器
CN108206961A (zh) 一种计算直播平台人气的方法及相关设备
US8036346B2 (en) Method and system for testing audio server
CN107145342A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170922