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

摘要:

权利要求书:

1.一种程序处理方法,其特征在于,包括:

确定待hook原始代码的内存地址;

提取所述待hook原始代码的特征码,所述特征码用于在各操作系统中定位所述待hook原始代码;

在目标操作系统中,从所述待hook原始代码的内存地址的起始位置查找并匹配所述特征码,所述目标操作系统包含于所述各操作系统;

当查找到所述特征码并匹配成功时,确定目标偏移量,所述目标偏移量为从所述起始位置到查找到所述特征码的位置的偏移量;

根据所述目标偏移量确定所述待hook原始代码在所述目标操作系统中的精确内存地址;

根据所述精确内存地址在所述目标操作系统中对所述待hook原始代码执行inlinehook操作。

2.根据权利要求1所述的方法,其特征在于,所述确定待hook原始代码的内存地址包括:调用系统API函数GetModuleHandle获取所述待hook原始代码所在系统模块的内存地址;

根据所述待hook原始代码所在系统模块的内存地址,调用系统API函数GetProcAddress获取所述待hook原始代码的内存地址。

3.根据权利要求1所述的方法,其特征在于,所述根据所述精确内存地址在所述目标操作系统中对所述待hook原始代码执行inlinehook操作包括:分配跳转桩代码的内存,所述跳转桩代码包括需插入的inlinehook逻辑代码,所述跳转桩代码用于保存所述待hook原始代码的执行环境;

根据所述精确内存地址,调用系统API函数VirtualProtectEx将所述待hook原始代码的内存属性从只读可执行修改为可写可执行;

修改所述待hook原始代码为第一跳转代码,所述第一跳转代码用于从所述待hook原始代码跳转到所述跳转桩代码;

执行完成所述跳转桩代码后,根据第二跳转代码从所述跳转桩代码跳转到所述待hook原始代码,以继续执行所述待hook原始代码。

4.根据权利要求1所述的方法,其特征在于,所述从所述待hook原始代码的内存地址的起始位置查找并匹配所述特征码包括:调用系统API函数ReadProcessMemory读取所述待hook原始代码所在内存,以得到所述待hook原始代码;

通过if循环判断所述待hook原始代码所在内存中是否存在机器码与所述特征码是否一致;

若存在,则确定查找到所述特征码并匹配成功;

若不存在,则确定匹配所述特征码失败。

5.一种程序处理设备,其特征在于,包括:

确定单元,用于确定待hook原始代码的内存地址;

提取单元,用于提取所述待hook原始代码的特征码,所述特征码用于在各操作系统中定位所述待hook原始代码;

查找单元,用于在目标操作系统中,从所述待hook原始代码的内存地址的起始位置查找并匹配所述特征码,所述目标操作系统包含于所述各操作系统;

所述确定单元,还用于当查找到所述特征码并匹配成功时,确定目标偏移量,所述目标偏移量为从所述起始位置到查找到所述特征码的位置的偏移量;根据所述目标偏移量确定所述待hook原始代码在所述目标操作系统中的精确内存地址;

处理单元,用于根据所述精确内存地址在所述目标操作系统中对所述待hook原始代码执行inlinehook操作。

6.根据权利要求5所述的程序处理设备,其特征在于,所述确定单元具体用于:调用系统API函数GetModuleHandle获取所述待hook原始代码所在系统模块的内存地址;根据所述待hook原始代码所在系统模块的内存地址,调用系统API函数GetProcAddress获取所述待hook原始代码的内存地址。

7.根据权利要求5所述的程序处理设备,其特征在于,所述处理单元包括:分配模块,用于分配跳转桩代码的内存,所述跳转桩代码包括需插入的inlinehook逻辑代码,所述跳转桩代码用于保存所述待hook原始代码的执行环境;

修改模块,用于根据所述精确内存地址,调用系统API函数VirtualProtectEx将所述待hook原始代码的内存属性从只读可执行修改为可写可执行;修改所述待hook原始代码为第一跳转代码,所述第一跳转代码用于从所述待hook原始代码跳转到所述跳转桩代码;

跳转模块,用于执行完成所述跳转桩代码后,根据第二跳转代码从所述跳转桩代码跳转到所述待hook原始代码,以继续执行所述待hook原始代码。

8.根据权利要求5所述的程序处理设备,其特征在于,所述查找单元包括:获取模块,用于调用系统API函数ReadProcessMemory读取所述待hook原始代码所在内存,以得到所述待hook原始代码;

判断模块,用于通过if循环判断所述待hook原始代码所在内存中是否存在机器码与所述特征码是否一致;

确定模块,用于若存在,则确定查找到所述特征码并匹配成功;若不存在,则确定匹配所述特征码失败。

9.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-4任意一项所述的方法。

10.一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如权利要求1-4任意一项所述的方法。