CN108509329B - 对客户端上执行的操作进行验证的方法及装置 - Google Patents

对客户端上执行的操作进行验证的方法及装置 Download PDF

Info

Publication number
CN108509329B
CN108509329B CN201710107412.9A CN201710107412A CN108509329B CN 108509329 B CN108509329 B CN 108509329B CN 201710107412 A CN201710107412 A CN 201710107412A CN 108509329 B CN108509329 B CN 108509329B
Authority
CN
China
Prior art keywords
server
client
execution result
verification
logic code
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.)
Active
Application number
CN201710107412.9A
Other languages
English (en)
Other versions
CN108509329A (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 CN201710107412.9A priority Critical patent/CN108509329B/zh
Publication of CN108509329A publication Critical patent/CN108509329A/zh
Application granted granted Critical
Publication of CN108509329B publication Critical patent/CN108509329B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种对客户端上执行的操作进行验证的方法及装置。其中,该方法包括:通过调用动态链接库文件,在第一服务器上执行动态链接库文件中封装的操作逻辑代码,得到第一执行结果;根据第一执行结果和第二执行结果对目标操作进行验证;将进行验证得到的验证结果从第一服务器传输到第二服务器。本发明解决了现有技术中对客户端上执行的操作进行验证时的验证效率较低的技术问题。

Description

对客户端上执行的操作进行验证的方法及装置
技术领域
本发明涉及计算机领域,具体而言,涉及一种对客户端上执行的操作进行验证的方法及装置。
背景技术
随着互联网技术的迅猛发展,为了跟上日新月异的发展速度,对软件应用的开发和运行要求也越来越高,人们都在追求软件应用的开发和运行中的效率。比如,在游戏产业中,很多游戏的运行过程中,为了保证在一些游戏模式(例如:人机对战PVE战斗过程)中客户端与服务器端的一致性,需要对这些游戏模式进行校验。在一致性校验的过程中,需要客户端和服务器端运行相同的战斗逻辑代码,这就要求战斗逻辑代码在服务器端和客户端能够跨平台运行,如战斗逻辑代码为C++实现,则客户端和服务器跨平台运行比较方便。而在一些特定的条件下,如服务器端是Linux ***C++环境,客户端是C#实现,要想实现C#代码在Linux上运行则不太容易。在目前的一致性校验的方案中,通过mono在Linux上运行C# 代码,具体为:如图1所示,通过mono自带的C#编译器编译客户端的战斗验证C#代码生成可执行程序(如:a.exe),然后通过mono运行时运行该可执行程序,命令是:mono a.exe,因为游戏主逻辑服务器gamesvr是基于游戏的服务框架(例如:游戏服务框架(Service FrameworkFor Game,简称为SF4G))实现的,为了提高开发效率且方便用通信通道(Bus)与 gamesvr进行通信,通信通道(Bus)是SF4G框架的进程间的通信通道,可以用C++来实现验证服务器Checksvr,然后通过Checksvr调用mono a.exe,可以称该方案为方案A。
在A方案中通过子进程的形式运行mono,再通过mono调用a.exe(C# 验证逻辑编译生成的可执行文件),该方案效率比较低,有如下测试结果:
Figure BDA0001232612590000021
其中example.exe是mono的C#编译器mcs编译example.cs得到的可执行文件,example.cs只有一行打印信息,如下:
Figure BDA0001232612590000022
在4核4G内存的开发机上执行10000次循环耗时308秒,约32.5次 /秒,这样的处理效率太低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种对客户端上执行的操作进行验证的方法及装置,以至少解决现有技术中对客户端上执行的操作进行验证时的验证效率较低的技术问题。
根据本发明实施例的一个方面,提供了一种对客户端上执行的操作进行验证的方法,包括:通过调用动态链接库文件,在第一服务器上执行所述动态链接库文件中封装的操作逻辑代码,得到第一执行结果,其中,所述操作逻辑代码用于在客户端上执行目标操作,所述操作逻辑代码的编写语言与用于实现所述第一服务器的编写语言不同;根据所述第一执行结果和第二执行结果对所述目标操作进行验证,其中,所述第二执行结果是在所述客户端上执行所述操作逻辑代码所产生的执行结果;将进行所述验证得到的验证结果从所述第一服务器传输到第二服务器,其中,所述第一服务器和所述第二服务器是基于相同的应用服务框架,并使用相同的编写语言实现的,所述应用服务框架是跨平台的服务器框架。
根据本发明实施例的另一方面,还提供了一种对客户端上执行的操作进行验证的装置,包括:执行模块,用于通过调用动态链接库文件,在第一服务器上执行所述动态链接库文件中封装的操作逻辑代码,得到第一执行结果,其中,所述操作逻辑代码用于在客户端上执行目标操作,所述操作逻辑代码的编写语言与用于实现所述第一服务器的编写语言不同;验证模块,用于根据所述第一执行结果和第二执行结果对所述目标操作进行验证,其中,所述第二执行结果是在所述客户端上执行所述操作逻辑代码所产生的执行结果;传输模块,用于将进行所述验证得到的验证结果从所述第一服务器传输到第二服务器,其中,所述第一服务器和所述第二服务器是基于相同的应用服务框架,并使用相同的编写语言实现的,所述应用服务框架是跨平台的服务器框架。
在本发明实施例中,通过调用动态链接库文件,在第一服务器上执行动态链接库文件中封装的操作逻辑代码,得到第一执行结果,其中,操作逻辑代码用于在客户端上执行目标操作,操作逻辑代码的编写语言与用于实现第一服务器的编写语言不同;根据第一执行结果和第二执行结果对目标操作进行验证,其中,第二执行结果是在客户端上执行操作逻辑代码所产生的执行结果;将进行验证得到的验证结果从第一服务器传输到第二服务器,其中,第一服务器和第二服务器是基于相同的应用服务框架,并使用相同的编写语言实现的,应用服务框架是跨平台的服务器框架。也就是说,用于在客户端上执行目标操作的操作逻辑代码封装成了动态链接库文件,通过调用该动态链接库文件,在第一服务器上执行动态链接库文件中封装的操作逻辑代码得到第一执行结果,再根据第一执行结果和客户端执行该操作逻辑代码产生的第二执行结果对目标操作进行验证,并将验证结果传输给第二服务器,这样将客户端上执行目标操作的操作逻辑代码封装成在第一服务器上能够执行的动态链接库文件,再由第一服务器调用该动态链接库文件进行执行,实现了对客户端上执行的操作进行验证的同时能够避免引入其他执行程序进行验证,从而提高了对客户端上执行的操作进行验证时的验证效率,进而克服现有技术中对客户端上执行的操作进行验证时的验证效率较低的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据相关技术的一种对客户端上执行的操作进行验证的应用场景示意图;
图2是根据本发明实施例的一种可选的对客户端上执行的操作进行验证的应用环境示意图;
图3是根据本发明实施例的一种可选的对客户端上执行的操作进行验证的方法的示意图;
图4是根据本发明实施例的一种可选的对客户端上执行的操作进行验证的装置的示意图;
图5是根据本发明实施例的一种可选的对客户端上执行的操作进行验证的装置的示意图;
图6是根据本发明实施例的一种可选的对客户端上执行的操作进行验证的装置的示意图;
图7是根据本发明实施例的一种可选的对客户端上执行的操作进行验证的装置的示意图;
图8是根据本发明实施例的一种可选的对客户端上执行的操作进行验证的装置的示意图;
图9是根据本发明实施例的一种可选的对客户端上执行的操作进行验证的方法的应用场景示意图;以及
图10是根据本发明实施例的一种可选的对客户端上执行的操作进行验证的设备的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
在本发明实施例中,提供了一种上述对客户端上执行的操作进行验证的方法的实施例。作为一种可选的实施方式,该对客户端上执行的操作进行验证的方法可以但不限于应用于如图2所示的应用环境中,客户端202 通过网络206与第一服务器204连接,第一服务器204与第二服务器208 连接,第一服务器204,用于通过调用动态链接库文件,在第一服务器204 上执行动态链接库文件中封装的操作逻辑代码,得到第一执行结果,根据第一执行结果和第二执行结果对目标操作进行验证,将进行验证得到的验证结果从第一服务器204传输到第二服务器208,其中,操作逻辑代码用于在客户端202上执行目标操作,操作逻辑代码的编写语言与用于实现第一服务器204的编写语言不同,第二执行结果是在客户端202上执行操作逻辑代码所产生的执行结果,第一服务器204和第二服务器208是基于相同的应用服务框架,并使用相同的编写语言实现的,应用服务框架是跨平台的服务器框架。
在本实施例中,用于在客户端上执行目标操作的操作逻辑代码封装成了动态链接库文件,通过调用该动态链接库文件,在第一服务器上执行动态链接库文件中封装的操作逻辑代码得到第一执行结果,再根据第一执行结果和客户端执行该操作逻辑代码产生的第二执行结果对目标操作进行验证,并将验证结果传输给第二服务器,这样将客户端上执行目标操作的操作逻辑代码封装成在第一服务器上能够执行的动态链接库文件,再由第一服务器调用该动态链接库文件进行执行,实现了对客户端上执行的操作进行验证的同时能够避免引入其他执行程序进行验证,从而提高了对客户端上执行的操作进行验证时的验证效率,进而克服现有技术中对客户端上执行的操作进行验证时的验证效率较低的问题。
可选地,在本实施例中,上述客户端可以包括但不限于以下至少之一:手机、平板电脑、笔记本电脑、台式PC机、数字电视及其他进行区域共享的硬件设备。上述网络可以包括但不限于以下至少之一:广域网、城域网、局域网。上述只是一种示例,本实施例对此不做任何限定。
可选地,在本实施例中,第一服务器204用于:判断第一执行结果和第二执行结果是否相同;在判断出第一执行结果和第二执行结果相同的情况下,确定目标操作通过一致性验证;在判断出第一执行结果和第二执行结果不相同的情况下,确定目标操作未通过一致性验证。
可选地,在本实施例中,第一服务器204用于:通过第一服务器与第二服务器之间的通信通道将验证结果从第一服务器传输到第二服务器,其中,通信通道用于在基于应用服务框架的进程之间进行通信。
可选地,在本实施例中,第一服务器是基于Windows***下的应用服务框架、使用C++编写语言实现的,第二服务器是基于Linux***下的应用服务框架、使用C++编写语言实现的,操作逻辑代码的编写语言为 C#。
可选地,在本实施例中,应用服务框架为游戏服务框架。
可选地,在本实施例中,第一服务器204用于:获取动态链接库文件,其中,动态链接库文件是通过对客户端上执行的操作逻辑代码进行封装得到的。
可选地,在本实施例中,第一服务器204用于:接收客户端传输的动态链接库文件;或者,接收客户端传输的操作逻辑代码,并将操作逻辑代码封装到动态链接库文件中。
在对客户端与服务器端的一致性进行验证的方案中,可以使客户端和服务器端执行相同的操作逻辑代码,这种验证方式被称为强校验方式。
作为一种可选的实施方式,上述第一服务器204可以但不限于是基于 Windows***下的应用服务框架SF4G、使用C++编写语言实现的服务器,上述第二服务器208可以但不限于是基于Linux***下的应用服务框架 SF4G、使用C++编写语言实现的服务器,上述客户端202可以但不限于是使用C#编写语言实现的。
可选地,在本实施方式中,上述第一服务器和第二服务器之间可以通过通信通道(Bus)进行数据的传输,该通信通道(Bus)可以是基于应用服务框架SF4G实现的服务器之间的进程的通信通道。
在本实施方式提供的场景下,由于客户端和服务器端使用了不同的编写语言实现,导致对客户端和服务器端的一致性进行强校验是难以实现的,将上述对客户端上执行的操作进行验证的方法应用在本实施方式下,利用动态链接库文件实现了对客户端和服务器端的一致性的强校验,进一步也提高了对客户端和服务器端的一致性验证的验证效率。
需要说明的是,上述对客户端上执行的操作进行验证的方法不限于应用于上述实施方式提供的应用场景中,上述实施方式只是应用场景的一个示例。
根据本发明实施例,提供了一种对客户端上执行的操作进行验证的方法,如图3所示,该方法包括:
S302,通过调用动态链接库文件,在第一服务器上执行动态链接库文件中封装的操作逻辑代码,得到第一执行结果,其中,操作逻辑代码用于在客户端上执行目标操作,操作逻辑代码的编写语言与用于实现第一服务器的编写语言不同;
S304,根据第一执行结果和第二执行结果对目标操作进行验证,其中,第二执行结果是在客户端上执行操作逻辑代码所产生的执行结果;
S306,将进行验证得到的验证结果从第一服务器传输到第二服务器,其中,第一服务器和第二服务器是基于相同的应用服务框架,并使用相同的编写语言实现的,应用服务框架是跨平台的服务器框架。
可选地,在本实施例中,上述对客户端上执行的操作进行验证的方法可以但不限于应用于对客户端上执行的操作进行验证的场景。其中,上述客户端可以但不限于为各种类型的需要对客户端与服务器端的一致性进行验证的应用的客户端,例如,在线教育应用、视频直播应用、即时通讯应用、理财应用、游戏应用等。具体的,可以但不限于应用于在上述游戏应用中对客户端上执行的操作进行验证的场景中,或还可以但不限于应用于在上述视频直播应用中对客户端上执行的操作进行验证的场景中,以实现客户端与服务器端的一致性验证。上述仅是一种示例,本实施例中对此不做任何限定。
可选地,在本实施例中,上述对客户端上执行的操作进行验证的方法可以但不限于应用于上述第一服务器,由第一服务器对客户端与服务器端的一致性进行验证。
可选地,在本实施例中,上述动态链接库文件可以但不限于是通过对客户端上执行的操作逻辑代码进行封装得到的.dll文件。
可选地,在本实施例中,上述操作逻辑代码可以但不限于为C#代码。
可选地,在本实施例中,上述操作逻辑代码的编写语言与用于实现第一服务器的编写语言不同。例如:操作逻辑代码的编写语言可以但不限于为C#,实现第一服务器的编写语言可以但不限于为C++。
可选地,在本实施例中,上述应用服务框架可以但不限于是跨平台的服务器框架。作为一种可选的示例,上述平台可以但不限于为操作***,例如,Windows或Linux,上述跨平台的服务器框架可以但不限于指的是应用于不同操作***的服务器框架,换句话说,上述应用服务框架可以但不限于用于在不同的操作***下实现服务器。例如:使用上述应用服务框架实现的基于Windows***的服务器,以及使用上述应用服务框架实现的基于Linux***的服务器。
可选地,在本实施例中,上述第一服务器可以但不限于为用来进行一致性验证的Windows版的验证服务器Checksvr。上述通信通道可以但不限于为Bus通道,该Bus通道可以是基于应用服务框架SF4G实现的服务器之间的进程的通信通道。
可选地,在本实施例中,上述第二服务器可以但不限于为主逻辑服务器Gamesvr。上述验证服务器Checksvr在对客户端和服务器端的一致性进行验证后可以将验证结果通过通信通道传输给主逻辑服务器Gamesvr。
可选地,在本实施例中,上述通信通道可以但不限于为Bus通道。上述应用服务框架可以但不限于为游戏服务框架(Service Framework For Game,简称为SF4G)。
可选地,在本实施例中,上述目标操作指在客户端上执行的操作,上述客户端通过执行上述操作逻辑代码来实现上述目标操作。例如:在游行应用中,客户端通过执行战斗逻辑代码来实现游戏中的战斗操作。
可选地,在本实施例中,对客户端和服务器端的一致性进行验证的过程可以但不限于是由客户端触发的。例如:客户端可以向第二服务器发送验证请求,第二服务器将该验证请求发送给第一服务器,由第一服务器对客户端与服务器端的一致性进行验证,得到验证结果后,第一服务器将得到的验证结果返回给第二服务器。
可见,通过上述步骤,用于在客户端上执行目标操作的操作逻辑代码封装成动态链接库文件,通过调用该动态链接库文件,在第一服务器上执行动态链接库文件中封装的操作逻辑代码得到第一执行结果,再根据第一执行结果和客户端执行该操作逻辑代码产生的第二执行结果对目标操作进行验证,并将验证结果传输给第二服务器,这样将客户端上执行目标操作的操作逻辑代码封装成在第一服务器上能够执行的动态链接库文件,再由第一服务器调用该动态链接库文件进行执行,实现了对客户端上执行的操作进行验证的同时能够避免引入其他执行程序进行验证,从而提高了对客户端上执行的操作进行验证时的验证效率,进而克服现有技术中对客户端上执行的操作进行验证时的验证效率较低的问题。
作为一种可选的方案,根据第一执行结果和第二执行结果对目标操作进行验证包括:
S1,判断第一执行结果和第二执行结果是否相同;
S2,在判断出第一执行结果和第二执行结果相同的情况下,确定目标操作通过一致性验证;
S3,在判断出第一执行结果和第二执行结果不相同的情况下,确定目标操作未通过一致性验证。
可选地,在本实施例中,可以通过判断第一执行结果和第二执行结果是否相同来确定目标操作是否通过一致性验证。
可选地,在本实施例中,客户端执行操作逻辑代码得到的第二执行结果可能是被进行过恶意篡改的,比如:篡改了执行结果或者篡改了操作逻辑代码。那么通过上述一致性验证就可以验证出客户端的操作逻辑代码或者第二执行结果是否与服务器端一致,如果一致则通过验证,如果不一致,则未通过验证,从而提高应用的安全性。
可选地,在本实施例中,第一服务器可以但不限于是基于Windows ***下的应用服务框架、使用C++编写语言实现的,第二服务器可以但不限于是基于Linux***下的应用服务框架、使用C++编写语言实现的,操作逻辑代码的编写语言为C#。
可选地,在本实施例中,用于执行上述操作逻辑代码的客户端可以但不限于是使用C#编写语言实现的。
通过上述步骤,在客户端是C#环境,服务器是Linux C++环境,并且二者同时基于SF4G框架构建的情况下,能够实现客户端与服务器端一致性的强校验。从而解决了基于以上条件限制(客户端是C#环境,服务器是Linux C++环境,并且二者同时基于SF4G框架)无法实现客户端与服务器端一致性的强校验的问题,实现了在以上条件下客户端与服务器端一致性的强校验,且校验效率比较高。
作为一种可选的方案,在通过调用动态链接库文件,在第一服务器上执行动态链接库文件中封装的操作逻辑代码,得到第一执行结果之前,还包括:
S1,获取所述动态链接库文件,其中,所述动态链接库文件是通过对客户端上执行的操作逻辑代码进行封装得到的。
可选地,在本实施例中,可以通过以下方式之一获取动态链接库文件:
方式1,接收客户端传输的动态链接库文件;
方式2,接收客户端传输的操作逻辑代码,并将操作逻辑代码封装到动态链接库文件中。
可选地,在本实施例中,可以但不限于由客户端对操作逻辑代码进行封装,得到动态链接库文件,再将得到的动态链接库文件传输给第一服务器,由第一服务器调用动态链接库文件进行客户端与服务器端的一致性验证。
可选地,在本实施例中,还可以但不限于由客户端将操作逻辑代码发送给第一服务器,再由第一服务器将操作逻辑代码封装到动态链接库文件中,并调用该动态链接库文件进行客户端与服务器端的一致性验证。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如 ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述对客户端上执行的操作进行验证的方法的对客户端上执行的操作进行验证的装置,如图4所示,该装置包括:
1)执行模块42,用于通过调用动态链接库文件,在第一服务器上执行动态链接库文件中封装的操作逻辑代码,得到第一执行结果,其中,操作逻辑代码用于在客户端上执行目标操作,操作逻辑代码的编写语言与用于实现第一服务器的编写语言不同;
2)验证模块44,用于根据第一执行结果和第二执行结果对目标操作进行验证,其中,第二执行结果是在客户端上执行操作逻辑代码所产生的执行结果;
3)传输模块46,用于将进行验证得到的验证结果从第一服务器传输到第二服务器,其中,第一服务器和第二服务器是基于相同的应用服务框架,并使用相同的编写语言实现的,应用服务框架是跨平台的服务器框架。
可选地,在本实施例中,上述对客户端上执行的操作进行验证的装置可以但不限于应用于对客户端上执行的操作进行验证的场景。其中,上述客户端可以但不限于为各种类型的需要对客户端与服务器端的一致性进行验证的应用的客户端,例如,在线教育应用、视频直播应用、即时通讯应用、理财应用、游戏应用等。具体的,可以但不限于应用于在上述游戏应用中对客户端上执行的操作进行验证的场景中,或还可以但不限于应用于在上述视频直播应用中对客户端上执行的操作进行验证的场景中,以实现客户端与服务器端的一致性验证。上述仅是一种示例,本实施例中对此不做任何限定。
可选地,在本实施例中,上述对客户端上执行的操作进行验证的装置可以但不限于应用于上述第一服务器,由第一服务器对客户端与服务器端的一致性进行验证。
可选地,在本实施例中,上述动态链接库文件可以但不限于是通过对客户端上执行的操作逻辑代码进行封装得到的.dll文件。
可选地,在本实施例中,上述操作逻辑代码可以但不限于为C#代码。
可选地,在本实施例中,上述操作逻辑代码的编写语言与用于实现第一服务器的编写语言不同。例如:操作逻辑代码的编写语言可以但不限于为C#,实现第一服务器的编写语言可以但不限于为C++。
可选地,在本实施例中,上述应用服务框架可以但不限于是跨平台的服务器框架可选地,在本实施例中,上述应用服务框架可以但不限于是跨平台的服务器框架。作为一种可选的示例,上述平台可以但不限于为操作***,例如,Windows或Linux,上述跨平台的服务器框架可以但不限于指的是应用于不同操作***的服务器框架,换句话说,上述应用服务框架可以但不限于用于在不同的操作***下实现服务器。例如:使用上述应用服务框架实现的基于Windows***的服务器,以及使用上述应用服务框架实现的基于Linux***的服务器。
可选地,在本实施例中,上述第一服务器可以但不限于为用来进行一致性验证的Windows版的验证服务器checksvr。上述通信通道可以但不限于为Bus通道,该Bus通道可以是基于应用服务框架SF4G实现的服务器之间的进程的通信通道。
可选地,在本实施例中,上述第二服务器可以但不限于为主逻辑服务器Gamesvr。上述验证服务器Checksvr在对客户端和服务器端的一致性进行验证后可以将验证结果通过通信通道传输给主逻辑服务器Gamesvr。
可选地,在本实施例中,上述通信通道可以但不限于为Bus通道。上述应用服务框架可以但不限于为游戏服务框架(Service Framework For Game,简称为SF4G)。
可选地,在本实施例中,上述目标操作指在客户端上执行的操作,上述客户端通过执行上述操作逻辑代码来实现上述目标操作。例如:在游行应用中,客户端通过执行战斗逻辑代码来实现游戏中的战斗操作。
可选地,在本实施例中,对客户端和服务器端的一致性进行验证的过程可以但不限于是由客户端触发的。例如:客户端可以向第二服务器发送验证请求,第二服务器将该验证请求发送给第一服务器,由第一服务器对客户端与服务器端的一致性进行验证,得到验证结果后,第一服务器将得到的验证结果返回给第二服务器。
可见,通过上述装置,用于在客户端上执行目标操作的操作逻辑代码封装成动态链接库文件,通过调用该动态链接库文件,在第一服务器上执行动态链接库文件中封装的操作逻辑代码得到第一执行结果,再根据第一执行结果和客户端执行该操作逻辑代码产生的第二执行结果对目标操作进行验证,并将验证结果传输给第二服务器,这样将客户端上执行目标操作的操作逻辑代码封装成在第一服务器上能够执行的动态链接库文件,再由第一服务器调用该动态链接库文件进行执行,实现了对客户端上执行的操作进行验证的同时能够避免引入其他执行程序进行验证,从而提高了对客户端上执行的操作进行验证时的验证效率,进而克服现有技术中对客户端上执行的操作进行验证时的验证效率较低的问题。
作为一种可选的方案,如图5所示,上述验证模块44包括:
1)判断单元52,用于判断第一执行结果和第二执行结果是否相同;
2)第一确定单元54,用于在判断出第一执行结果和第二执行结果相同的情况下,确定目标操作通过一致性验证;
3)第二确定单元56,用于在判断出第一执行结果和第二执行结果不相同的情况下,确定目标操作未通过一致性验证。
可选地,在本实施例中,可以通过判断第一执行结果和第二执行结果是否相同来确定目标操作是否通过一致性验证。
可选地,在本实施例中,客户端执行操作逻辑代码得到的第二执行结果可能是被进行过恶意篡改的,比如:篡改了执行结果或者篡改了操作逻辑代码。那么通过上述一致性验证就可以验证出客户端的操作逻辑代码或者第二执行结果是否与服务器端一致,如果一致则通过验证,如果不一致,则未通过验证,从而提高应用的安全性。
作为一种可选的方案,如图6所示,上述传输模块46包括:
1)传输单元62,用于通过第一服务器与第二服务器之间的通信通道将验证结果从第一服务器传输到第二服务器,其中,通信通道用于在基于应用服务框架的进程之间进行通信。
可选地,在本实施例中,可以但不限于通过第一服务器与第二服务器之间的通信通道将验证结果从第一服务器传输到第二服务器,其中,通信通道用于在基于应用服务框架的进程之间进行通信。
可选地,在本实施例中,上述通信通道可以但不限于为Bus通道。上述应用服务框架可以但不限于为游戏服务框架(Service Framework For Game,简称为SF4G)。
可选地,在本实施例中,第一服务器可以但不限于是基于Windows ***下的应用服务框架、使用C++编写语言实现的,第二服务器可以但不限于是基于Linux***下的应用服务框架、使用C++编写语言实现的,操作逻辑代码的编写语言为C#。
可选地,在本实施例中,用于执行上述操作逻辑代码的客户端可以但不限于是使用C#编写语言实现的。
通过上述装置,在客户端是C#环境,服务器是Linux C++环境,并且二者同时基于SF4G框架构建的情况下,能够实现客户端与服务器端一致性的强校验。从而解决了基于以上条件限制(客户端是C#环境,服务器是Linux C++环境,并且二者同时基于SF4G框架)无法实现客户端与服务器端一致性的强校验的问题,实现了在以上条件下客户端与服务器端一致性的强校验,且校验效率比较高。
作为一种可选的方案,如图7所示,上述装置还包括:
1)获取模块72,用于获取动态链接库文件,其中,动态链接库文件是通过对客户端上执行的操作逻辑代码进行封装得到的。
作为一种可选的方案,如图8所示,上述获取模块72包括:
1)第一接收单元82,用于接收客户端传输的动态链接库文件;或者
2)第二接收单元84,用于接收客户端传输的操作逻辑代码,并将操作逻辑代码封装到动态链接库文件中。
可选地,在本实施例中,可以但不限于由客户端对操作逻辑代码进行封装,得到动态链接库文件,再将得到的动态链接库文件传输给第一服务器,由第一服务器调用动态链接库文件进行客户端与服务器端的一致性验证。
可选地,在本实施例中,还可以但不限于由客户端将操作逻辑代码发送给第一服务器,再由第一服务器将操作逻辑代码封装到动态链接库文件中,并调用该动态链接库文件进行客户端与服务器端的一致性验证。
实施例3
本发明实施例的应用环境可以但不限于参照实施例1中的应用环境,本实施例中对此不再赘述。本发明实施例提供了用于实施上述对客户端上执行的操作进行验证的方法的一种可选的具体应用示例。
作为一种可选的实施例,上述对客户端上执行的操作进行验证的方法可以但不限于应用于如图9所示的对客户端上执行的操作进行验证的的场景中。对于游戏中的PVE战斗过程,为了防止外挂在客户端造成的作弊行为,服务器端需要对客户端的PVE的战斗过程进行验证。从最大程度上保证验证效果的正确性的角度考虑,服务器端的战斗校验过程要尽可能保证与客户端相同的环境与计算逻辑。在本实施例中,采用一种基于 Windows版SF4G的C++调用C#dll方式的游戏战斗验证方法,使得服务器端与客户端共用PVE战斗逻辑代码,从而尽可能保证验证结果的正确性。
本方法可以但不限于应用于客户端代码是C#,服务器主逻辑服务器 gamesvr是基于SF4G及C++实现,需要在服务器共用客户端的C#战斗验证逻辑代码的场景。
在图9中Checksvr基于Windows版SF4G实现,即Checksvr基于 Windows版C++语言的app框架实现,通过Windows版Bus与Linux上运行的Gamesvr通信,通过Windows版dr进行编解码。同时将客户端的C# 代码生成一个dll文件,在dll文件中实现具体的验证逻辑并提供接口供checksvr调用。
在本实施例中,在客户端代码是C#,服务器主逻辑服务器Gamesvr 是基于SF4G及C++实现,需要在服务器共用客户端的C#战斗验证逻辑代码的情况下,提供了一种兼容SF4G框架、在服务器端运行客户端C# 代码的可行方案。
在本实施例中,提供了一种基于Windows版SF4G的C++调用C#dll 方式的游戏战斗验证方法,本方法采用一种基于Windows版SF4G的C++ 调用C#dll方式去实现验证服务器Checksvr,首先,本方法没有像方案A 那样通过子进程来调用验证逻辑,所有验证过程在同一个进程里进行,相对于方案A效率上大大提升。因为基于SF4G框架使得验证服务器可以方便的使用Bus,DR,LOG等SF4G的内容,减少工作量且增加验证服务器的稳定性。采用C++调用C#dll的方式,将客户端实现验证功能的C# 代码封装成dll供Checksvr调用,使得验证逻辑由客户端提供的代码实现,对服务器透明。
实施例4
根据本发明实施例,还提供了一种用于实施上述对客户端上执行的操作进行验证的方法的对客户端上执行的操作进行验证的设备,如图10所示,该设备包括:
1)处理器1002,设置为通过调用动态链接库文件,在第一服务器上执行操作逻辑代码,得到第一执行结果,其中,操作逻辑代码用于在客户端上执行目标操作,操作逻辑代码的编写语言与用于实现第一服务器的编写语言不同;根据第一执行结果和第二执行结果对目标操作进行验证,其中,第二执行结果是在客户端上执行操作逻辑代码所产生的执行结果;
2)通讯接口1004,与处理器1002连接,设置为将进行验证得到的验证结果从第一服务器传输到第二服务器,其中,第一服务器和第二服务器是基于相同的应用服务框架,并使用相同的编写语言实现的,应用服务框架是跨平台的服务器框架。
3)存储器1006,与通讯接口1002及处理器1004连接,设置为存储动态链接库文件、第一执行结果以及第二执行结果。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
实施例5
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以位于网络中的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,通过调用动态链接库文件,在第一服务器上执行动态链接库文件中封装的操作逻辑代码,得到第一执行结果,其中,操作逻辑代码用于在客户端上执行目标操作,操作逻辑代码的编写语言与用于实现第一服务器的编写语言不同;
S2,根据第一执行结果和第二执行结果对目标操作进行验证,其中,第二执行结果是在客户端上执行操作逻辑代码所产生的执行结果;
S3,将进行验证得到的验证结果从第一服务器传输到第二服务器,其中,第一服务器和第二服务器是基于相同的应用服务框架,并使用相同的编写语言实现的,应用服务框架是跨平台的服务器框架。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
S4,判断第一执行结果和第二执行结果是否相同;
S5,在判断出第一执行结果和第二执行结果相同的情况下,确定目标操作通过一致性验证;
S6,在判断出第一执行结果和第二执行结果不相同的情况下,确定目标操作未通过一致性验证。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:通过第一服务器与第二服务器之间的通信通道将验证结果从第一服务器传输到第二服务器,其中,通信通道用于在基于应用服务框架的进程之间进行通信。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:获取动态链接库文件,其中,动态链接库文件是通过对客户端上执行的操作逻辑代码进行封装得到的。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:接收客户端传输的动态链接库文件;或者,接收客户端传输的操作逻辑代码,并将操作逻辑代码封装到动态链接库文件中。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (12)

