1.一种检测C++虚表被hook的方法,其特征在于,包括:客户端获取只读数据rdata段,其中C++虚表存储于所述rdata段中;
所述客户端利用预设的共享密钥,将所述rdata段进行加密,并发送至服务器;
所述服务器根据加密结果检测所述C++虚表是否被hook,并将检测结果反馈至所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述客户端获取只读数据rdata段,包括:获取模块定义文件,并根据模块定义文件对应的格式解析所述模块定义文件,得到各节点头信息;
遍历各节点头信息,并依据各节点头信息中的节点属性判断是否为rdata段;
若是,则获取rdata段的起始地址和内存大小,根据所述rdata段的起始地址和内存大小获取rdata段。
3.根据权利要求1所述的方法,其特征在于,在所述客户端利用预设的共享密钥,将所述rdata段进行加密之前,还包括:客户端按预设计算规则对所述rdata段进行哈希hash计算,得到hash结果;
相应的,所述将所述rdata段进行加密,包括:将所述rdata段的所述hash结果进行加密。
4.根据权利要求3所述的方法,其特征在于,所述服务器根据加密结果检测所述C++虚表是否被hook,包括:服务器对所述加密结果进行解密,得到解密结果,并判断所述解密结果与标准数据是否相匹配;
若否,则检测到所述C++虚表已被hook;
其中,所述标准数据为服务器按所述预设计算规则,对服务器内预先存储的所述rdata段进行hash计算得到的。
5.根据权利要求3所述的方法,其特征在于,所述客户端按预设计算规则对所述rdata段进行哈希hash计算,得到hash结果,包括:获取用户的信用值,并根据所述信用值选取加密等级;
根据所述加密等级选取对应数量的hash算法;
根据选取的对应数量的hash算法,分别对所述rdata段进行hash计算,并将各计算结果拼接为hash结果。
6.根据权利要求5所述的方法,其特征在于,在所述根据所述加密等级选取对应数量的hash算法之后,还包括:对所述rdata段进行分片,根据所述加密等级选取对应数量及位置的分片;
相应的,客户端根据选取的对应数量的hash算法,分别对选取的对应数量及位置的分片进行hash计算,并将各计算结果拼接为hash结果。
7.根据权利要求1所述的方法,其特征在于,在所述客户端获取只读数据rdata段之前,还包括:客户端生成第一公钥和第一私钥,并将所述第一公钥发送至所述服务器;
服务器生成第二公钥和第二私钥,并将所述第二公钥发送至所述客户端;
客户端根据所述第一私钥以及所述第二公钥生成第一共享密钥;
服务器根据所述第二私钥以及所述第一公钥生成第二共享密钥;
其中第一共享密钥的数值与第二共享密钥的数值一致,分别作为客户端与服务器的预设的共享密钥。
8.一种检测C++虚表被hook的装置,其特征在于,包括:数据获取模块,配置于客户端,用于获取只读数据rdata段,其中C++虚表存储于所述rdata段中;
加密模块,配置于所述客户端,用于利用预设的共享密钥,将所述rdata段进行加密,并发送至服务器;
检测模块,配置于所述服务器,用于根据加密结果检测所述C++虚表是否被hook,并将检测结果反馈至所述客户端。
9.一种终端,其特征在于,所述终端包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的检测C++虚表被hook的方法。
10.一种可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的检测C++虚表被hook的方法。