CN103345602A - 一种客户端代码完整性检测方法、装置和*** - Google Patents

一种客户端代码完整性检测方法、装置和*** Download PDF

Info

Publication number
CN103345602A
CN103345602A CN2013102361264A CN201310236126A CN103345602A CN 103345602 A CN103345602 A CN 103345602A CN 2013102361264 A CN2013102361264 A CN 2013102361264A CN 201310236126 A CN201310236126 A CN 201310236126A CN 103345602 A CN103345602 A CN 103345602A
Authority
CN
China
Prior art keywords
verification
client
group
internal memory
server
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
Application number
CN2013102361264A
Other languages
English (en)
Other versions
CN103345602B (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201310236126.4A priority Critical patent/CN103345602B/zh
Publication of CN103345602A publication Critical patent/CN103345602A/zh
Priority to PCT/CN2014/079772 priority patent/WO2014198228A1/en
Application granted granted Critical
Publication of CN103345602B publication Critical patent/CN103345602B/zh
Priority to US14/869,607 priority patent/US10083028B2/en
Priority to US16/028,049 priority patent/US10481905B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例公开了一种客户端代码完整性检测方法、装置和***,本发明实施例采用根据用户标识生成多组校验序列,其中,该校验序列指示内存读取方式、校验算法和组包格式,然后从该多组校验序列中随机选取一组校验序列,一方面,根据该选取的一组校验序列对校验目标进行计算,得到服务器侧结果,另一方面,将校验目标和该选取的一组校验序列发送给客户端,并接收客户端根据该校验目标和校验序列进行计算所得到的客户端侧结果,然后,将服务器侧结果和客户端侧结果进行比较,以确定客户端代码是否完整性。该方案可以增加破解者绕过或欺骗客户端代码完整性检测的分析难度,以及提高客户端代码完整性检测的检测效果。

Description

一种客户端代码完整性检测方法、装置和***
技术领域
本发明涉及通信技术领域,具体涉及一种客户端代码完整性检测方法、装置和***。
背景技术
在客户端-服务器架构的应用程序中,客户端所执行的代码非常容易被用户修改,服务器为了保证客户端所执行的代码的正确性,就需要对客户端代码的完整性进行保护。而在客户端代码完整性保护的方案中,检测和发现客户端代码被修改的行为是其中很重要的一个环节,这一环节称为客户端代码完整性检测。
在现有的客户端代码完整性检测方案中,通常是由服务器将需要进行代码完整性检测的目标地址和校验目标大小发送给客户端,然后,客户端再将从该目标地址中读取到的校验目标大小的内存,通过某种特定的校验算法计算出结果后,上报给服务器,再由服务器对该客户端计算的结果和服务器自身计算的结果进行匹配来检测客户端代码被修改的行为。
在对现有技术的研究和实践过程中,本发明的发明人发现,现有技术中的客户端代码完整性检测方案的检测效果并不佳,比如,破解者可以通过备份原始代码,并将需要校验的地址修改为外挂备份原始代码地址,使得计算出的结果值一致,或者,破解者也可以通过拦截读取内存的函数,欺骗代码完整性检测***所获取到的数据源,使得计算出的结果值一致,又或者,破解者可以模拟正确的校验结果来欺骗服务器,从而绕过代码完整性检测等等。
发明内容
本发明实施例提供一种客户端代码完整性检测方法、装置和***,可以增加破解者绕过或欺骗代码完整性检测的分析难度,提高客户端代码完整性检测的检测效果。
本发明实施例提供一种客户端代码完整性检测方法,包括:
确定校验目标,并获取客户端的用户标识;
根据所述用户标识生成多组校验序列,所述校验序列指示内存读取方式、校验算法和组包格式;
从所述多组校验序列中随机选取一组校验序列,根据选取的一组校验序列对所述校验目标进行计算,得到服务器侧结果;
将所述校验目标和选取的一组校验序列发送给客户端;
接收客户端根据所述校验目标和校验序列进行计算所得到的客户端侧结果;
将所述服务器侧结果和客户端侧结果进行比较,若一致,则确定客户端代码完整,若不一致,则确定客户端代码不完整。
本发明实施例还提供另一种客户端代码完整性检测方法,包括:
接收服务器发送的校验目标和服务器从多组校验序列中随机选取的一组校验序列,所述多组校验序列由服务器根据客户端的用户标识生成,所述校验序列指示内存读取方式、校验算法和组包格式;
根据接收到的校验序列从客户端预置的X套内存读取方式中确定内存读取方式、从客户端预置的Y套校验算法确定校验算法,以及从客户端预置的Z套组包格式中确定组包格式,所述X、Y和Z均为大于1的正整数;
根据确定的内存读取方式、校验算法和组包格式进行计算,得到客户端侧结果;
发送所述客户端侧结果给服务器,以便服务器根据所述客户端侧结果和服务器侧结果进行客户端代码完整性检测,所述服务器侧结果由服务器根据所述校验目标和所述选取的一组校验序列进行计算所得。
相应的,本发明实施例提供一种服务器,包括确定单元、生成单元、处理单元、发送单元、接收单元和检测单元;
确定单元,用于确定校验目标,并获取客户端的用户标识;
生成单元,用于根据所述用户标识生成多组校验序列,所述校验序列指示内存读取方式、校验算法和组包格式;
处理单元,用于从所述多组校验序列中随机选取一组校验序列,根据选取的一组校验序列对所述校验目标进行计算,得到服务器侧结果;
发送单元,用于将所述校验目标和选取的一组校验序列发送给客户端;
接收单元,用于接收客户端根据所述校验目标和校验序列进行计算所得到的客户端侧结果;
检测单元,用于将所述服务器侧结果和客户端侧结果进行比较,若一致,则确定客户端代码完整,若不一致,则确定客户端代码不完整。
本发明实施例提供还提供一种客户端,包括接收单元、确定单元、处理单元和发送单元;
接收单元,用于接收服务器发送的校验目标和服务器从多组校验序列中随机选取的一组校验序列,所述多组校验序列由服务器根据客户端的用户标识生成,所述校验序列指示内存读取方式、校验算法和组包格式;
确定单元,用于根据接收到的校验序列从客户端预置的X套内存读取方式中确定内存读取方式、从客户端预置的Y套校验算法确定校验算法,以及从客户端预置的Z套组包格式中确定组包格式,所述X、Y和Z均为大于1的正整数;
处理单元,用于根据确定的内存读取方式、校验算法和组包格式进行计算,得到客户端侧结果;
发送单元,用于发送所述客户端侧结果给服务器,以便服务器根据所述客户端侧结果和服务器侧结果进行客户端代码完整性检测,所述服务器侧结果由服务器根据所述校验目标和所述选取的一组校验序列进行计算所得。
本发明实施例还提供一种通信***,包括本发明实施例提供的任一种的服务器和本发明实施例提供的任一种客户端。
本发明实施例采用根据用户标识生成多组校验序列,其中,该校验序列指示内存读取方式、校验算法和组包格式,然后从该多组校验序列中随机选取一组校验序列,一方面,根据该选取的一组校验序列对校验目标进行计算,得到服务器侧结果,另一方面,将校验目标和该选取的一组校验序列发送给客户端,并接收客户端根据该校验目标和校验序列进行计算所得到的客户端侧结果,然后,将服务器侧结果和客户端侧结果进行比较,以确定客户端代码是否完整性。由于在该方案中,不同的用户标识会随机产生不同的校验序列,而每一次选取的校验序列也是随机的,而且,不同的校验序列指示着不同的内存读取方式、校验算法和组包格式,所以,相对于现有技术中破解者只需分析一套逻辑而言,大大增加了破解者绕过或欺骗客户端代码完整性检测的分析难度;而且,在该方案中,一个用户标识只能得到一小部分的逻辑,所以,即便该小部分逻辑被破解者所破解,也不会对整个***造成太大的影响,只要服务器对校验序列进行一下变化,那些与被破解的校验序列一致的用户同样也会被检测到,大大提高客户端代码完整性检测的检测效果,可以提高***的安全性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的客户端代码完整性检测方法的流程图;
图1b是本发明实施例中校验目标地址的示意图;
图2是本发明实施例提供的客户端代码完整性检测方法的另一流程图;
图3是本发明实施例提供的客户端代码完整性检测方法的又一流程图;
图4是本发明实施例提供的服务器的结构示意图;
图5是本发明实施例提供的客户端的结构示意图;
图6是本发明实施例提供的终端的结构示意图;
图7是本发明实施例提供的服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种客户端代码完整性检测方法、装置和***。以下分别进行详细说明。
实施例一、
本发明实施例将从服务器的角度进行描述。
一种客户端代码完整性检测方法,包括:确定校验目标,并获取客户端的用户标识;根据该用户标识生成多组校验序列,其中,该校验序列指示内存读取方式、校验算法和组包格式;从该多组校验序列中随机选取一组校验序列,根据选取的一组校验序列对校验目标进行计算,得到服务器侧结果;将校验目标和选取的一组校验序列发送给客户端;接收客户端根据该校验目标和校验序列进行计算所得到的客户端侧结果;将服务器侧结果和客户端侧结果进行比较,若一致,则确定客户端代码完整,若不一致,则确定客户端代码不完整。
如图1a所示,具体流程可以如下:
101、确定校验目标,并获取客户端的用户标识;
其中,校验目标指的是需要进行完整性检测的客户端代码。
102、根据步骤101中获取到的用户标识生成多组校验序列,其中,校验序列指示内存读取方式、校验算法和组包格式。
需说明的是,在客户端中预置有X套内存读取方式、Y套校验算法、以及Z套组包格式,其中,X、Y和Z均为大于1的正整数,X、Y和Z的具体取值可以根据实际应用的需求而定;也就是说,在本客户端代码完整性检测方案中,一共有
Figure BDA00003346591000051
套检测逻辑,其中,每一组校验序列可以指示一套检测逻辑,即具体指示采用哪一套内存读取方式,采用哪一套校验算法,以及采用哪一套组包格式。
其中,内存读取方式、校验算法和组包格式分别可以包括多种形式,具体可以如下:
(1)内存读取方式;
内存读取方式的确定包括校验目标地址和校验目标大小的确定,以及读取内存的函数的确定。
其中,校验目标地址至少需要覆盖校验目标的实际地址,比如,若校验目标的实际地址为(X,Y),则校验目标地址可以为(X-a,Y+b),其中,a满足条件0<a<X。而b则满足条件0<b<0x7FFFFFFFF-Y,具体可以如下:
比如,如果校验目标的实际地址为(X,Y),即需要检测地址X到地址Y之间的内存,则对于不同的用户,可以采用类似“a=0,b=b1”的方式,即在客户端上实际检查地址为X到大于地址Y之间的内存。又比如,也可以采用类似“a=a1,b=0”的方式,即在客户端上实际检查地址为小于X到地址Y之间的内存。又比如,还可以采用类似“a=a1,b=b1”的方式,即在客户端上实际检查地址为小于X到地址大于Y之间的内存;等等,也就是说,只要能够保证在客户端上实际进行的内存检查能够将检测目标覆盖即可,具体可参见图1b中所示。
同理,读取内存的函数也可以有多种,例如,具体可以为memmove函数、memcpy函数、ReadProcessMemory函数或ZwReadVirtualMemory函数等等。又例如,还可以根据实际应用的需求来、编写代码来实现该用于读取内存的函数,比如,可以按单字节顺序取值来实现、按单字节逆序取值来实现、按双字节顺序取值来实现、按双字节逆序取值来实现、按四字节顺序取值来实现、按四字节逆序取值来实现、按单字节奇偶顺序取值来实现或者其他字节操作顺序取值来实现,等等。此外,还可以利用编写驱动程序,在内核中调用内核函数来读取指定进程的内存地址,等等,在此不再赘述。
需说明的是,在实际使用读取内存的函数的时候,可以选择只使用一个函数来进行内存读取,也可以将内存拆分后使用不同的函数来读取,这样,就可以实现多种不同的内存读取方式。
(2)校验算法;
校验算法的目的是将大量的内存数据,通过校验算法的计算,最终变为一个数值。因此对于算法来说,只要能够保证结果一致性就可以了,即能够保证相同的输入可以得到相同的输出即可。
例如,可以使用CRC32,CRC16,MD5,SHA160,SHA256,SHA384,SHA512,HAVAL128,HAVAL160,HAVAL192,HAVAL224,HAVAL256,RIPEMD160等算法。
另外,也可以根据实际应用的需求设置一些可以对内存数值进行处理的算法,例如,可以采用如下算法:
算法1,按4字节顺序异或;
算法2,按单字节顺序相加;
算法3,取奇数位顺序相加;
算法4,取偶数位与奇数位异或相加;
等等。
(3)组包格式;
由于服务器有可能同时下发多个不同校验目标和校验序列给客户端,因此,只有将这些信息回传给到服务器,服务器才能够知道当前接收到的客户端侧结果,应该利用哪一服务器侧结果与其进行比较。所以,组包内容至少包括如下各项参数:
校验目标地址、校验目标大小、校验计算结果、校验序列中的内存读取方式、校验序列中的校验算法和校验序列中的组包格式。
其中,组包格式可以指示各项组包内容在组包中的排列顺序,也就是说,组包格式可以包括这6个参数的排列顺序的任意组合方式,比如,可以是“校验目标地址、校验目标大小、校验计算结果、校验序列中的内存读取方式、校验序列中的校验算法和校验序列中的组包格式”,也可以是“校验目标大小、校验目标地址、校验计算结果、校验序列中的内存读取方式、校验序列中的校验算法和校验序列中的组包格式”,也可以是“校验计算结果校、验目标大小、校验目标地址、校验序列中的内存读取方式、校验序列中的校验算法和校验序列中的组包格式”,等等,在此不再列举。
可选的,为了使得组合的方式能够更复杂,还可以在组包内容中加入n个垃圾数据,即组包内容还可以包括n个垃圾数据,其中,n为正整数,也就是说,此时,组包格式为6+n个参数的排列顺序的任意组合,在此不再赘述。
103、从该多组校验序列中随机选取一组校验序列,根据选取的一组校验序列对校验目标进行计算,得到计算结果,为了描述方便,在本实施例中,将该计算结果称为服务器侧结果。
其中,随机数种子可以根据用户标识、用户的媒体接入控制层(MAC,Media Access Control)地址、网际协议(IP,Internet Protocol)地址、用户的注册时间和/或用户的登陆时间来生成,即步骤“从该多组校验序列中随机选取一组校验序列”可以包括:
根据所述用户标识、用户的MAC地址、IP地址、用户的注册时间和/或用户的登陆时间生成随机数种子,根据该随机数种子从该多组校验序列中随机选取一组校验序列。
其中,步骤“根据选取的一组校验序列对校验目标进行计算,得到服务器侧结果”具体可以如下:
(1)根据选取的一组校验序列确定内存读取方式、校验算法和组包格式;
(2)根据确定的内存读取方式从内存中读取校验目标的数据,例如,具体可以如下:
根据确定的内存读取方式确定校验目标地址和校验目标大小,其中,该校验目标地址至少覆盖校验目标的实际地址(具体可参见步骤102中的描述);根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数;根据该当前函数、校验目标地址和校验目标大小从内存中读取该校验目标的数据。
(3)根据确定的校验算法对该从内存中读取到的数据进行计算,得到服务器的校验计算结果;
(4)根据确定的组包格式对该服务器的校验计算结果进行封装,得到服务器侧结果。
104、将校验目标和步骤103中选取的一组校验序列发送给客户端。
其中,步骤104和步骤103中的步骤“根据选取的一组校验序列对校验目标进行计算,得到计算结果”的执行可以不分先后。
105、接收客户端根据该校验目标和校验序列进行计算所得到的客户端侧结果。
其中,客户端可以通过如下方式得到客户端侧结果:
(1)客户端根据接收到的校验序列从客户端预置的X套内存读取方式中确定内存读取方式、从客户端预置的Y套校验算法确定校验算法,以及从客户端预置的Z套组包格式中确定组包格式,其中,X、Y和Z均为大于1的正整数;
(2)客户端根据确定的内存读取方式、校验算法和组包格式进行计算,得到客户端侧结果;例如具体可以如下:
根据确定的内存读取方式从内存中读取所述校验目标的数据,根据确定的校验算法对所述数据进行计算,得到客户端的校验计算结果,根据确定的组包格式对所述客户端的校验计算结果进行封装,得到客户端侧结果。
其中,步骤“客户端根据确定的内存读取方式从内存中读取所述校验目标的数据”可以包括:
客户端根据确定的内存读取方式确定校验目标地址和校验目标大小,根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数,根据该当前函数、校验目标地址和校验目标大小从内存中读取所述校验目标的数据。
106、将步骤104中得到的服务器侧结果和步骤105中接收到的客户端侧结果进行比较,若一致,则确定客户端代码完整,若不一致,则确定客户端代码不完整。
由上可知,本实施例采用根据用户标识生成多组校验序列,其中,该校验序列指示内存读取方式、校验算法和组包格式,然后从该多组校验序列中随机选取一组校验序列,一方面,根据该选取的一组校验序列对校验目标进行计算,得到服务器侧结果,另一方面,将校验目标和该选取的一组校验序列发送给客户端,并接收客户端根据该校验目标和校验序列进行计算所得到的客户端侧结果,然后,将服务器侧结果和客户端侧结果进行比较,以确定客户端代码是否完整性。由于在该方案中,不同的用户标识会随机产生不同的校验序列,而每一次选取的校验序列也是随机的,而且,不同的校验序列指示着不同的内存读取方式、校验算法和组包格式,所以,相对于现有技术中破解者只需分析一套逻辑而言(在现有技术中,所有客户端都是校验相同的地址,并使用相同的校验算法),大大增加了破解者绕过或欺骗客户端代码完整性检测的分析难度;而且,在该方案中,一个用户标识只能得到一小部分的逻辑,所以,即便该小部分逻辑被破解者所破解,也不会对整个***造成太大的影响,只要服务器对校验序列进行一下变化,那些与被破解的校验序列一致的用户同样也会被检测到,大大提高客户端代码完整性检测的检测效果,可以提高***的安全性。
实施例二、
本实施例将从客户端的角度进行描述,该客户端可以安装在终端中,该终端具体可以为智能手机、平板电脑、电子书阅读器、MP3播放器(Moving PictureExperts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面3)播放器、膝上型便携计算机和台式计算机等等。
一种客户端代码完整性检测方法,包括:接收服务器发送的校验目标和服务器从多组校验序列中随机选取的一组校验序列,根据接收到的校验序列从客户端预置的X套内存读取方式中确定内存读取方式、从客户端预置的Y套校验算法确定校验算法,以及从客户端预置的Z套组包格式中确定组包格式,根据确定的内存读取方式、校验算法和组包格式进行计算,得到客户端侧结果;发送该客户端侧结果给服务器,以便服务器根据该客户端侧结果和服务器侧结果进行客户端代码完整性检测。
如图2所示,具体流程可以如下:
201、接收服务器发送的校验目标和服务器从多组校验序列中随机选取的一组校验序列。
其中,该多组校验序列由服务器根据客户端的用户标识生成,其中,校验序列指示内存读取方式、校验算法和组包格式。
其中,内存读取方式、校验算法和组包格式分别可以包括多种形式,具体可以如下:
(1)内存读取方式;
内存读取方式的确定包括校验目标地址和校验目标大小的确定,以及读取内存的函数的确定。
其中,校验目标地址至少需要覆盖校验目标的实际地址,比如,若校验目标的实际地址为(X,Y),则校验目标地址可以为(X-a,Y+b),其中,a满足条件0<a<X。而b则满足条件0<b<0x7FFFFFFFF-Y,具体可参见实施例一,在此不再赘述。
同理,读取内存的函数也可以有多种,例如,具体可以为memmove函数、memcpy函数、ReadProcessMemory函数或ZwReadVirtualMemory函数等等。又例如,还可以根据实际应用的需求来、编写代码来实现该用于读取内存的函数,比如,可以按单字节顺序取值来实现、按单字节逆序取值来实现、按双字节顺序取值来实现、按双字节逆序取值来实现、按四字节顺序取值来实现、按四字节逆序取值来实现、按单字节奇偶顺序取值来实现或者其他字节操作顺序取值来实现,等等。此外,还可以利用编写驱动程序,在内核中调用内核函数来读取指定进程的内存地址,等等,在此不再赘述。
需说明的是,在实际使用读取内存的函数的时候,可以选择只使用一个函数来进行内存读取,也可以将内存拆分后使用不同的函数来读取,这样,就可以实现多种不同的内存读取方式。
(2)校验算法;
校验算法的目的是将大量的内存数据,通过校验算法的计算,最终变为一个数值。因此对于算法来说,只要能够保证结果一致性就可以了,即能够保证相同的输入可以得到相同的输出即可。
例如,可以使用CRC32,CRC16,MD5,SHA160,SHA256,SHA384,SHA512,HAVAL128,HAVAL160,HAVAL192,HAVAL224,HAVAL256,RIPEMD160等算法。
另外,也可以根据实际应用的需求设置一些可以对内存数值进行处理的算法,例如,可以采用如下算法:
算法1,按4字节顺序异或;
算法2,按单字节顺序相加;
算法3,取奇数位顺序相加;
算法4,取偶数位与奇数位异或相加;
等等。
(3)组包格式;
由于服务器有可能同时下发多个不同校验目标和校验序列给客户端,因此,客户端只有将这些信息回传给到服务器,服务器才能够知道当前接收到的客户端侧结果,应该利用哪一服务器侧结果与其进行比较。所以,组包内容至少包括如下各项参数:
校验目标地址、校验目标大小、校验计算结果、校验序列中的内存读取方式、校验序列中的校验算法和校验序列中的组包格式。
其中,组包格式可以指示各项组包内容在组包中的排列顺序,也就是说,组包格式可以包括这6个参数的排列顺序的任意组合方式,具体可参见实施例一,在此不再赘述。
可选的,为了使得组合的方式能够更复杂,还可以在组包内容中加入n个垃圾数据,即组包内容还可以包括n个垃圾数据,其中,n为正整数,也就是说,此时,组包格式为6+n个参数的排列顺序的任意组合,在此不再赘述。
202、根据接收到的校验序列从客户端预置的X套内存读取方式中确定内存读取方式、从客户端预置的Y套校验算法确定校验算法,以及从客户端预置的Z套组包格式中确定组包格式。
其中,X、Y和Z均为大于1的正整数,X、Y和Z的具体取值可以根据实际应用的需求而定。
203、根据确定的内存读取方式、校验算法和组包格式进行计算,得到计算结果,为了描述方便,在本发明实施例中,将该计算结果称为客户端侧结果;例如,具体可以如下:
根据确定的内存读取方式从内存中读取所述校验目标的数据,根据确定的校验算法对所述数据进行计算,得到客户端的校验计算结果,根据确定的组包格式对所述客户端的校验计算结果进行封装,得到客户端侧结果。
其中,步骤“根据确定的内存读取方式从内存中读取校验目标的数据”可以包括:
根据确定的内存读取方式确定校验目标地址和校验目标大小,根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数,根据该当前函数、校验目标地址和校验目标大小从内存中读取校验目标的数据。
204、发送步骤203中得到的客户端侧结果给服务器,以便服务器根据该客户端侧结果和服务器侧结果进行客户端代码完整性检测。
其中,服务器侧结果由服务器根据校验目标和所述选取的一组校验序列进行计算所得,具体可参见实施例一;此外,服务器根据该客户端侧结果和服务器侧结果进行客户端代码完整性检测的方式具体也可以参见实施例一,在此不再赘述。
由上可知,本实施例采用接收服务器发送的校验目标和服务器从多组校验序列中选取的一组校验序列,其中,校验序列由服务器根据用户标识生成,且校验序列指示内存读取方式、校验算法和组包格式,然后根据该接收到的校验目标和校验序列行计算,得到客户端侧结果,并将该客户端侧结果返回给服务器,以便服务器将服务器侧结果和客户端侧结果进行比较,以确定客户端代码是否完整性。由于在该方案中,不同的用户标识会随机产生不同的校验序列,而每一次选取的校验序列也是随机的,而且,不同的校验序列指示着不同的内存读取方式、校验算法和组包格式,所以,相对于现有技术中破解者只需分析一套逻辑而言(在现有技术中,所有客户端都是校验相同的地址,并使用相同的校验算法),大大增加了破解者绕过或欺骗客户端代码完整性检测的分析难度;而且,在该方案中,一个用户标识只能得到一小部分的逻辑,所以,即便该小部分逻辑被破解者所破解,也不会对整个***造成太大的影响,只要服务器对校验序列进行一下变化,那些与被破解的校验序列一致的用户同样也会被检测到,大大提高客户端代码完整性检测的检测效果,可以提高***的安全性。
实施例三、
根据实施例一和二所描述的方法,以下将举例作进一步详细说明。
一种客户端代码完整性检测方法,如图3所示,具体流程可以如下:
301、服务器确定校验目标,并获取客户端的用户标识;
其中,校验目标指的是需要进行完整性检测的客户端代码。
302、服务器根据步骤301中获取到的用户标识生成多组校验序列,比如K组校验序列,其中,K为大于1的正整数,校验序列指示内存读取方式、校验算法和组包格式。
需说明的是,在客户端中预置有X套内存读取方式、Y套校验算法、以及Z套组包格式中,其中,X、Y和Z均为大于1的正整数;也就是说,在本客户端代码完整性检测方案中,一共有
Figure BDA00003346591000131
套检测逻辑,其中,每一组校验序列可以指示一套检测逻辑,即具体指示采用哪一套内存读取方式,采用哪一套校验算法,以及采用哪一套组包格式,例如,具体可以如表一和表二所示,其中,表一为客户端预置的X套内存读取方式、Y套校验算法、以及Z套组包格式的示例,而表二则是校验序列与这“X套内存读取方式、Y套校验算法、以及Z套组包格式”之间的对应关系的示例:
表一:
内存读取方式1 校验算法1 组包格式1
内存读取方式2 校验算法2 组包格式2
内存读取方式3 校验算法3 组包格式3
...... ...... ......
内存读取方式X 校验算法Y 组包格式Z
表二:
校验序列1 内存读取方式Xl 校验算法Yl 组包格式Zl
校验序列2 内存读取方式X2 校验算法Y2 组包格式Z2
校验序列3 内存读取方式X3 校验算法Y3 组包格式Z3
...... ...... ...... ......
校验序列K 内存读取方式XK 校验算法YK 组包格式ZK
其中,内存读取方式、校验算法和组包格式分别可以包括多种形式,具体可以参见实施一和二,在此不再赘述。
303、服务器从该多组校验序列中随机选取一组校验序列,例如,具体可以如下:
根据所述用户标识、用户的MAC地址、IP地址、用户的注册时间和/或用户的登陆时间生成随机数种子,根据该随机数种子从该多组校验序列中随机选取一组校验序列。
304、服务器根据步骤303中选取的一组校验序列对校验目标进行计算,得到服务器侧结果,例如,具体可以如下:
(1)根据步骤303中选取的一组校验序列确定内存读取方式、校验算法和组包格式;
(2)根据确定的内存读取方式从内存中读取校验目标的数据,例如,具体可以如下:
根据确定的内存读取方式确定校验目标地址和校验目标大小,其中,该校验目标地址至少覆盖校验目标的实际地址;根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数;根据该当前函数、校验目标地址和校验目标大小从内存中读取该校验目标的数据。
(3)根据确定的校验算法对该从内存中读取到的数据进行计算,得到服务器的校验计算结果;
(4)根据确定的组包格式对该服务器的校验计算结果进行封装,得到服务器侧结果。
305、服务器将校验目标和步骤103中选取的一组校验序列发送给客户端。
其中,步骤305和步骤304的执行可以不分先后。
306、客户端根据接收到的校验序列从客户端预置的X套内存读取方式中确定内存读取方式、从客户端预置的Y套校验算法确定校验算法,以及从客户端预置的Z套组包格式中确定组包格式,其中,X、Y和Z均为大于1的正整数。
307、客户端根据确定的内存读取方式、校验算法和组包格式进行计算,得到客户端侧结果;例如具体可以如下:
根据确定的内存读取方式从内存中读取所述校验目标的数据,根据确定的校验算法对所述数据进行计算,得到客户端的校验计算结果,根据确定的组包格式对所述客户端的校验计算结果进行封装,得到客户端侧结果。
其中,步骤“根据确定的内存读取方式从内存中读取校验目标的数据”可以包括:
根据确定的内存读取方式确定校验目标地址和校验目标大小,根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数,根据该当前函数、校验目标地址和校验目标大小从内存中读取校验目标的数据。
308、客户端将步骤307中得到的客户端侧结果发送给服务器。
309、服务器在接收到客户端发送的客户端侧结果后,将步骤304中得到的服务器侧结果和该接收到的客户端侧结果进行比较,若一致,则确定客户端代码完整,若不一致,则确定客户端代码不完整。
其中,具体可以根据接收到的客户端侧结果中的组包格式来确定该客户端侧结果对应的是哪个服务器侧结果,具体可参见前面实施例中的描述,在此不再赘述。
由上可知,本实施例采用根据用户标识生成多组校验序列,其中,该校验序列指示内存读取方式、校验算法和组包格式,然后从该多组校验序列中随机选取一组校验序列,一方面,根据该选取的一组校验序列对校验目标进行计算,得到服务器侧结果,另一方面,将校验目标和该选取的一组校验序列发送给客户端,并接收客户端根据该校验目标和校验序列进行计算所得到的客户端侧结果,然后,将服务器侧结果和客户端侧结果进行比较,以确定客户端代码是否完整性。由于在该方案中,不同的用户标识会随机产生不同的校验序列,而每一次选取的校验序列也是随机的,而且,不同的校验序列指示着不同的内存读取方式、校验算法和组包格式,所以,相对于现有技术中破解者只需分析一套逻辑而言(在现有技术中,所有客户端都是校验相同的地址,并使用相同的校验算法),大大增加了破解者绕过或欺骗客户端代码完整性检测的分析难度;而且,在该方案中,一个用户标识只能得到一小部分的逻辑,所以,即便该小部分逻辑被破解者所破解,也不会对整个***造成太大的影响,只要服务器对校验序列进行一下变化,那些与被破解的校验序列一致的用户同样也会被检测到,大大提高客户端代码完整性检测的检测效果,可以提高***的安全性。
实施例四、
为了更好地实施以上方法,本发明实施例还提供一种服务器,如图4所示,该服务器包括确定单元401、生成单元402、处理单元403、发送单元404、接收单元405和检测单元406;
确定单元401,用于确定校验目标,并获取客户端的用户标识。
生成单元402,用于根据该用户标识生成多组校验序列,其中,校验序列指示内存读取方式、校验算法和组包格式。
需说明的是,在客户端中预置有X套内存读取方式、Y套校验算法、以及Z套组包格式,其中,X、Y和Z均为大于1的正整数;也就是说,在本客户端代码完整性检测方案中,一共有
Figure BDA00003346591000161
套检测逻辑,其中,每一组校验序列可以指示一套检测逻辑,即具体指示采用哪一套内存读取方式,采用哪一套校验算法,以及采用哪一套组包格式。
其中,内存读取方式、校验算法和组包格式分别可以包括多种形式,具体可参见前面的方法实施例,在此不再赘述。
处理单元403,用于从多组校验序列中随机选取一组校验序列,根据选取的一组校验序列对该校验目标进行计算,得到服务器侧结果。
发送单元404,用于将该校验目标和选取的一组校验序列发送给客户端;
接收单元405,用于接收客户端根据该校验目标和校验序列进行计算所得到的客户端侧结果;
检测单元406,用于将服务器侧结果和客户端侧结果进行比较,若一致,则确定客户端代码完整,若不一致,则确定客户端代码不完整。
例如,其中,处理单元403可以包括选择子单元、确定子单元、读取子单元、运算子单元和封装子单元;
选择子单元,用于从该多组校验序列中随机选取一组校验序列
确定子单元,用于根据选取的一组校验序列确定内存读取方式、校验算法和组包格式;
读取子单元,用于根据确定的内存读取方式从内存中读取所述校验目标的数据;
运算子单元,用于根据确定的校验算法对所述数据进行计算,得到服务器的校验计算结果;
封装子单元,用于根据确定的组包格式对所述服务器的校验计算结果进行封装,得到服务器侧结果。
其中,读取子单元,具体可以用于根据确定的内存读取方式确定校验目标地址和校验目标大小,其中,校验目标地址至少覆盖该校验目标的实际地址(具体可参见前面实施例中的描述);根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数;根据所述当前函数、校验目标地址和校验目标大小从内存中读取所述校验目标的数据。
其中,随机数种子可以根据用户标识、用户的MAC地址、IP地址、用户的注册时间和/或用户的登陆时间来生成,即:
处理单元403,具体可以用于根据该用户标识、用户的MAC地址、IP地址、用户的注册时间和/或用户的登陆时间生成随机数种子,根据该随机数种子从该多组校验序列中随机选取一组校验序列。
具体实施例时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现。以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由上可知,本实施例的服务器的生成单元402可以根据用户标识生成多组校验序列,其中,该校验序列指示内存读取方式、校验算法和组包格式,然后由处理单元403从该多组校验序列中随机选取一组校验序列,一方面,根据该选取的一组校验序列对校验目标进行计算,得到服务器侧结果,另一方面,由发送单元404将校验目标和该选取的一组校验序列发送给客户端,并由接收单元405接收客户端根据该校验目标和校验序列进行计算所得到的客户端侧结果,然后,由检测度那远406将服务器侧结果和客户端侧结果进行比较,以确定客户端代码是否完整性。由于在该方案中,不同的用户标识会随机产生不同的校验序列,而每一次选取的校验序列也是随机的,而且,不同的校验序列指示着不同的内存读取方式、校验算法和组包格式,所以,相对于现有技术中破解者只需分析一套逻辑而言(在现有技术中,所有客户端都是校验相同的地址,并使用相同的校验算法),大大增加了破解者绕过或欺骗客户端代码完整性检测的分析难度;而且,在该方案中,一个用户标识只能得到一小部分的逻辑,所以,即便该小部分逻辑被破解者所破解,也不会对整个***造成太大的影响,只要服务器对校验序列进行一下变化,那些与被破解的校验序列一致的用户同样也会被检测到,大大提高客户端代码完整性检测的检测效果,可以提高***的安全性。
实施例五、
相应的,本发明实施例还提供一种客户端,如图5所示,该客户端包括接收单元501、确定单元502、处理单元503和发送单元504;
接收单元501,用于接收服务器发送的校验目标和服务器从多组校验序列中随机选取的一组校验序列。
其中,该多组校验序列由服务器根据客户端的用户标识生成,其中,校验序列指示内存读取方式、校验算法和组包格式。
其中,内存读取方式、校验算法和组包格式分别可以包括多种形式,具体可参见前面的方法实施例,在此不再赘述。
确定单元502,用于根据接收到的校验序列从客户端预置的X套内存读取方式中确定内存读取方式、从客户端预置的Y套校验算法确定校验算法,以及从客户端预置的Z套组包格式中确定组包格式。
其中,X、Y和Z均为大于1的正整数,X、Y和Z的具体取值可以根据实际应用的需求而定;
处理单元503,用于根据确定的内存读取方式、校验算法和组包格式进行计算,得到客户端侧结果;
发送单元504,用于发送该客户端侧结果给服务器,以便服务器根据该客户端侧结果和服务器侧结果进行客户端代码完整性检测。
其中,服务器侧结果由服务器根据校验目标和所述选取的一组校验序列进行计算所得,具体可参见前面的方法实施例;此外,服务器根据该客户端侧结果和服务器侧结果进行客户端代码完整性检测的方式具体也可以参见前面的方法实施例,在此不再赘述。
例如,其中,处理单元503可以包括读取子单元、运算子单元和封装子单元;
读取子单元,用于根据确定的内存读取方式从内存中读取所述校验目标的数据;
运算子单元,用于根据确定的校验算法对所述数据进行计算,得到客户端的校验计算结果;
封装子单元,用于根据确定的组包格式对所述客户端的校验计算结果进行封装,得到客户端侧结果。
其中,读取子单元,具体可以用于根据确定的内存读取方式确定校验目标地址和校验目标大小,该校验目标地址至少覆盖该校验目标的实际地址,根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数,根据该当前函数、校验目标地址和校验目标大小从内存中读取所述校验目标的数据。
具体实施例时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现。以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
该客户端可以安装在终端中,该终端具体可以为智能手机、平板电脑、电子书阅读器、MP3播放器、MP4播放器、膝上型便携计算机和台式计算机等等。
由上可知,本实施例的客户端的接收单元501可以接收服务器发送的校验目标和服务器从多组校验序列中选取的一组校验序列,其中,校验序列由服务器根据用户标识生成,且校验序列指示内存读取方式、校验算法和组包格式,然后由确定单元502和处理单元503根据该接收到的校验目标和校验序列行计算,得到客户端侧结果,并由发送单元504将该客户端侧结果返回给服务器,以便服务器将服务器侧结果和客户端侧结果进行比较,以确定客户端代码是否完整性。由于在该方案中,不同的用户标识会随机产生不同的校验序列,而每一次选取的校验序列也是随机的,而且,不同的校验序列指示着不同的内存读取方式、校验算法和组包格式,所以,相对于现有技术中破解者只需分析一套逻辑而言(在现有技术中,所有客户端都是校验相同的地址,并使用相同的校验算法),大大增加了破解者绕过或欺骗客户端代码完整性检测的分析难度;而且,在该方案中,一个用户标识只能得到一小部分的逻辑,所以,即便该小部分逻辑被破解者所破解,也不会对整个***造成太大的影响,只要服务器对校验序列进行一下变化,那些与被破解的校验序列一致的用户同样也会被检测到,大大提高客户端代码完整性检测的检测效果,可以提高***的安全性。
实施例六、
相应的,本发明实施例还提供一种通信***,包括本发明实施例提供的任一种服务器和本发明实施例提供的任一种客户端,其中,该服务器和客户端的具体实施可参见前面的实施例,在此不再赘述。
由于该通信***包括本发明实施例提供的任一种服务器和客户端,因此同样也可以实现本发明实施例提供的服务器和客户端所能实现的有益效果,在此不再赘述。
实施例七、
相应的,本发明实施例还提供一种终端,如图6所示,该终端可以包括射频(RF,Radio Frequency)电路601、包括有一个或一个以上计算机可读存储介质的存储器602、输入单元603、显示单元604、传感器605、音频电路606、无线保真(WiFi,Wireless Fidelity)模块607、包括有一个或者一个以上处理核心的处理器608、以及电源609等部件。本领域技术人员可以理解,图6中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路601可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器608处理;另外,将涉及上行的数据发送给基站。通常,RF电路601包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM,Subscriber IdentityModule)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路601还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯***(GSM,Global System of Mobile communication)、通用分组无线服务(GPRS,General Packet Radio Service)、码分多址(CDMA,Code Division MultipleAccess)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access)、长期演进(LTE,Long Term Evolution)、电子邮件、短消息服务(SMS,ShortMessaging Service)等。
存储器602可用于存储软件程序以及模块,处理器608通过运行存储在存储器602的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器602还可以包括存储器控制器,以提供处理器608和输入单元603对存储器602的访问。
输入单元603可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元603可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器608,并能接收处理器608发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元603还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元604可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元604可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,OrganicLight-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器608以确定触摸事件的类型,随后处理器608根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图6中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
终端还可包括至少一种传感器605,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在终端移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路606、扬声器,传声器可提供用户与终端之间的音频接口。音频电路606可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路606接收后转换为音频数据,再将音频数据输出处理器608处理后,经RF电路601以发送给比如另一终端,或者将音频数据输出至存储器602以便进一步处理。音频电路606还可能包括耳塞插孔,以提供外设耳机与终端的通信。
WiFi属于短距离无线传输技术,终端通过WiFi模块607可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了WiFi模块607,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器608是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器608可包括一个或多个处理核心;优选的,处理器608可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器608中。
终端还包括给各个部件供电的电源609(比如电池),优选的,电源可以通过电源管理***与处理器608逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源609还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器608会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器602中,并由处理器608来运行存储在存储器602中的应用程序,从而实现各种功能:
此外,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行述一个或者一个以上程序包含用于进行以下操作的指令:
接收服务器发送的校验目标和服务器从多组校验序列中随机选取的一组校验序列,根据接收到的校验序列从客户端预置的X套内存读取方式中确定内存读取方式、从客户端预置的Y套校验算法确定校验算法,以及从客户端预置的Z套组包格式中确定组包格式,根据确定的内存读取方式、校验算法和组包格式进行计算,得到客户端侧结果;发送该客户端侧结果给服务器,以便服务器根据该客户端侧结果和服务器侧结果进行客户端代码完整性检测。
其中,X、Y和Z均为大于1的正整数,X、Y和Z的具体取值可以根据实际应用的需求而定。其中,服务器侧结果由服务器根据校验目标和所述选取的一组校验序列进行计算所得;此外,服务器根据该客户端侧结果和服务器侧结果进行客户端代码完整性检测的方式具体也可以参见前面的实施例,在此不再赘述。
其中,该多组校验序列由服务器根据客户端的用户标识生成,其中,校验序列指示内存读取方式、校验算法和组包格式。该内存读取方式、校验算法和组包格式分别可以包括多种形式,具体可参见前面的实施例,在此不再赘述。
可选的,其中,根据确定的内存读取方式、校验算法和组包格式进行计算,得到计算结果,具体可以如下:
根据确定的内存读取方式从内存中读取所述校验目标的数据,根据确定的校验算法对所述数据进行计算,得到客户端的校验计算结果,根据确定的组包格式对所述客户端的校验计算结果进行封装,得到客户端侧结果。
例如,其中,根据确定的内存读取方式从内存中读取校验目标的数据,具体可以包括:
根据确定的内存读取方式确定校验目标地址和校验目标大小,根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数,根据该当前函数、校验目标地址和校验目标大小从内存中读取校验目标的数据。
以上各个步骤的具体实施可参见前面的实施例,在此不再赘述。
由上可知,本实施例的终端采用接收服务器发送的校验目标和服务器从多组校验序列中选取的一组校验序列,其中,校验序列由服务器根据用户标识生成,且校验序列指示内存读取方式、校验算法和组包格式,然后根据该接收到的校验目标和校验序列行计算,得到客户端侧结果,并将该客户端侧结果返回给服务器,以便服务器将服务器侧结果和客户端侧结果进行比较,以确定客户端代码是否完整性。由于在该方案中,不同的用户标识会随机产生不同的校验序列,而每一次选取的校验序列也是随机的,而且,不同的校验序列指示着不同的内存读取方式、校验算法和组包格式,所以,相对于现有技术中破解者只需分析一套逻辑而言(在现有技术中,所有客户端都是校验相同的地址,并使用相同的校验算法),大大增加了破解者绕过或欺骗客户端代码完整性检测的分析难度;而且,在该方案中,一个用户标识只能得到一小部分的逻辑,所以,即便该小部分逻辑被破解者所破解,也不会对整个***造成太大的影响,只要服务器对校验序列进行一下变化,那些与被破解的校验序列一致的用户同样也会被检测到,大大提高客户端代码完整性检测的检测效果,可以提高***的安全性。
实施例八、
相应的,本发明实施例还提供一种服务器,如图7所示,该服务器可以包括射频电路701、包括有一个或一个以上计算机可读存储介质的存储器702、输入单元703、显示单元704、包括有一个或者一个以上处理核心的处理器705、以及电源706等部件。本领域技术人员可以理解,图7中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路701可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器705处理;另外,将涉及上行的数据发送给基站。通常,RF电路701包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、SIM卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路701还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM、GPRS、CDMA、WCDMA、LTE、电子邮件、SMS,等。
存储器702可用于存储软件程序以及模块,处理器705通过运行存储在存储器702的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器702还可以包括存储器控制器,以提供处理器705和输入单元703对存储器702的访问。
输入单元703可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元703可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器705,并能接收处理器705发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元703还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元704可用于显示由用户输入的信息或提供给用户的信息以及服务器的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元704可包括显示面板,可选的,可以采用LCD、OLED等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器705以确定触摸事件的类型,随后处理器705根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图7中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
处理器705是服务器的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器702内的软件程序和/或模块,以及调用存储在存储器702内的数据,执行服务器的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器705可包括一个或多个处理核心;优选的,处理器705可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器705中。
服务器还包括给各个部件供电的电源706(比如电池),优选的,电源可以通过电源管理***与处理器705逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。电源706还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,服务器还可以包括音频电路、摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,服务器中的处理器705会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器702中,并由处理器705来运行存储在存储器702中的应用程序,从而实现各种功能:
此外,服务器还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行述一个或者一个以上程序包含用于进行以下操作的指令:
确定校验目标,并获取客户端的用户标识;根据该用户标识生成多组校验序列,其中,校验序列指示内存读取方式、校验算法和组包格式;从该多组校验序列中随机选取一组校验序列,根据选取的一组校验序列对校验目标进行计算,得到服务器侧结果;将该校验目标和选取的一组校验序列发送给客户端;接收客户端根据所述校验目标和校验序列进行计算所得到的客户端侧结果;将该服务器侧结果和客户端侧结果进行比较,若一致,则确定客户端代码完整,若不一致,则确定客户端代码不完整。
其中,随机数种子可以根据用户标识、用户的MAC地址、IP地址、用户的注册时间和/或用户的登陆时间来生成,即步骤“从该多组校验序列中随机选取一组校验序列”可以包括:
根据该用户标识、用户的MAC地址、IP地址、用户的注册时间和/或用户的登陆时间生成随机数种子,根据该随机数种子从该多组校验序列中随机选取一组校验序列。
可选的,其中,根据选取的一组校验序列对所述校验目标进行计算,得到服务器侧结果,可以包括:
根据选取的一组校验序列确定内存读取方式、校验算法和组包格式;根据确定的内存读取方式从内存中读取该校验目标的数据;根据确定的校验算法对该数据进行计算,得到服务器的校验计算结果;根据确定的组包格式对所述服务器的校验计算结果进行封装,得到服务器侧结果。
例如,其中,根据确定的内存读取方式从内存中读取所述校验目标的数据,具体可以包括:
根据确定的内存读取方式确定校验目标地址和校验目标大小,其中,该校验目标地址至少覆盖该校验目标的实际地址;根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数;根据该当前函数、校验目标地址和校验目标大小从内存中读取所述校验目标的数据。
此外,需说明的是,内存读取方式、校验算法和组包格式分别可以包括多种形式,具体可参见前面的实施例,在此不再赘述。例如,其中,组包内容至少包括如下各项参数:
校验目标地址、校验目标大小、校验计算结果、校验序列中的内存读取方式、校验序列中的校验算法和校验序列中的组包格式。
其中,组包格式可以指示各项组包内容在组包中的排列顺序,也就是说,组包格式可以包括这6个参数的排列顺序的任意组合方式。
可选的,为了使得组合的方式能够更复杂,还可以在组包内容中加入n个垃圾数据,即组包内容还可以包括n个垃圾数据,其中,n为正整数,也就是说,此时,组包格式为6+n个参数的排列顺序的任意组合,在此不再赘述。
其中,客户端具体可以安装在终端中。
以上各个步骤的实施具体可参见前面的实施例,在此不再赘述。
由上可知,本实施例的服务器采用根据用户标识生成多组校验序列,其中,该校验序列指示内存读取方式、校验算法和组包格式,然后从该多组校验序列中随机选取一组校验序列,一方面,根据该选取的一组校验序列对校验目标进行计算,得到服务器侧结果,另一方面,将校验目标和该选取的一组校验序列发送给客户端,并接收客户端根据该校验目标和校验序列进行计算所得到的客户端侧结果,然后,将服务器侧结果和客户端侧结果进行比较,以确定客户端代码是否完整性。由于在该方案中,不同的用户标识会随机产生不同的校验序列,而每一次选取的校验序列也是随机的,而且,不同的校验序列指示着不同的内存读取方式、校验算法和组包格式,所以,相对于现有技术中破解者只需分析一套逻辑而言(在现有技术中,所有客户端都是校验相同的地址,并使用相同的校验算法),大大增加了破解者绕过或欺骗客户端代码完整性检测的分析难度;而且,在该方案中,一个用户标识只能得到一小部分的逻辑,所以,即便该小部分逻辑被破解者所破解,也不会对整个***造成太大的影响,只要服务器对校验序列进行一下变化,那些与被破解的校验序列一致的用户同样也会被检测到,大大提高客户端代码完整性检测的检测效果,可以提高***的安全性。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种客户端代码完整性检测方法、装置和***进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (19)