1.一种对客户端上执行的操作进行验证的方法,其特征在于,包括:
在接收到第二服务器发送的验证请求的情况下,通过调用动态链接库文件,在第一服务器上执行所述动态链接库文件中封装的操作逻辑代码,得到第一执行结果,其中,所述验证请求为客户端向所述第二服务器发起、用于对所述客户端与所述第一服务器执行目标操作的一致性进行验证,所述操作逻辑代码用于在所述客户端上执行所述目标操作,所述操作逻辑代码的编写语言与用于实现所述第一服务器的编写语言不同;
根据所述第一执行结果和第二执行结果对所述目标操作进行验证,其中,所述第二执行结果是在所述客户端上执行所述操作逻辑代码所产生的执行结果;
将进行所述验证得到的验证结果从所述第一服务器传输到所述第二服务器,其中,所述第一服务器和所述第二服务器是基于相同的应用服务框架,并使用相同的编写语言实现的,所述应用服务框架是跨平台的服务器框架。
2.根据权利要求1所述的方法,其特征在于,根据所述第一执行结果和第二执行结果对所述目标操作进行验证包括:
判断所述第一执行结果和第二执行结果是否相同;
在判断出所述第一执行结果和第二执行结果相同的情况下,确定所述目标操作通过一致性验证;
在判断出所述第一执行结果和第二执行结果不相同的情况下,确定所述目标操作未通过一致性验证。
3.根据权利要求1所述的方法,其特征在于,所述将进行所述验证得到的验证结果从所述第一服务器传输到所述第二服务器包括:
通过所述第一服务器与所述第二服务器之间的通信通道将所述验证结果从所述第一服务器传输到所述第二服务器,其中,所述通信通道用于在基于所述应用服务框架的进程之间进行通信。
4.根据权利要求1所述的方法,其特征在于,所述第一服务器是基于Windows***下的所述应用服务框架、使用C++编写语言实现的,所述第二服务器是基于Linux***下的所述应用服务框架、使用C++编写语言实现的,所述操作逻辑代码的编写语言为C#。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述应用服务框架为游戏服务框架。
6.根据权利要求1至4中任一项所述的方法,其特征在于,在通过调用所述动态链接库文件,在所述第一服务器上执行所述动态链接库文件中封装的所述操作逻辑代码,得到所述第一执行结果之前,所述方法还包括:
获取所述动态链接库文件,其中,所述动态链接库文件是通过对客户端上执行的操作逻辑代码进行封装得到的。
7.一种对客户端上执行的操作进行验证的装置,其特征在于,包括:
执行模块,用于在接收到第二服务器发送的验证请求的情况下,通过调用动态链接库文件,在第一服务器上执行所述动态链接库文件中封装的操作逻辑代码,得到第一执行结果,其中,所述验证请求为客户端向所述第二服务器发起、用于对所述客户端与所述第一服务器执行目标操作的一致性进行验证,所述操作逻辑代码用于在所述客户端上执行所述目标操作,所述操作逻辑代码的编写语言与用于实现所述第一服务器的编写语言不同;
验证模块,用于根据所述第一执行结果和第二执行结果对所述目标操作进行验证,其中,所述第二执行结果是在所述客户端上执行所述操作逻辑代码所产生的执行结果;
传输模块,用于将进行所述验证得到的验证结果从所述第一服务器传输到所述第二服务器,其中,所述第一服务器和所述第二服务器是基于相同的应用服务框架,并使用相同的编写语言实现的,所述应用服务框架是跨平台的服务器框架。
8.根据权利要求7所述的装置,其特征在于,所述验证模块包括:
判断单元,用于判断所述第一执行结果和第二执行结果是否相同;
第一确定单元,用于在判断出所述第一执行结果和第二执行结果相同的情况下,确定所述目标操作通过一致性验证;
第二确定单元,用于在判断出所述第一执行结果和第二执行结果不相同的情况下,确定所述目标操作未通过一致性验证。
9.根据权利要求7所述的装置,其特征在于,所述传输模块包括:
传输单元,用于通过所述第一服务器与所述第二服务器之间的通信通道将所述验证结果从所述第一服务器传输到所述第二服务器,其中,所述通信通道用于在基于所述应用服务框架的进程之间进行通信。
10.根据权利要求7所述的装置,其特征在于,所述第一服务器是基于Windows***下的所述应用服务框架、使用C++编写语言实现的,所述第二服务器是基于Linux***下的所述应用服务框架、使用C++编写语言实现的,所述操作逻辑代码的编写语言为C#。
11.根据权利要求7至10中任一项所述的装置,其特征在于,所述应用服务框架为游戏服务框架。
12.根据权利要求7至10中任一项所述的装置,其特征在于,所述装置还包括:
获取模块,用于获取所述动态链接库文件,其中,所述动态链接库文件是通过对客户端上执行的操作逻辑代码进行封装得到的。
CN201710107412.9A 2017-02-24 2017-02-24 对客户端上执行的操作进行验证的方法及装置 Active CN108509329B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710107412.9A CN108509329B (zh) 2017-02-24 2017-02-24 对客户端上执行的操作进行验证的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710107412.9A CN108509329B (zh) 2017-02-24 2017-02-24 对客户端上执行的操作进行验证的方法及装置

