一种程序处理方法及相关设备技术

技术编号:26303784 阅读:100 留言:0更新日期:2020-11-10 19:58
本发明专利技术实施例公开了一种程序处理方法及相关设备,用与在对待hook原始代码执行inlinehook操作时能兼容各操作系统。本发明专利技术实施例方法包括:确定待hook原始代码的内存地址;提取所述待hook原始代码的特征码,所述特征码用于在各操作系统中定位所述待hook原始代码;在目标操作系统中,从所述待hook原始代码的内存地址的起始位置查找并匹配所述特征码,所述目标操作系统包含于所述各操作系统;当查找到所述特征码并匹配成功时,确定目标偏移量,所述目标偏移量为从所述起始位置到查找到所述特征码的位置的偏移量;根据所述目标偏移量确定所述待hook原始代码在所述目标操作系统中的精确内存地址;根据精确内存地址在所述目标操作系统中对所述待hook原始代码执行inlinehook操作。

【技术实现步骤摘要】
一种程序处理方法及相关设备
本专利技术涉及控制
,尤其涉及一种程序处理方法及相关设备。
技术介绍
目前,对于基于Windows平台开发的一些软件来说,其功能也越来越丰富。同时,基于Windows平台的强大支撑,可以开发一些特殊功能的软件,如监控某个程序的所有读写文件,监控键盘输入,监控网络流量等等。然而对于Windows平台来说,很多功能都需要通过hook的方式来实现,例如监控一个程序打开的所有文件,则可以通过hook该打开文件的应用程序编程接口(applicationprogramminginterface,API)函数,从而可以得到该打开文件的所有文件名。目前来说,hook的方式有很多种,而通过inlinehook则可以实现的功能更多,所谓inlinehook,指通过修改代码,来增加jump指令修改执行流程跳转到hook功能逻辑中。然而,对于inlinehook来说,首先需要知道其需要hook模块的内存地址,而内存地址通常都需要通过查看该hook模块,通过具体函数找到。但是对于一个通用兼容更多操作系统版本的inlinehook本文档来自技高网...

【技术保护点】
1.一种程序处理方法,其特征在于,包括:/n确定待hook原始代码的内存地址;/n提取所述待hook原始代码的特征码,所述特征码用于在各操作系统中定位所述待hook原始代码;/n在目标操作系统中,从所述待hook原始代码的内存地址的起始位置查找并匹配所述特征码,所述目标操作系统包含于所述各操作系统;/n当查找到所述特征码并匹配成功时,确定目标偏移量,所述目标偏移量为从所述起始位置到查找到所述特征码的位置的偏移量;/n根据所述目标偏移量确定所述待hook原始代码在所述目标操作系统中的精确内存地址;/n根据所述精确内存地址在所述目标操作系统中对所述待hook原始代码执行inlinehook操作。/...

【技术特征摘要】
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原始代码的内存地址;
提取单元,用...

【专利技术属性】
技术研发人员:周志刚陈少杰张文明
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1