1.一种客户端代码完整性检测方法,其特征在于,包括:
确定校验目标,并获取客户端的用户标识;
根据所述用户标识生成多组校验序列,所述校验序列指示内存读取方式、校验算法和组包格式;
从所述多组校验序列中随机选取一组校验序列,根据选取的一组校验序列对所述校验目标进行计算,得到服务器侧结果;
将所述校验目标和选取的一组校验序列发送给客户端;
接收客户端根据所述校验目标和校验序列进行计算所得到的客户端侧结果;
将所述服务器侧结果和客户端侧结果进行比较,若一致,则确定客户端代码完整,若不一致,则确定客户端代码不完整。
2.根据权利要求1所述的方法,其特征在于,所述根据选取的一组校验序列对所述校验目标进行计算,得到服务器侧结果,包括:
根据选取的一组校验序列确定内存读取方式、校验算法和组包格式;
根据确定的内存读取方式从内存中读取所述校验目标的数据;
根据确定的校验算法对所述数据进行计算,得到服务器的校验计算结果;
根据确定的组包格式对所述服务器的校验计算结果进行封装,得到服务器侧结果。
3.根据权利要求2所述的方法,其特征在于,所述根据确定的内存读取方式从内存中读取所述校验目标的数据,包括:
根据确定的内存读取方式确定校验目标地址和校验目标大小,所述校验目标地址至少覆盖所述校验目标的实际地址;
根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数;
根据所述当前函数、校验目标地址和校验目标大小从内存中读取所述校验目标的数据。
4.根据权利要求2所述的方法,其特征在于,所述组包格式指示各项组包内容在组包中的排列顺序,所述组包内容至少包括:
校验目标地址、校验目标大小、校验计算结果、校验序列中的内存读取方式、校验序列中的校验算法和校验序列中的组包格式。
5.根据权利要求4所述的方法,其特征在于,所述组包内容还包括n个垃圾数据,所述n为正整数。
6.根据权利要求1所述的方法,其特征在于,所述从所述多组校验序列中随机选取一组校验序列,包括:
根据所述用户标识、用户的媒体接入控制层地址、网际协议地址、用户的注册时间和/或用户的登陆时间生成随机数种子;
根据所述随机数种子从所述多组校验序列中随机选取一组校验序列。
7.一种客户端代码完整性检测方法,其特征在于,包括:
接收服务器发送的校验目标和服务器从多组校验序列中随机选取的一组校验序列,所述多组校验序列由服务器根据客户端的用户标识生成,所述校验序列指示内存读取方式、校验算法和组包格式;
根据接收到的校验序列从客户端预置的X套内存读取方式中确定内存读取方式、从客户端预置的Y套校验算法确定校验算法,以及从客户端预置的Z套组包格式中确定组包格式,所述X、Y和Z均为大于1的正整数;
根据确定的内存读取方式、校验算法和组包格式进行计算,得到客户端侧结果;
发送所述客户端侧结果给服务器,以便服务器根据所述客户端侧结果和服务器侧结果进行客户端代码完整性检测,所述服务器侧结果由服务器根据所述校验目标和所述选取的一组校验序列进行计算所得。
8.根据权利要求7所述的方法,其特征在于,所述根据确定的内存读取方式、校验算法和组包格式进行计算,得到客户端侧结果,包括:
根据确定的内存读取方式从内存中读取所述校验目标的数据;
根据确定的校验算法对所述数据进行计算,得到客户端的校验计算结果;
根据确定的组包格式对所述客户端的校验计算结果进行封装,得到客户端侧结果。
9.根据权利要求8所述的方法,其特征在于,所述根据确定的内存读取方式从内存中读取所述校验目标的数据,包括:
根据确定的内存读取方式确定校验目标地址和校验目标大小,所述校验目标地址至少覆盖所述校验目标的实际地址;
根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数;
根据所述当前函数、校验目标地址和校验目标大小从内存中读取所述校验目标的数据。
10.根据权利要求8所述的方法,其特征在于,所述组包格式指示各项组包内容在组包中的排列顺序,所述组包内容至少包括:
校验目标地址、校验目标大小、校验计算结果、校验序列中的内存读取方式、校验序列中的校验算法和校验序列中的组包格式。
11.根据权利要求10所述的方法,其特征在于,所述组包内容还包括n个垃圾数据,所述n为正整数。
12.一种服务器,其特征在于,包括:
确定单元,用于确定校验目标,并获取客户端的用户标识;
生成单元,用于根据所述用户标识生成多组校验序列,所述校验序列指示内存读取方式、校验算法和组包格式;
处理单元,用于从所述多组校验序列中随机选取一组校验序列,根据选取的一组校验序列对所述校验目标进行计算,得到服务器侧结果;
发送单元,用于将所述校验目标和选取的一组校验序列发送给客户端;
接收单元,用于接收客户端根据所述校验目标和校验序列进行计算所得到的客户端侧结果;
检测单元,用于将所述服务器侧结果和客户端侧结果进行比较,若一致,则确定客户端代码完整,若不一致,则确定客户端代码不完整。
13.根据权利要求12所述的服务器,其特征在于,所述处理单元包括选择子单元、确定子单元、读取子单元、运算子单元和封装子单元;
选择子单元,用于从所述多组校验序列中随机选取一组校验序列
确定子单元,用于根据选取的一组校验序列确定内存读取方式、校验算法和组包格式;
读取子单元,用于根据确定的内存读取方式从内存中读取所述校验目标的数据;
运算子单元,用于根据确定的校验算法对所述数据进行计算,得到服务器的校验计算结果;
封装子单元,用于根据确定的组包格式对所述服务器的校验计算结果进行封装,得到服务器侧结果。
14.根据权利要求13所述的服务器,其特征在于,
所述读取子单元,具体用于根据确定的内存读取方式确定校验目标地址和校验目标大小,所述校验目标地址至少覆盖所述校验目标的实际地址;根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数;根据所述当前函数、校验目标地址和校验目标大小从内存中读取所述校验目标的数据。
15.根据权利要求12所述的服务器,其特征在于,
所述处理单元,具体用于根据所述用户标识、用户的媒体接入控制层地址、网际协议地址、用户的注册时间和/或用户的登陆时间生成随机数种子,根据所述随机数种子从所述多组校验序列中随机选取一组校验序列,根据选取的一组校验序列对所述校验目标进行计算,得到服务器侧结果。
16.一种客户端,其特征在于,包括:
接收单元,用于接收服务器发送的校验目标和服务器从多组校验序列中随机选取的一组校验序列,所述多组校验序列由服务器根据客户端的用户标识生成,所述校验序列指示内存读取方式、校验算法和组包格式;
确定单元,用于根据接收到的校验序列从客户端预置的X套内存读取方式中确定内存读取方式、从客户端预置的Y套校验算法确定校验算法,以及从客户端预置的Z套组包格式中确定组包格式,所述X、Y和Z均为大于1的正整数;
处理单元,用于根据确定的内存读取方式、校验算法和组包格式进行计算,得到客户端侧结果;
发送单元,用于发送所述客户端侧结果给服务器,以便服务器根据所述客户端侧结果和服务器侧结果进行客户端代码完整性检测,所述服务器侧结果由服务器根据所述校验目标和所述选取的一组校验序列进行计算所得。
17.根据权利要求16所述的客户端,其特征在于,所述处理单元包括读取子单元、运算子单元和封装子单元;
读取子单元,用于根据确定的内存读取方式从内存中读取所述校验目标的数据;
运算子单元,用于根据确定的校验算法对所述数据进行计算,得到客户端的校验计算结果;
封装子单元,用于根据确定的组包格式对所述客户端的校验计算结果进行封装,得到客户端侧结果。
18.根据权利要求17所述的客户端,其特征在于,
所述读取子单元,具体用于根据确定的内存读取方式确定校验目标地址和校验目标大小,所述校验目标地址至少覆盖所述校验目标的实际地址,根据确定的内存读取方式从预置的多种读取内存的函数中确定当前函数,根据所述当前函数、校验目标地址和校验目标大小从内存中读取所述校验目标的数据。
19.一种通信***,其特征在于,包括权利要求12至15任一项所述的服务器和权利要求16至18任一项所述的客户端。
CN201310236126.4A 2013-06-14 2013-06-14 一种客户端代码完整性检测方法、装置和*** Active CN103345602B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201310236126.4A CN103345602B (zh) 2013-06-14 2013-06-14 一种客户端代码完整性检测方法、装置和***
PCT/CN2014/079772 WO2014198228A1 (en) 2013-06-14 2014-06-12 Method, apparatus and system for verifying code integrity on clients
US14/869,607 US10083028B2 (en) 2013-06-14 2015-09-29 Method, apparatus and system for verifying code integrity on clients
US16/028,049 US10481905B2 (en) 2013-06-14 2018-07-05 Method, apparatus and system for verifying code integrity on clients

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310236126.4A CN103345602B (zh) 2013-06-14 2013-06-14 一种客户端代码完整性检测方法、装置和***