Publications (2)

Publication Number Publication Date
CN108509329A CN108509329A (zh) 2018-09-07
CN108509329B true CN108509329B (zh) 2021-05-14

Family

ID=63373203

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710107412.9A Active CN108509329B (zh) 2017-02-24 2017-02-24 对客户端上执行的操作进行验证的方法及装置

Country Status (1)

Country Link
CN (1) CN108509329B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111478903A (zh) * 2020-04-07 2020-07-31 浙江同花顺智能科技有限公司 一种基于客户端的验证方法、服务器及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593173A (zh) * 2012-10-29 2014-02-19 百度在线网络技术(北京)有限公司 一种应用程序的一体化开发***、方法及装置
CN104714890A (zh) * 2015-04-13 2015-06-17 东信和平科技股份有限公司 一种跨平台检测智能卡的方法及***
CN104922907A (zh) * 2015-06-04 2015-09-23 北京乐动卓越科技有限公司 一种游戏过程的校验方法及***
CN105214310A (zh) * 2015-10-13 2016-01-06 网易(杭州)网络有限公司 一种游戏战斗校验方法、***及服务端

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782401B2 (en) * 2012-09-26 2014-07-15 Intel Corporation Enhanced privacy ID based platform attestation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593173A (zh) * 2012-10-29 2014-02-19 百度在线网络技术(北京)有限公司 一种应用程序的一体化开发***、方法及装置
CN104714890A (zh) * 2015-04-13 2015-06-17 东信和平科技股份有限公司 一种跨平台检测智能卡的方法及***
CN104922907A (zh) * 2015-06-04 2015-09-23 北京乐动卓越科技有限公司 一种游戏过程的校验方法及***
CN105214310A (zh) * 2015-10-13 2016-01-06 网易(杭州)网络有限公司 一种游戏战斗校验方法、***及服务端

