利索能及
我要发布
收藏
专利号: 2016101288180
申请人: 武汉斗鱼网络科技有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2024-12-10
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

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

2.如权利要求1所述的构造合法堆栈返回值绕过函数调用检测的方法,其特征在于,往堆栈中压入的地址的获取方式为:在进程的d3d9.dll模块的代码段中查找连续的值为

0x5D,0xC3的指令的地址,其中0x5D,0xC3是汇编指令序列pop ebp,retn所对应的16进制数值。

3.如权利要求1或2所述的构造合法堆栈返回值绕过函数调用检测的方法,其特征在于,所述构造合法堆栈返回值绕过函数调用检测的方法具体为:初始化i=n;

Void func(void)

{

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

将i的值减一;

如果:i>=0

跳转到func();

否则

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

}

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

4.如权利要求1或2所述的构造合法堆栈返回值绕过函数调用检测的方法,其特征在于,所述构造合法堆栈返回值绕过函数调用检测的方法具体为:初始化i=0;

Void func(void)

{

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

将i的值减一;

如果:i<=n

跳转到func();

否则

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

}

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

5.如权利要求1或2所述的构造合法堆栈返回值绕过函数调用检测的方法,所述递归调用往堆栈中压入地址的次数大于等于5。

6.一种构造合法堆栈返回值绕过函数调用检测的系统,其特征在于,包括递归模块、递归跳出模块,其中:所述递归模块,用于构造递归调用往堆栈中多次压入进程的d3d9.dll模块的代码段中的任一连续两条汇编指令序列pop ebp,retn的地址,其中压入地址的次数大于或等于堆栈检测调用的层数;

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

7.如权利要求6所述的构造合法堆栈返回值绕过函数调用检测的系统,其特征在于,往堆栈中压入的地址的获取方式为:在进程的d3d9.dll模块的代码段中查找连续的值为

0x5D,0xC3的指令的地址,其中0x5D,0xC3是汇编指令序列pop ebp,retn所对应的16进制。

8.如权利要求6或7所述的构造合法堆栈返回值绕过函数调用检测的系统,其特征在于,所述系统的具体实现方式为:初始化i=n;

Void func(void)

{

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

将i的值减一;

如果:i>=0

跳转到func();

否则

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

}

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

9.如权利要求6或7所述的构造合法堆栈返回值绕过函数调用检测的系统,其特征在于,所述系统的具体实现方式为:初始化i=0;

Void func(void)

{

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

将i的值减一;

如果:i<=n

跳转到func();

否则

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

}

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

10.如权利要求6或7所述的构造合法堆栈返回值绕过函数调用检测的方法,所述递归调用往堆栈中压入地址的次数大于等于5。