[发明专利]一种检测C++虚表被hook的方法、装置、终端及可读介质有效
申请号: | 201810530628.0 | 申请日: | 2018-05-25 |
公开(公告)号: | CN108880785B | 公开(公告)日: | 2021-07-23 |
发明(设计)人: | 周志刚;陈少杰;张文明 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | H04L9/06 | 分类号: | H04L9/06;H04L9/08;H04L29/06 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 430070 湖北省武汉市武汉东湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 检测 c++ 虚表被 hook 方法 装置 终端 可读 介质 | ||
本发明实施例公开了一种检测C++虚表被hook的方法、装置、终端及可读介质,其中该方法包括:客户端获取只读数据rdata段,其中C++虚表存储于所述rdata段中;客户端利用预设的共享密钥,将rdata段进行加密,并发送至服务器;服务器根据加密结果检测所述C++虚表是否被hook,并将检测结果反馈至所述客户端。本发明实施例提供的一种检测C++虚表被hook的方法、装置、终端及可读介质,通过对rdata段的数据进行完整性校验,检测C++虚表是否被hook,从而保证了C++程序的安全性。
技术领域
本发明实施例涉及计算机技术,尤其涉及一种检测C++虚表被hook的方法、装置、终端及可读介质。
背景技术
C++语言是一种面向对象的语言,易于处理大规模程序的问题,已广泛应用于程序开发中。C++语言可以通过提取虚表(Virtual Table,V-Table)中各虚函数(VirtualFunction)的地址调用虚函数,从而实现多态性。其中多态性可以理解为实现以共同的方法,但因个体差异,而采用不同的策略,具体可以通过父类指针调用其指向的子类成员函数。
现如今,黑客可以通过修改虚表中的虚函数地址实现了对虚表的hook,从而可以任意伪造某些函数的执行逻辑,例如可以实现在游戏中设置外挂,使病毒绕过安全检测等。因此,为保障C++程序的正确执行,对C++虚表进行检测尤为必要。
发明内容
有鉴于此,本发明实施例提供了一种检测C++虚表被hook的方法、装置、终端及可读介质,可以检测C++虚表是否被hook,从而保证了C++程序的安全性。
第一方面,本发明实施例提供了一种检测C++虚表被hook的方法,包括:
客户端获取只读数据rdata段,其中C++虚表存储于所述rdata段中;
所述客户端利用预设的共享密钥,将所述rdata段进行加密,并发送至服务器;
所述服务器根据加密结果检测所述C++虚表是否被hook,并将检测结果反馈至所述客户端。
可选的,所述客户端获取只读数据rdata段,包括:
获取模块定义文件,并根据模块定义文件对应的格式解析所述模块定义文件,得到各节点头信息;
遍历各节点头信息,并依据各节点头信息中的节点属性判断是否为rdata段;
若是,则获取rdata段的起始地址和内存大小,根据所述rdata段的起始地址和内存大小获取rdata段。
可选的,在所述客户端利用预设的共享密钥,将所述rdata段进行加密之前,还包括:
客户端按预设计算规则对所述rdata段进行哈希hash计算,得到hash结果;
相应的,所述将所述rdata段进行加密,包括:将所述rdata段的所述hash结果进行加密。
可选的,所述服务器根据加密结果检测所述C++虚表是否被hook,包括:
服务器对所述加密结果进行解密,得到解密结果,并判断所述解密结果与标准数据是否相匹配;
若否,则检测到所述C++虚表已被hook;
其中,所述标准数据为服务器按所述预设计算规则,对服务器内预先存储的所述rdata段进行hash计算得到的。
可选的,所述客户端按预设计算规则对所述rdata段进行哈希hash计算,得到hash结果,包括:
获取用户的信用值,并根据所述信用值选取加密等级;
根据所述加密等级选取对应数量的hash算法;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810530628.0/2.html,转载请声明来源钻瓜专利网。