【技术实现步骤摘要】
一种针对APC注入的检测方法和相关装置
本专利技术涉及开发平台领域,尤其涉及一种针对APC注入的检测方法和相关装置。
技术介绍
目前,随着Windows平台的越加成熟,基于Windows平台所开发的软件的功能越来越多样化,其中包括一些特殊功能的软件,例如监控某个程序的所有读写文件,监控键盘输入,监控网络流量等等。然而对于Windows平台来说,很多功能都需要通过hook的方式来实现,例如监控一个程序打开的所有文件,则可以通过hook打开的文件的应用程序编程接口(applicationprogramminginterface,API)函数,从而可以得到该打开的文件的文件名。而这些hook功能的实现都是需要通过注入一个模块到目标进程中,从而目标进程可以执行黑客编写的功能。通常,黑客会使用一些传统的注入方法,例如伪造输入法来注入,远程线程注入,修改导入表注入等,且现有技术中,软件开发商对这些注入方法都进行了检测。然而,现阶段,黑客使用了一种新的注入方法,该新的注入方法通过异步过程调用(AsynchronousProcedu ...
【技术保护点】
1.一种针对异步过程调用APC注入的检测方法,其特征在于,包括:/n调用应用程序编程接口API中的OpenProcess函数以打开当前进程的句柄;/n调用所述API中的EnumProcessModule函数获取所述当前进程中的所有模块的模块信息,所述模块信息包括内存起始地址、内存结束地址和标识信息;/n将所述所有模块的模块信息进行存储得到存储列表,所述存储列表用于根据内存地址确定所述内存地址所属的模块;/n对所述当前进程的系统函数NtQueueApcThread进行挂钩hook操作,以获得所述系统函数NtQueueApcThread的回调函数的内存地址;/n调用所述API中 ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。