Also Published As

Publication number Publication date
CN108509329A (zh) 2018-09-07

Similar Documents

Publication Publication Date Title
US9635098B2 (en) Open platform, open platform access system, storage medium, and method for allowing third party application to access open platform
CN108563517B (zh) ***接口的调用方法及装置
US11907700B2 (en) Upgrading method and system, server, and terminal device
CN104199654A (zh) 开放平台的调用方法及装置
CN105183675A (zh) 对usb设备的访问方法、装置、终端、服务器及***
CN112165482B (zh) 数据处理方法、装置、计算机设备及介质
US20100146590A1 (en) System and method for security using one-time execution code
CN110007936B (zh) 数据处理方法和装置
CN114168239B (zh) 窗口显示方法、装置、设备和存储介质
CN111258913A (zh) 算法自动测试方法、装置、计算机***及可读存储介质
CN106203092B (zh) 一种拦截恶意程序关机的方法、装置及电子设备
CN106874020B (zh) 启动插件的方法及装置
CN108509329B (zh) 对客户端上执行的操作进行验证的方法及装置
CN112363771B (zh) 应用程序的处理方法及相关产品
US20170279777A1 (en) File signature system and method
CN108470125B (zh) 一种基于虚拟桌面的ole重定向方法及***
CN112600803B (zh) Web端数据签名方法、装置及计算机设备
CN114912097A (zh) 一种证书校验方法、装置、电子设备及存储介质
CN115080147A (zh) 基于人工智能的h5页面加载方法、装置、设备及介质
CN114036364A (zh) 用于识别爬虫的方法、装置、设备、介质和产品
CN110286956B (zh) 插件的运行方法、装置及电子设备
EP3057022A1 (en) Mobile device and method for operating same
CN116975850B (zh) 合约运行方法、装置、电子设备及存储介质
US11616854B1 (en) System and method of secured interface to a blockchain based network
CN112486836B (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
GR01 Patent grant
GR01 Patent grant