CN106339300A - 一种第三方游戏的fps获取方法及获取系统 - Google Patents
一种第三方游戏的fps获取方法及获取系统 Download PDFInfo
- Publication number
- CN106339300A CN106339300A CN201610664402.0A CN201610664402A CN106339300A CN 106339300 A CN106339300 A CN 106339300A CN 201610664402 A CN201610664402 A CN 201610664402A CN 106339300 A CN106339300 A CN 106339300A
- Authority
- CN
- China
- Prior art keywords
- function
- fps
- game
- mypresent
- party
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种第三方游戏的FPS获取方法及获取系统,获取步骤如下:通过远程线程在第三方游戏的目标进程中插入用于计算FPS值的注入模块,注入模块hook所述目标进程的present函数,设置present函数的伪函数mypresent函数,并将present函数替换为mypresent函数,统计一秒内mypresent函数被调用的次数,所述mypresent函数一秒内被调用的次数即为FPS值。本发明能够在没有游戏源代码的情况下获取游戏的FPS值,了解第三方游戏当前的流畅度,获得第三方游戏的帧率进行交叉对比,了解游戏质量,具有可操作性高和实用性强的优点。
Description
技术领域
本发明涉及游戏技术领域,具体涉及一种第三方游戏的FPS获取方法及获取系统。
背景技术
FPS(frames per second,每秒传输帧数),即帧率,是屏幕上每秒钟能显示出来的图像数。FPS值反应游戏的刷新频率,FPS值越高,游戏画面越流畅;反之,FPS值越低,则游戏画面越卡顿。每秒的帧数或说帧率表示图形处理器处理场时每秒钟能够更新次数。高的帧率可以得到更流畅、更逼真的动画。一般来说30fps就是可以接受的,但是将性能提升至60fps则可以明显提升交互感和逼真感,但是一般来说超过75fps一般就不容易察觉到有明显的流畅度提升。如果帧率超过屏幕刷新率只会浪费图形处理的能力,因为监视器不能以这么快的速度更新,这样超过刷新率的帧率就浪费掉了。选用合适的帧率不仅可以提升画面流畅度且不造成帧率浪费,作为评价游戏画面质量的一个重要的标砖。对于作为第三方的游戏制作方来说,可通过游戏源代码获取FPS值,但是对于没有游戏源代码的情况下,无法获取游戏的FPS值,也可以通过测试帧率软件进行帧率测试,但是测试帧率软件运行时,必然会占用网速和CPU,影响电脑运行速度。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种第三方游戏的FPS获取方法及获取系统,在没有游戏源代码的情况下,获取游戏应用程序的FPS。
为达到以上目的,本发明采取的技术方案是:
一种第三方游戏的FPS获取方法,通过远程线程在第三方游戏的目标进程中插入用于计算FPS值的注入模块,注入模块hook所述目标进程的present函数,设置present函数的伪函数mypresent函数,并将present函数替换为mypresent函数,统计一秒内mypresent函数被调用的次数,所述mypresent函数一秒内被调用的次数即为FPS值。
在上述技术方案的基础上,第三方游戏的目标进程插入注入模块的具体步骤如下:
调用VirtualAllocEx函数在目标进程的内存空间中给注入模块分配一个分配内存空间;
调用WriteProcessMemory函数将注入模块的磁盘路径写入目标进程的分配内存空间;
调用CreateRemoteThread函数在目标进程中创建线程,线程调用LoadLibrary函数加载注入模块。
在上述技术方案的基础上,将present函数替换为mypresent函数的具体步骤如下:
获取目标进程的present函数的内存地址;
编写伪造函数mypresent函数,注入模块hook目标进程的present函数,将目标进程的present函数替换成mypresent函数;
替换成mypresent函数的目标进程,mypresent函数统计在间隔时间TimeElapse内,mypresent函数被调用的次数FrameCount,通过FPS=FrameCount/TimeElapse计算该游戏的FPS。
在上述技术方案的基础上,通过调取Detours库的API函数,hook目标进程的present函数;通过调用DetourAttach函数,将present函数替换成mypresent函数。
在上述技术方案的基础上,所述间隔时间TimeElapse为1s。
在上述技术方案的基础上,其中步骤S31的具体步骤如下:
获取目标进程的IDirect3DDevice9::Present函数;
调用IDirect3D9Ex的接口CreateDeviceEx创建IDirect3DDevice9Ex对象;
在DirectX提供的SDK的d3d9.h文件中,查找IDirect3DDevice9Ex对象的Present函数所在函数列表的序号;
调用C++虚表函数获取IDirect3DDevice9Ex对象的虚表指针地址,即可获得Present函数的内存地址。
在上述技术方案的基础上,内存地址=虚表指针地址+序号*函数指针。
一种第三方游戏的FPS获取系统,包括:
注入模块生成单元,用于生成具有hook功能和FPS计算功能的注入模块;
注入模块注入单元,用于通过远程线程技术将注入模块注入第三方游戏的目标进程中;
FPS计算模块,用于计算第三方游戏的FPS值。
与现有技术相比,本发明的优点在于:
本发明的一种第三方游戏的FPS获取方法及获取系统能够在没有游戏源代码的情况下获取游戏的FPS值,了解第三方游戏当前的流畅度,获得第三方游戏的帧率进行交叉对比,了解游戏质量,具有可操作性高和实用性强的优点。
附图说明
图1为本发明实施例的方法流程图。
图2为本发明实施例的系统框图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例提供一种第三方游戏的FPS获取方法,包括以下步骤:
S1:编写注入代码生成注入模块,注入模块具有hook功能和FPS计算功能;FPS是指帧率,是屏幕上每秒钟能显示出来的图像数。FPS值反应游戏的刷新频率,FPS值越高,游戏画面越流畅;反之,FPS值越低,则游戏画面越卡顿。
S2:通过远程线程在第三方游戏的目标进程中插入用于计算FPS值的注入模块,注入模块hook目标进程的present函数,设置present函数的伪函数mypresent函数,其中,present函数在游戏渲染时会被调用,将后台渲染的画面翻转到前台,完成一次图形渲染过程,mypresent的作用是用于替代present函数,具体步骤如下:
S21,调用VirtualAllocEx函数在目标进程的内存空间中各注入模块分配一分配内存空间;VirtualAllocEx函数的作用是在指定进行的虚拟空间保留或提交内存区域;
S22,调用WriteProcessMemory函数将注入模块的磁盘路径写入目标进程的分配内存空间;WriteProcessMemory函数作用是能够写入某一进程的内存区域;
S23,调用CreateRemoteThread函数在目标进程中创建线程,线程调用LoadLibrary加载注入模块。CreateRemoteThread函数的作用是创建一个在其他进程地址空间中运行的线程,LoadLibrary是计算机程序语言,这样就实现了在目标进程中注入了注入模块的而功能。
S3:统计一秒内mypresent函数被调用的次数,mypresent函数一秒内被调用的次数即为FPS值,具体步骤如下:
S31,获取目标进程的present函数的内存地址;
获取目标进程的IDirect3DDevice9::Present函数,此函数调用一次就相当于一帧画面;
调用IDirect3D9Ex的接口CreateDeviceEx创建IDirect3DDevice9Ex对象;IDirect3D9Ex用于获得物理设备的信息和创建IDirect3DDevice9Ex接口,CreateDeviceEx用来创建一个设备指针,IDirect3DDevice9Ex对象是显示3D图形的物理设备的C++对象。
在DirectX提供的SDK的d3d9.h文件中,查找IDirect3DDevice9Ex对象的Present函数所在函数列表的序号,本实施例中的序号为17;SDK的d3d9.h文件是指软件开发工具包内的头文件。
调用C++虚表函数获取IDirect3DDevice9Ex对象的虚表指针地址,内存地址=虚表指针地址+序号*函数指针,本实施例中内存地址为虚表指针地址+17*4,获得Present函数的内存地址。
S32,编写伪造函数mypresent函数,调取Detours库的API函数对present函数进行hook后,调用DetourAttach函数将目标进程的present函数替换成mypresent函数,即用mypresent函数的内存地址替换Present函数的内存地址;
S33,目标进程执行hook后的mypresent函数,统计在间隔时间TimeElapse内mypresent函数调用的次数FrameCount,本实施中间隔时间为1s,根据计算公式FPS=FrameCount/TimeElapse计算该游戏的FPS。
参见图2所示,提供一种第三方游戏的FPS获取系统,包括:
注入模块生成单元,用于生成具有hook功能和FPS计算功能的注入模块;
注入模块注入单元,用于通过远程线程技术将注入模块注入第三方游戏的目标进程中;
FPS计算模块,用于计算第三方游戏的FPS值。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (8)
1.一种第三方游戏的FPS获取方法,其特征在于:通过远程线程在第三方游戏的目标进程中插入用于计算FPS值的注入模块,注入模块hook所述目标进程的present函数,设置present函数的伪函数mypresent函数,并将present函数替换为mypresent函数,统计一秒内mypresent函数被调用的次数,所述mypresent函数一秒内被调用的次数即为FPS值。
2.如权利要求1所述的一种第三方游戏的FPS获取方法,其特征在于,第三方游戏的目标进程插入注入模块的具体步骤如下:
调用VirtualAllocEx函数在目标进程的内存空间中给注入模块分配一个分配内存空间;
调用WriteProcessMemory函数将注入模块的磁盘路径写入目标进程的分配内存空间;
调用CreateRemoteThread函数在目标进程中创建线程,线程调用LoadLibrary函数加载注入模块。
3.如权利要求1所述的一种第三方游戏的FPS获取方法,其特征在于,将present函数替换为mypresent函数的具体步骤如下:
获取目标进程的present函数的内存地址;
编写伪造函数mypresent函数,注入模块hook目标进程的present函数,将目标进程的present函数替换成mypresent函数;
替换成mypresent函数的目标进程,mypresent函数统计在间隔时间TimeElapse内,mypresent函数被调用的次数FrameCount,通过FPS=FrameCount/TimeElapse计算该游戏的FPS。
4.如权利要求3所述的一种第三方游戏的FPS获取方法,其特征在于:通过调取Detours库的API函数,hook目标进程的present函数;通过调用DetourAttach函数,将present函数替换成mypresent函数。
5.如权利要求3所述的一种第三方游戏的FPS获取方法,其特征在于:所述间隔时间TimeElapse为1s。
6.如权利要求3所述的一种第三方游戏的FPS获取方法,其特征在于,其中步骤S31的具体步骤如下:
获取目标进程的IDirect3DDevice9::Present函数;
调用IDirect3D9Ex的接口CreateDeviceEx创建IDirect3DDevice9Ex对象;
在DirectX提供的SDK的d3d9.h文件中,查找IDirect3DDevice9Ex对象的Present函数所在函数列表的序号;
调用C++虚表函数获取IDirect3DDevice9Ex对象的虚表指针地址,即可获得Present函数的内存地址。
7.如权利要求6所述的一种第三方游戏的FPS获取方法,其特征在于:内存地址=虚表指针地址+序号*函数指针。
8.一种第三方游戏的FPS获取系统,其特征在于,包括:
注入模块生成单元,用于生成具有hook功能和FPS计算功能的注入模块;
注入模块注入单元,用于通过远程线程技术将注入模块注入第三方游戏的目标进程中;
FPS计算模块,用于计算第三方游戏的FPS值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610664402.0A CN106339300A (zh) | 2016-08-12 | 2016-08-12 | 一种第三方游戏的fps获取方法及获取系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610664402.0A CN106339300A (zh) | 2016-08-12 | 2016-08-12 | 一种第三方游戏的fps获取方法及获取系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106339300A true CN106339300A (zh) | 2017-01-18 |
Family
ID=57825544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610664402.0A Pending CN106339300A (zh) | 2016-08-12 | 2016-08-12 | 一种第三方游戏的fps获取方法及获取系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106339300A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107609065A (zh) * | 2017-08-30 | 2018-01-19 | 武汉斗鱼网络科技有限公司 | 一种游戏分类方法、装置及电子设备 |
CN107742077A (zh) * | 2017-10-09 | 2018-02-27 | 武汉斗鱼网络科技有限公司 | 一种在游戏直播中防止信息泄露的方法及装置 |
CN108073493A (zh) * | 2017-11-21 | 2018-05-25 | 北京奇虎科技有限公司 | 一种在游戏界面中显示系统数据的方法及装置 |
CN108717354A (zh) * | 2018-05-17 | 2018-10-30 | 广州多益网络股份有限公司 | 手机游戏渲染数据的采集方法、装置及存储设备 |
CN108733544A (zh) * | 2017-04-24 | 2018-11-02 | 北京嘀嘀无限科技发展有限公司 | 每秒传输画面帧数的获取方法、系统及计算机设备 |
CN108721898A (zh) * | 2018-06-01 | 2018-11-02 | 深圳市腾讯网络信息技术有限公司 | 帧率的确定方法和装置、存储介质、电子装置 |
CN110297736A (zh) * | 2019-07-05 | 2019-10-01 | 莱茵技术监护(深圳)有限公司 | 游戏设备的性能评价方法、设备、存储介质及装置 |
CN110502416A (zh) * | 2018-05-16 | 2019-11-26 | 腾讯科技(上海)有限公司 | 应用卡顿检测方法、装置、计算机设备及可读介质 |
CN110557627A (zh) * | 2018-05-31 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 性能的监测方法、装置以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102713882A (zh) * | 2009-11-16 | 2012-10-03 | 思杰系统有限公司 | 用于选择性地实现渐进显示技术的方法和系统 |
CN102841795A (zh) * | 2011-06-24 | 2012-12-26 | 镇江华扬信息科技有限公司 | 一种远程线程注入技术方法 |
US8514234B2 (en) * | 2010-07-14 | 2013-08-20 | Seiko Epson Corporation | Method of displaying an operating system's graphical user interface on a large multi-projector display |
CN104572086A (zh) * | 2014-12-24 | 2015-04-29 | 惠州Tcl移动通信有限公司 | 基于安卓设备的fps值获取方法及获取系统 |
CN105808251A (zh) * | 2016-03-03 | 2016-07-27 | 武汉斗鱼网络科技有限公司 | 一种基于虚函数表劫持绕过安全检测的方法与系统 |
-
2016
- 2016-08-12 CN CN201610664402.0A patent/CN106339300A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102713882A (zh) * | 2009-11-16 | 2012-10-03 | 思杰系统有限公司 | 用于选择性地实现渐进显示技术的方法和系统 |
US8514234B2 (en) * | 2010-07-14 | 2013-08-20 | Seiko Epson Corporation | Method of displaying an operating system's graphical user interface on a large multi-projector display |
CN102841795A (zh) * | 2011-06-24 | 2012-12-26 | 镇江华扬信息科技有限公司 | 一种远程线程注入技术方法 |
CN104572086A (zh) * | 2014-12-24 | 2015-04-29 | 惠州Tcl移动通信有限公司 | 基于安卓设备的fps值获取方法及获取系统 |
CN105808251A (zh) * | 2016-03-03 | 2016-07-27 | 武汉斗鱼网络科技有限公司 | 一种基于虚函数表劫持绕过安全检测的方法与系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733544A (zh) * | 2017-04-24 | 2018-11-02 | 北京嘀嘀无限科技发展有限公司 | 每秒传输画面帧数的获取方法、系统及计算机设备 |
CN108733544B (zh) * | 2017-04-24 | 2021-11-02 | 北京嘀嘀无限科技发展有限公司 | 每秒传输画面帧数的获取方法、系统及计算机设备 |
CN107609065A (zh) * | 2017-08-30 | 2018-01-19 | 武汉斗鱼网络科技有限公司 | 一种游戏分类方法、装置及电子设备 |
CN107742077B (zh) * | 2017-10-09 | 2020-01-03 | 武汉斗鱼网络科技有限公司 | 一种在游戏直播中防止信息泄露的方法及装置 |
CN107742077A (zh) * | 2017-10-09 | 2018-02-27 | 武汉斗鱼网络科技有限公司 | 一种在游戏直播中防止信息泄露的方法及装置 |
CN108073493A (zh) * | 2017-11-21 | 2018-05-25 | 北京奇虎科技有限公司 | 一种在游戏界面中显示系统数据的方法及装置 |
CN110502416B (zh) * | 2018-05-16 | 2023-06-20 | 腾讯科技(上海)有限公司 | 应用卡顿检测方法、装置、计算机设备及可读介质 |
CN110502416A (zh) * | 2018-05-16 | 2019-11-26 | 腾讯科技(上海)有限公司 | 应用卡顿检测方法、装置、计算机设备及可读介质 |
CN108717354A (zh) * | 2018-05-17 | 2018-10-30 | 广州多益网络股份有限公司 | 手机游戏渲染数据的采集方法、装置及存储设备 |
CN110557627A (zh) * | 2018-05-31 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 性能的监测方法、装置以及存储介质 |
CN108721898B (zh) * | 2018-06-01 | 2022-02-22 | 深圳市腾讯网络信息技术有限公司 | 帧率的确定方法和装置、存储介质、电子装置 |
CN108721898A (zh) * | 2018-06-01 | 2018-11-02 | 深圳市腾讯网络信息技术有限公司 | 帧率的确定方法和装置、存储介质、电子装置 |
CN110297736A (zh) * | 2019-07-05 | 2019-10-01 | 莱茵技术监护(深圳)有限公司 | 游戏设备的性能评价方法、设备、存储介质及装置 |
CN110297736B (zh) * | 2019-07-05 | 2023-05-26 | 莱茵技术监护(深圳)有限公司 | 游戏设备的性能评价方法、设备、存储介质及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106339300A (zh) | 一种第三方游戏的fps获取方法及获取系统 | |
CN105912234B (zh) | 虚拟场景的交互方法和装置 | |
CN104679649B (zh) | 一种软件流畅度测试方法和测试装置 | |
US9760968B2 (en) | Reduction of graphical processing through coverage testing | |
CN107924667A (zh) | 与预测性时移补偿相匹配的刷新率 | |
CN101388157B (zh) | 一种电子地图显示方法、装置及设备 | |
CN106791212A (zh) | 一种移动终端刷新率的控制方法、装置及移动终端 | |
CN106936995A (zh) | 一种移动终端帧率的控制方法、装置及移动终端 | |
CN105979337A (zh) | 一种弹幕播放装置及方法 | |
CN103995684B (zh) | 超高分辨率平台下的海量影像并行处理显示方法及系统 | |
CN110860086B (zh) | 数据处理方法、可读存储介质和电子设备 | |
CN109966739B (zh) | 一种优化游戏运行的方法及系统 | |
CN110062176A (zh) | 生成视频的方法、装置、电子设备和计算机可读存储介质 | |
CN106657681A (zh) | 一种移动终端刷新率的控制方法、装置及移动终端 | |
CN109275011A (zh) | 智能电视运动模式切换的处理方法及装置、用户设备 | |
CN105741819B (zh) | 一种图层处理方法及装置 | |
CN106933327A (zh) | 一种移动终端帧率的控制方法、装置及移动终端 | |
KR101845535B1 (ko) | 3d 아바타 기반 화자 변경형 스토리텔링 시스템 | |
CN107077375A (zh) | 用于多操作系统的显示方法、装置和电子设备 | |
CN103780942B (zh) | 一种信息配置方法及装置 | |
CN108024133A (zh) | 一种信息输出显示方法及装置 | |
CN107168996A (zh) | 一种第三方多媒体的推广方法及装置 | |
CN105808184A (zh) | 显示安卓2d应用图像的方法、装置及一种头戴设备 | |
CN106454393A (zh) | 一种视频缓存方法及装置 | |
CN109660852A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170118 |
|
RJ01 | Rejection of invention patent application after publication |