一种针对APC注入的检测方法和相关装置制造方法及图纸

技术编号:23212902 阅读:26 留言:0更新日期:2020-01-31 21:55
本发明专利技术实施例公开了一种针对APC注入的检测方法及相关装置。本发明专利技术实施例方法包括:调用应用程序编程接口API中的OpenProcess函数以打开当前进程的句柄;调用API中的EnumProcessModule函数获取当前进程中的所有模块的模块信息,模块信息包括内存起始地址、内存结束地址和标识信息;将所有模块的模块信息进行存储得到存储列表,存储列表用于根据内存地址确定内存地址所属的模块;对当前进程的系统函数NtQueueApcThread进行挂钩hook操作,以获得系统函数NtQueueApcThread的回调函数的内存地址;调用API中的GetModuleName ByAddress函数,以根据回调函数的内存地址获取到回调函数的内存地址对应的模块的目标标识信息;若目标标识信息不包含于存储列表,则确定回调函数的内存地址对应的模块为APC注入的非法模块。

A detection method and related device for APC injection

【技术实现步骤摘要】
一种针对APC注入的检测方法和相关装置
本专利技术涉及开发平台领域,尤其涉及一种针对APC注入的检测方法和相关装置。
技术介绍
目前,随着Windows平台的越加成熟,基于Windows平台所开发的软件的功能越来越多样化,其中包括一些特殊功能的软件,例如监控某个程序的所有读写文件,监控键盘输入,监控网络流量等等。然而对于Windows平台来说,很多功能都需要通过hook的方式来实现,例如监控一个程序打开的所有文件,则可以通过hook打开的文件的应用程序编程接口(applicationprogramminginterface,API)函数,从而可以得到该打开的文件的文件名。而这些hook功能的实现都是需要通过注入一个模块到目标进程中,从而目标进程可以执行黑客编写的功能。通常,黑客会使用一些传统的注入方法,例如伪造输入法来注入,远程线程注入,修改导入表注入等,且现有技术中,软件开发商对这些注入方法都进行了检测。然而,现阶段,黑客使用了一种新的注入方法,该新的注入方法通过异步过程调用(AsynchronousProcedureCall,APC本文档来自技高网...

【技术保护点】
1.一种针对异步过程调用APC注入的检测方法,其特征在于,包括:/n调用应用程序编程接口API中的OpenProcess函数以打开当前进程的句柄;/n调用所述API中的EnumProcessModule函数获取所述当前进程中的所有模块的模块信息,所述模块信息包括内存起始地址、内存结束地址和标识信息;/n将所述所有模块的模块信息进行存储得到存储列表,所述存储列表用于根据内存地址确定所述内存地址所属的模块;/n对所述当前进程的系统函数NtQueueApcThread进行挂钩hook操作,以获得所述系统函数NtQueueApcThread的回调函数的内存地址;/n调用所述API中的GetModule...

【技术特征摘要】
1.一种针对异步过程调用APC注入的检测方法,其特征在于,包括:
调用应用程序编程接口API中的OpenProcess函数以打开当前进程的句柄;
调用所述API中的EnumProcessModule函数获取所述当前进程中的所有模块的模块信息,所述模块信息包括内存起始地址、内存结束地址和标识信息;
将所述所有模块的模块信息进行存储得到存储列表,所述存储列表用于根据内存地址确定所述内存地址所属的模块;
对所述当前进程的系统函数NtQueueApcThread进行挂钩hook操作,以获得所述系统函数NtQueueApcThread的回调函数的内存地址;
调用所述API中的GetModuleNameByAddress函数,以根据所述回调函数的内存地址获取到所述回调函数的内存地址对应的模块的目标标识信息,所述目标标识信息包含于所述所有模块的标识信息;
若所述目标标识信息不包含于所述存储列表,则确定所述回调函数的内存地址对应的模块为APC注入的非法模块。


2.根据权利要求1所述的方法,其特征在于,所述调用所述API中的EnumProcessModule获取所述当前进程中的所有模块的模块信息包括:
遍历所述所有模块的模块信息;
调用所述API中的GetModuleFileNameEx函数获取所述所有模块的标识信息;
调用所述API中的GetModuleInformation函数获取所述当前进程中所有模块的内存起始地址和内存结束地址。


3.根据权利要求1所述的方法,其特征在于,对所述当前进程的系统函数NtQueueApcThread进行挂钩hook操作,以获得所述系统函数NtQueueApcThread的回调函数的内存地址包括:
编写跳转代码和跳转桩代码,所述跳转代码包括第一跳转代码和第二跳转代码,所述第一跳转代码用于从所述系统函数NtQueueApcThread跳转到所述跳转桩代码,所述第二跳转代码用于从所述跳转桩代码跳转到所述系统函数NtQueueApcThread,所述跳转桩代码包括需插入的inlinehook逻辑代码,所述跳转桩代码用于保存所述程序中待hook原始代码的执行环境;
备份所述系统函数NtQueueApcThread,将所述系统函数NtQueueApcThread修改为所述第一跳转代码;
当执行到所述系统函数NtQueueApcThread时,根据所述第一跳转代码从所述系统函数NtQueueApcThread跳转到所述跳转桩代码;
根据所述跳转桩代码中的hooklogicfunc函数获取所述系统函数NtQueueApcThread的回调函数的内存地址。


4.根据权利要求3所述的方法,其特...

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

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

1