Publications (2)

Publication Number Publication Date
CN103345602A true CN103345602A (zh) 2013-10-09
CN103345602B CN103345602B (zh) 2015-08-19

Family

ID=49280397

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310236126.4A Active CN103345602B (zh) 2013-06-14 2013-06-14 一种客户端代码完整性检测方法、装置和***

Country Status (3)

Country Link
US (2) US10083028B2 (zh)
CN (1) CN103345602B (zh)
WO (1) WO2014198228A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014198228A1 (en) * 2013-06-14 2014-12-18 Tencent Technology (Shenzhen) Company Limited Method, apparatus and system for verifying code integrity on clients
CN107194250A (zh) * 2017-03-31 2017-09-22 武汉斗鱼网络科技有限公司 内存代码的完整性校验方法及装置
CN108259490A (zh) * 2018-01-12 2018-07-06 武汉斗鱼网络科技有限公司 一种客户端校验方法及装置
CN109635567A (zh) * 2019-01-29 2019-04-16 腾讯科技(深圳)有限公司 针对应用客户端的校验方法、装置及服务器平台
CN111478903A (zh) * 2020-04-07 2020-07-31 浙江同花顺智能科技有限公司 一种基于客户端的验证方法、服务器及存储介质
CN111639312A (zh) * 2020-06-02 2020-09-08 腾讯科技(成都)有限公司 反调试方法、装置、存储介质及电子装置
CN112163237A (zh) * 2020-09-01 2021-01-01 北京字节跳动网络技术有限公司 数据处理方法、装置和电子设备
CN113132406A (zh) * 2021-04-29 2021-07-16 山东云天安全技术有限公司 一种基于ssh流量发现网络威胁的检测方法、设备及介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10210334B2 (en) * 2016-10-04 2019-02-19 Dell Products L.P. Systems and methods for software integrity assurance via validation using build-time integrity windows
CN109891821A (zh) * 2016-11-02 2019-06-14 斯凯耶科德公司 用于使用非安全终端安全地执行敏感性操作的方法
EP3319069B1 (en) 2016-11-02 2019-05-01 Skeyecode Method for authenticating a user by means of a non-secure terminal
EP3319269A1 (en) * 2016-11-02 2018-05-09 Skeyecode Method for securely performing a sensitive operation using a non-secure terminal
EP3319002B1 (en) * 2016-11-02 2019-05-22 Skeyecode Method for securely performing a sensitive operation using a non-secure terminal
FR3065553B1 (fr) * 2017-04-20 2019-04-26 Idemia Identity And Security Procede d'execution d'un programme destine a etre interprete par une machine virtuelle protege contre des attaques par injection de faute
US11651077B2 (en) * 2021-01-22 2023-05-16 Dell Products L.P. Systems and methods for providing secured boot and scan for devices with limited access

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100077454A1 (en) * 2007-08-01 2010-03-25 China Iwncomm Co., Ltd Trusted network connect method based on tri-element peer authentication
CN101795293A (zh) * 2010-01-27 2010-08-04 浪潮(北京)电子信息产业有限公司 一种文件的下载方法、***及发送装置、检测装置
CN102082784A (zh) * 2010-11-11 2011-06-01 广东欧珀电子工业有限公司 一种软件在线升级方法
CN102982258A (zh) * 2012-11-09 2013-03-20 北京深思洛克软件技术股份有限公司 一种对移动应用程序进行原版校验的***

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804760B2 (en) * 1994-12-23 2004-10-12 Micron Technology, Inc. Method for determining a type of memory present in a system
US20090245516A1 (en) * 2008-02-26 2009-10-01 Pasupuleti Sureshbabu Ravikiran Method and system for high entropy encryption using an unpredictable seed based on user regisration time
US7620041B2 (en) * 2004-04-15 2009-11-17 Alcatel-Lucent Usa Inc. Authentication mechanisms for call control message integrity and origin verification
GB2426837A (en) * 2005-06-01 2006-12-06 Hewlett Packard Development Co Checking the integrity of a software component
US7970820B1 (en) * 2008-03-31 2011-06-28 Amazon Technologies, Inc. Locality based content distribution
US8285999B1 (en) * 2008-12-05 2012-10-09 The Research Foundation Of State University Of New York System and method for authenticating remote execution
US8893210B2 (en) * 2010-08-20 2014-11-18 Sony Corporation Server load balancing for interactive television
US8819827B1 (en) * 2010-11-10 2014-08-26 Open Invention Network, Llc Method and apparatus of performing data executable integrity verification
CN102790790A (zh) * 2011-10-21 2012-11-21 北京安天电子设备有限公司 快速获取web服务器文件完整性的校验***及方法
US8904507B2 (en) * 2011-11-29 2014-12-02 American Megatrends, Inc. System and method for controlling user access to a service processor
US20140096246A1 (en) * 2012-10-01 2014-04-03 Google Inc. Protecting users from undesirable content
KR101740256B1 (ko) * 2012-11-26 2017-06-09 한국전자통신연구원 모바일 앱 무결성 보증 장치 및 방법
CN103345602B (zh) * 2013-06-14 2015-08-19 腾讯科技(深圳)有限公司 一种客户端代码完整性检测方法、装置和***

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100077454A1 (en) * 2007-08-01 2010-03-25 China Iwncomm Co., Ltd Trusted network connect method based on tri-element peer authentication
CN101795293A (zh) * 2010-01-27 2010-08-04 浪潮(北京)电子信息产业有限公司 一种文件的下载方法、***及发送装置、检测装置
CN102082784A (zh) * 2010-11-11 2011-06-01 广东欧珀电子工业有限公司 一种软件在线升级方法
CN102982258A (zh) * 2012-11-09 2013-03-20 北京深思洛克软件技术股份有限公司 一种对移动应用程序进行原版校验的***

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10481905B2 (en) 2013-06-14 2019-11-19 Tencent Technology (Shenzhen) Company Limited Method, apparatus and system for verifying code integrity on clients
WO2014198228A1 (en) * 2013-06-14 2014-12-18 Tencent Technology (Shenzhen) Company Limited Method, apparatus and system for verifying code integrity on clients
US10083028B2 (en) 2013-06-14 2018-09-25 Tencent Technology (Shenzhen) Company Limited Method, apparatus and system for verifying code integrity on clients
CN107194250A (zh) * 2017-03-31 2017-09-22 武汉斗鱼网络科技有限公司 内存代码的完整性校验方法及装置
CN108259490B (zh) * 2018-01-12 2021-02-02 武汉斗鱼网络科技有限公司 一种客户端校验方法及装置
CN108259490A (zh) * 2018-01-12 2018-07-06 武汉斗鱼网络科技有限公司 一种客户端校验方法及装置
CN109635567A (zh) * 2019-01-29 2019-04-16 腾讯科技(深圳)有限公司 针对应用客户端的校验方法、装置及服务器平台
CN109635567B (zh) * 2019-01-29 2022-12-16 腾讯科技(深圳)有限公司 针对应用客户端的校验方法、装置及服务器平台
CN111478903A (zh) * 2020-04-07 2020-07-31 浙江同花顺智能科技有限公司 一种基于客户端的验证方法、服务器及存储介质
CN111639312A (zh) * 2020-06-02 2020-09-08 腾讯科技(成都)有限公司 反调试方法、装置、存储介质及电子装置
CN112163237A (zh) * 2020-09-01 2021-01-01 北京字节跳动网络技术有限公司 数据处理方法、装置和电子设备
CN113132406A (zh) * 2021-04-29 2021-07-16 山东云天安全技术有限公司 一种基于ssh流量发现网络威胁的检测方法、设备及介质
CN113132406B (zh) * 2021-04-29 2022-06-07 山东云天安全技术有限公司 一种基于ssh流量发现网络威胁的检测方法、设备及介质

