1.一种防止直播时外挂误判的方法,其特征在于,其包括以下步骤:直播程序获得d3d9.dll文件存储位置、起始地址、结束地址以及文件大小;
hook d3d9.dll文件中的present函数,获取游戏画面,同时将d3d9.dll文件中原始的present函数拷贝获得检查替代文件;
将d3d9.dll文件被hook的部分设置为不可读;
若安全检查程序读取d3d9.dll文件异常时,使用预设的异常处理函数调用检查替代文件,并将检查替代文件发送给安全检查程序。
2.如权利要求1所述的方法,其特征在于,在hook d3d9.dll文件的操作中,包括以下步骤:创建一自定义present函数,所述自定义present函数的函数原型系统自带的present函数一致,所述自定义present函数用于获取游戏的画面数据;
hook系统自带的present函数,将系统自带的present函数替代为自定义present函数。
3.如权利要求1所述的方法,其特征在于,在对所述系统自带的present函数与所述自定义present函数进行hook操作之前,所述方法还包括:调用detous库的函数DetourTransactionBegin开启hook;
调用API函数DetourUpdateThread分配用于hook的线程。
4.如权利要求1所述的方法,其特征在于,若安全检查程序读取d3d9.dll文件异常时,使用预设的异常处理函数调用检查替代文件具体包括以下步骤:识别内存中是否存在异常;
判断该异常是否为d3d9.dll文件中的present函数引起;
若是,则利用预设的异常处理函数调用检查替代文件并发送给所述安全检查程序;
若否,则不调用检查替代文件。
5.如权利要求4所述的方法,其特征在于,所述判断该异常是否为d3d9.dll文件引起的操作具体包括以下步骤:获取异常信息,并解析得到异常地址以及异常参数;
将异常地址与所述d3d9.dll文件的存储地址进行比对,并将异常参数与当d3d9.dll文件出现异常时的参数进行比对;
若以上两个比对均吻合,则表明异常为d3d9.dll引起。
6.如权利要求1所述的方法,其特征在于:所述异常处理函数中存在异常信息数据,其用于表示引起异常原因、异常地址以及异常参数。
7.如权利要求1所述的方法,其特征在于,所述当安全检查程序查询d3d9.dll文件时,还包括以下步骤:判断所述安全检查程序是否为游戏自身检查程序;
若所述安全检查程序为游戏自身检查程序,则将CPU当前的执行方式修改成单步执行,并将d3d9.dll文件被hook的部分恢复,待游戏自身检查程序检查d3d9.dll文件完成后,再重新对d3d9.dll文件进行hook。
8.一种存储介质,该存储介质上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至7任一项所述的方法。
9.一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的方法。
10.一种防止直播时外挂误判的系统,其特征在于,其包括:文件寻找单元,其用于获得d3d9.dll文件存储位置、起始地址、结束地址以及文件大小;
hook执行单元,其用于hook d3d9.dll文件中的present函数,获取游戏画面,同时将d3d9.dll文件中原始的present函数拷贝获得检查替代文件;
文件设置单元,其用于将d3d9.dll文件被hook的部分设置为不可读;
检查避让单元,其用于若安全检查程序读取d3d9.dll文件异常时,使用预设的异常处理函数调用检查替代文件,并将检查替代文件发送给安全检查程序。