System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,尤其涉及一种数据加载的方法和装置。
技术介绍
1、在数据加载过程中,通常要通过调用预先注册有回调函数的异步过程调用对象,以实现通过回调函数进行数据加载的目的。但是,现有技术中将用于数据加载的目标函数注入待加载目标进程的过程存在一定的局限性。例如常用的setwindowshookex注入技术,会对操作系统中的所有进程进行注入,无法做到对特定进程进行注入。而openprocess与loadlibrary联合的注入方法,则无法对拥有自我保护功能的进程进行注入。因此,现有技术只能对不具备自我保护功能的进程执行数据加载过程,无法根据用户需求对。
技术实现思路
1、有鉴于此,本专利技术实施例提供一种数据加载的方法和装置,通过从内核态线程队列中调用预先插入的第一异步过程调用对象并执行第一回调函数,触发用户态上下文,并通过从用户态线程队列中调用预先插入的第二异步过程调用对象并执行第二回调函数,可以绕过内核态中带有自保护的目标进程的检测,在用户态模式下实现目标函数的数据加载过程。
2、为实现上述目的,根据本专利技术实施例的一个方面,提供了一种数据加载的方法。
3、本专利技术实施例的一种数据加载的方法包括:获取待加载的目标进程;从与所述目标进程对应的内核态线程队列中获取第一异步过程调用对象,通过所述第一异步过程调用对象中注册的第一回调函数触发用户态模式;从与所述目标进程对应的用户态线程队列中获取第二异步过程调用对象,并通过所述第二异步过程调用对象中注册的第
4、可选地,在所述获取待加载的目标进程之前,还包括:在运行系统的内核态模式下,将所述第一异步过程调用对象和所述第二异步过程调用对象分别插入至与所述目标进程对应的内核态线程队列以及用户态线程队列。
5、可选地,所述将所述第一异步过程调用对象和所述第二异步过程调用对象分别插入至与所述目标进程对应的内核态线程队列以及用户态线程队列,包括:将指示了触发用户态模式的第一回调函数注册至所述第一异步过程调用对象中,将注册后的第一异步过程调用对象插入至所述目标进程对应的内核态线程队列;将所述第二回调函数注册至所述第二异步过程调用对象中,并将注册后的第二异步过程调用对象插入至所述目标进程对应的用户态线程队列,以将所述目标函数注入所述目标进程。
6、可选地,该方法还包括:利用预先注册的进程通知回调函数实时监控运行系统中处于启动状态的一个或多个进程;在处于启动状态的一个或多个所述进程中,根据所述进程参数筛选出待注入的所述目标进程。
7、可选地,该方法还包括:将所述目标函数对应的参数以及所述第二回调函数存储至与所述目标进程对应的可执行内存中。
8、可选地,该方法还包括:分别将所述目标函数对应的参数以及所述第二回调函数存储至连续的两页所述可执行内存中;其中,将所述目标函数对应的参数存储至首页,将所述第二回调函数存储至第二页。
9、可选地,所述目标进程为native进程时,所述目标函数为ldrloaddll函数;或者,所述目标进程为wow64进程时,所述目标函数为rtlqueueapcwow64thread函数。
10、可选地,所述将注册后的第一异步过程调用对象插入至所述目标进程对应的内核态线程队列,包括:获取所述目标进程在内核态模式下的第一个线程;将注册后的第一异步过程调用对象插入至所述第一个线程对应的队列。
11、为实现上述目的,根据本专利技术实施例的又一方面,提供了一种数据加载的装置。
12、本专利技术实施例的一种数据加载的装置包括:
13、获取模块,用于获取待加载的目标进程;
14、第一调用模块,用于从与所述目标进程对应的内核态线程队列中获取第一异步过程调用对象,通过所述第一异步过程调用对象中注册的第一回调函数触发用户态模式;
15、第二调用模块,用于从与所述目标进程对应的用户态线程队列中获取第二异步过程调用对象,并通过所述第二异步过程调用对象中注册的第二回调函数实现数据加载;其中,所述第二回调函数中包含有实现数据加载的目标函数对应的参数。
16、为实现上述目的,根据本专利技术实施例的又一方面,提供了一种用于数据加载的电子设备。
17、本专利技术实施例的一种用于数据加载的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本专利技术实施例的一种数据加载的方法。
18、为实现上述目的,根据本专利技术实施例的再一方面,提供了一种计算机可读存储介质。
19、本专利技术实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本专利技术实施例的一种数据加载的方法。
20、上述专利技术中的一个实施例具有如下优点或有益效果:通过从内核态线程队列中调用预先插入的第一异步过程调用对象并执行第一回调函数,触发用户态上下文,并通过从用户态线程队列中调用预先插入的第二异步过程调用对象并执行第二回调函数,可以绕过内核态中带有自保护的目标进程的检测,在用户态模式下实现目标函数的数据加载过程。
21、上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
本文档来自技高网...【技术保护点】
1.一种数据加载的方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在所述获取待加载的目标进程之前,还包括:
3.根据权利要求2所述的方法,其特征在于,所述将所述第一异步过程调用对象和所述第二异步过程调用对象分别插入至与所述目标进程对应的内核态线程队列以及用户态线程队列,包括:
4.根据权利要求2所述的方法,其特征在于,还包括:
5.根据权利要求1所述的方法,其特征在于,还包括:
6.根据权利要求5所述的方法,其特征在于,
7.根据权利要求1所述的方法,其特征在于,
8.根据权利要求3所述的方法,其特征在于,所述将注册后的第一异步过程调用对象插入至所述目标进程对应的内核态线程队列,包括:
9.一种数据加载的装置,其特征在于,包括:
10.一种用于数据加载的电子设备,其特征在于,包括:
11.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一所述的方法。
【技术特征摘要】
1.一种数据加载的方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在所述获取待加载的目标进程之前,还包括:
3.根据权利要求2所述的方法,其特征在于,所述将所述第一异步过程调用对象和所述第二异步过程调用对象分别插入至与所述目标进程对应的内核态线程队列以及用户态线程队列,包括:
4.根据权利要求2所述的方法,其特征在于,还包括:
5.根据权利要求1所述的方法,其特征在于,还包括:
6.根据权利要...
【专利技术属性】
技术研发人员:石志强,于扬,
申请(专利权)人:北京天空卫士网络安全技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。