Also Published As

Publication number Publication date
US10083028B2 (en) 2018-09-25
US10481905B2 (en) 2019-11-19
US20160019058A1 (en) 2016-01-21
WO2014198228A1 (en) 2014-12-18
CN103345602B (zh) 2015-08-19
US20180329703A1 (en) 2018-11-15

Similar Documents

Publication Publication Date Title
CN103345602B (zh) 一种客户端代码完整性检测方法、装置和***
CN103616981B (zh) 应用处理方法、装置及移动终端
CN103400076B (zh) 一种移动终端上的恶意软件检测方法、装置和***
CN104618217B (zh) 分享资源的方法、终端、服务器及***
EP3200487A1 (en) Message processing method and apparatus
CN103701926A (zh) 一种获取故障原因信息的方法、装置和***
CN104376353A (zh) 二维码的生成、读取方法、终端及服务器
CN103634294A (zh) 信息验证方法和装置
CN104852885A (zh) 一种进行验证码验证的方法、装置和***
CN103854298A (zh) 一种图片与二维码融合的方法及终端
CN104519485A (zh) 一种终端之间的通信方法、装置和***
CN103763112B (zh) 一种用户身份保护方法和装置
CN104580167A (zh) 一种传输数据的方法、装置和***
CN104065693A (zh) 一种网页应用中网络数据的访问方法、装置和***
CN103678605A (zh) 一种信息传输的方法、装置及终端设备
CN104123276A (zh) 一种浏览器中弹窗的拦截方法、装置和***
CN104901991A (zh) 虚拟资源转移方法、装置和***
CN103177217B (zh) 一种文件扫描方法、***及客户端和服务器
CN104917796A (zh) 信用账户创建装置、***和方法
CN106255102A (zh) 一种终端设备的鉴定方法及相关设备
CN106685948A (zh) 一种数据处理方法、终端、通信设备及数据处理***
CN103546887A (zh) 一种应用软件传输方法、装置、终端及服务器
CN106453402A (zh) 一种数据处理方法及设备
CN104899488B (zh) 数值转移方法及装置
CN107995151B (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
C14 Grant of patent or utility model
GR01 Patent grant