[发明专利]一种构造合法堆栈返回值绕过函数调用检测的方法与系统有效

专利信息
申请号: 201610128818.0 申请日: 2016-03-08
公开(公告)号: CN105808256B 公开(公告)日: 2017-06-23
发明(设计)人: 周志刚 申请(专利权)人: 武汉斗鱼网络科技有限公司
主分类号: G06F9/44 分类号: G06F9/44
代理公司: 武汉东喻专利代理事务所(普通合伙)42224 代理人: 向彬
地址: 430074 湖北省武汉市武汉东湖*** 国省代码: 湖北;42
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 构造 合法 堆栈 返回 绕过 函数 调用 检测 方法 系统
【说明书】:

技术领域

发明属于计算机开发技术领域,更具体地,涉及一种构造合法堆栈返回值绕过函数调用检测的方法与系统。

背景技术

目前,直播软件在直播时都可以预览到直播的内容,获取直播的显示内容都是通过注入一个动态链接库到游戏进程中,注入的动态链接库会hook进程中的d3d9.dll的Present函数来获取显卡的显示内容,为了获取到Present函数的地址,则需要先获取到IDirect3DDevice9Ex的指针,从该指针中获取函数地址,而该指针则可以通过调用CreateDeviceEx函数来获取。但是由于目前很多“外挂”会调用该函数来实现某些“外挂”功能,所以导致游戏开发商会对调用该函数的调用者进行检查,如果不是游戏自身的调用则会判断是“外挂”在调用,从而进行处罚。对于如何检测是谁调用了某函数,则可以利用intel x86的函数调用机制,在函数调用时会使用扩展基址指针寄存器(extended base pointer,EBP)和堆栈栈顶寄存器(Extended Stack Pointer,ESP)来保存当前堆栈的栈底地址和栈顶地址。而栈底地址存放着调用此函数的返回地址。由此,通过不断的回朔EBP寄存器来获取函数调用的返回地址,就可以获取到调用这个函数的整个调用链,从而可以区分出是否是合法的调用地址。

发明内容

针对现有技术的以上缺陷或改进需求,本发明提供了一种绕过堆栈检测的方法,此发明通过一段精心构造的汇编代码,通过不断的往堆栈中压入合法的地址来掩盖真实的调用。

为实现上述目的,按照本发明的一个方面,提供了一种构造合法堆栈返回值绕过函数调用检测的方法,包括:构造递归调用往堆栈中多次压入进程的d3d9.dll模块的代码段中的任一连续两条汇编指令序列pop ebp,retn的地址,其中压入地址的次数大于或等于堆栈检测调用的层数;在往堆栈中多次压入上述地址后,构造系统函数CreateDeviceEx需要的参数并压入堆栈,并往堆栈中再次压入上述地址后,跳转到系统函数CreateDeviceEx。

在本发明的一个实施例中,往堆栈中压入的地址的获取方式为:在进程的d3d9.dll模块的代码段中查找连续的值为0x5D,0xC3的指令的地址,其中0x5D,0xC3是汇编指令序列pop ebp,retn所对应的16进制。

在本发明的一个实施例中,所述构造合法堆栈返回值绕过函数调用检测的方法,具体为:

初始化i=n;

Void func(void)

{

将进程的d3d9.dll模块的代码段中的任一连续两条汇编指令序列pop ebp,retn的地址压入堆栈;

将i的值减一;

如果:i>=0

跳转到func();

否则

构造系统函数CreateDeviceEx需要的参数压入堆栈,并往堆栈中再次压入上述地址后,跳转到系统函数CreateDeviceEx;

}

其中,n为堆栈检测调用的层数。

在本发明的一个实施例中,所述构造合法堆栈返回值绕过函数调用检测的方法具体为:

初始化i=0;

Void func(void)

{

将进程的d3d9.dll模块的代码段中的任一连续两条汇编指令序列pop ebp,retn的地址压入堆栈;

将i的值减一;

如果:i<=n

跳转到func();

否则

构造系统函数CreateDeviceEx需要的参数压入堆栈,并往堆栈中再次压入上述地址后,跳转到系统函数CreateDeviceEx;

}

其中,n为堆栈检测调用的层数。

在本发明的一个实施例中,所述递归调用往堆栈中压入地址的次数大于等于5。

按照本发明的另一方面,还提供了一种构造合法堆栈返回值绕过函数调用检测的系统,包括递归模块、递归跳出模块,其中:

所述递归模块,用于构造递归调用往堆栈中多次压入进程的d3d9.dll模块的代码段中的任一连续两条汇编指令序列pop ebp,retn的地址,其中压入地址的次数大于或等于堆栈检测调用的层数;

所述递归跳出模块,用于在所述递归模块往堆栈中多次压入上述地址后,构造系统函数CreateDeviceEx需要的参数并压入堆栈,并往堆栈中再次压入上述地址后,跳转到系统函数CreateDeviceEx。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201610128818.0/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top