1.一种线程的保护方法,其特征在于,包括以下步骤:
监控目标线程是否接收到暂停指令;
当确定所述目标线程接收到所述暂停指令时,利用钩子函数挂钩与所述目标线程对应的预设函数;
判断所述目标线程对应的进程路径是否在预设目录下;
如果所述目标线程对应的进程路径在所述预设目录下,则执行对所述目标线程的保护操作。
2.如权利要求1所述的方法,其特征在于,利用钩子函数挂钩与所述目标线程对应的预设函数,包括:
从系统服务描述符表SSDT中查找所述预设函数的地址;
建立所述钩子函数,并将所述钩子函数的地址设置为所述预设函数的地址,以挂钩所述预设函数。
3.如权利要求1所述的方法,其特征在于,判断所述目标线程对应的进程路径是否在预设目录下,包括:
获取所述目标线程的线程句柄;
根据所述线程句柄获取所述目标进程的进程句柄;
根据所述进程句柄获取所述进程路径;
判断所述进程路径是否在预设目录下。
4.如权利要求3所述的方法,其特征在于,根据所述线程句柄获取所述目标进程的进程句柄,包括:
根据所述线程句柄获取所述目标线程的线程体结构地址;
根据所述线程体结构地址获取所述目标线程所在的进程体结构;
根据所述进程体结构获取所述进程句柄。
5.如权利要求1所述的方法,其特征在于,执行对所述目标线程的保护操作,包括:
利用所述钩子函数向所述暂停指令的发起主体返回拒绝状态;或者
利用所述钩子函数向所述暂停指令的发起主体返回暂停成功的假状态;或者
利用所述钩子函数执行所述预设函数,暂停所述目标线程,并在向所述暂停指令的发起主体返回暂停成功状态之后,恢复所述目标线程。
6.一种线程的保护装置,其特征在于,包括:
监控模块,用于监控目标线程是否接收到暂停指令;
挂钩模块,用于当确定所述目标线程接收到所述暂停指令时,利用钩子函数挂钩与所述目标线程对应的预设函数;
判断模块,用于判断所述目标线程对应的进程路径是否在预设目录下;
执行模块,用于如果所述目标线程对应的进程路径在所述预设目录下,则执行对所述目标线程的保护操作。
7.如权利要求6所述的装置,其特征在于,所述挂钩模块,包括:
查找子模块,用于从系统服务描述符表SSDT中查找所述预设函数的地址;
建立子模块,用于建立所述钩子函数,并将所述钩子函数的地址设置为所述预设函数的地址,以挂钩所述预设函数。
8.如权利要求6所述的装置,其特征在于,所述判断模块,包括:
第一获取子模块,用于获取所述目标线程的线程句柄;
第二获取子模块,用于获取根据所述线程句柄获取所述目标进程的进程句柄;
第三获取子模块,用于获取根据所述进程句柄获取所述进程路径;
判断子模块,用于判断所述进程路径是否在预设目录下。
9.如权利要求8所述的装置,其特征在于,所述第二获取子模块,用于:
根据所述线程句柄获取所述目标线程的线程体结构地址;
根据所述线程体结构地址获取所述目标线程所在的进程体结构;
根据所述进程体结构获取所述进程句柄。
10.如权利要求6所述的装置,其特征在于,所述执行模块,用于:
利用所述钩子函数向所述暂停指令的发起主体返回拒绝状态;或者
利用所述钩子函数向所述暂停指令的发起主体返回暂停成功的假状态;或者
利用所述钩子函数执行所述预设函数,暂停所述目标线程,并在向所述暂停指令的发起主体返回暂停成功状态之后,恢复所述目标线程。