保护进程的方法和装置制造方法及图纸

技术编号:9783075 阅读:120 留言:0更新日期:2014-03-18 22:29
本发明专利技术公开了一种保护进程的方法和装置,属于信息安全领域。所述方法包括:启动被保护进程,获取所述被保护进程的第一初始化代码;根据预设的代码Hook所述第一初始化代码中的预设指令,得到第二初始化代码,所述预设的代码用于指示执行的线程跳转到第一指定的内存地址;当预设线程被启动时,执行所述第二初始化代码,并根据所述第二初始化代码跳转到第一指定的内存地址;根据所述第一指定的内存地址对应的指定指令判断所述预设线程是否是被保护进程的线程,如果否,则终止执行所述预设线程。

【技术实现步骤摘要】
保护进程的方法和装置
本专利技术涉及信息安全领域,特别涉及一种保护进程的方法和装置。
技术介绍
随着信息技术的发展,信息安全越来越受到用户的重视。现有的一种侵犯用户信息安全的方法是,在用户的应用中注入远程线程,通过注入的远程线程执行恶意代码或是盗取用户的密码。现有技术中一种阻止远程线程注入的方法是,将被保护程序与驱动程序相绑定,在被保护进行启动后,通过驱动程序,使用预设的代码Hook SSDT (System ServiceDescription Table,系统服务描述表)中的系统服务,防止被保护进程被远程线程注入。具体的,在有远程线程创建时,会调用NtOpenProcess和NtWriteProcessMemory等系统服务函数,当检测到有这些函数被调用时,拦截这些被调用的函数,使这些函数调用不成功,这样远程线程就不会被创建,从而达到被保护进程不被远程线程注入的目的。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题:现有的技术方案需要被保护程序必须与驱动程序捆绑发布,增加了被保护程序的复杂性,降低了被保护程序的稳定性。
技术实现思路
为了降低被保护程序的复杂性,本专利技术实施例提供了一种保护进程的方法和装置。所述技术方案如下:一方面,提供了一种保护进程的方法,所述方法包括:启动被保护进程,获取所述被保护进程的第一初始化代码;根据预设的代码Hook所述第一初始化代码中的预设指令,得到第二初始化代码,所述预设的代码用于指示执行的线程跳转到第一指定的内存地址;当预设线程被启动时,执行所述第二初始化代码,并根据所述第二初始化代码跳转到第一指定的内存地址;根据所述第一指定的内存地址对应的指定指令判断所述预设线程是否是被保护进程的线程,如果否,则终止执行所述预设线程。所述获取所述被保护进程的第一初始化代码之后,还包括:将所述第一初始化代码中的预设指令拷贝到第二指令的内存地址,并将跳转指令添加到所述拷贝后的预设指令之后,所述跳转指令用于指示执行的线程跳转到所述第一初始化代码中的所述预设指令对应的下一个内存地址。所述将所述第一初始化代码中的预设指令拷贝到第二指令的内存地址,包括:获取所述被保护进程的第一初始化代码的起始内存地址;根据预设的代码所占内存的大小,计算出需要拷贝的所述第一初始化代码中的指令条数,得到所述第一初始化代码中需要拷贝的预设指令;从所述起始内存地址对应的指令开始拷贝所述预设指令,并将拷贝得到的所述预设指令从第二指定的内存地址开始顺序存放。所述方法还包括:如果所述预设线程是所述被保护进程的线程,则跳转到第二指定的内存地址,执行所述拷贝后的第一初始化代码中的预设指令。所述根据所述第一指定的内存地址对应的指令判断所述预设线程是否是被保护进程的线程,包括:获取所述第一指定的内存地址对应的指定指令;根据所述指定指令获取所述预设线程的线程函数地址;将所述预设线程的线程函数地址与所述被保护进程的线程函数表中的地址进行比较,如果所述预设线程的线程函数地址能够与所述被保护进程的线程函数表中的地址匹配,则确认所述预设线程是所述被保护进程中的线程,否则,确认所述预设线程不是所述被保护进程中的线程。另一方面,提供了一种保护进程的装置,所述装置包括:获取模块,用于启动被保护进程,获取所述被保护进程的第一初始化代码;初始化模块,用于根据预设的代码Hook所述第一初始化代码中的预设指令,得到第二初始化代码,所述预设的代码用于指示执行的线程跳转到第一指定的内存地址;跳转模块,用于当预设线程被启动时,执行所述第二初始化代码,并根据所述第二初始化代码跳转到第一指定的内存地址;执行模块,用于根据所述第一指定的内存地址对应的指定指令判断所述预设线程是否是被保护进程的线程,如果否,则终止执行所述预设线程。所述装置还包括:备份模块,用于在所述获取模块获取所述被保护进程的第一初始化代码之后,将所述第一初始化代码中的预设指令拷贝到第二指令的内存地址,并将跳转指令添加到所述拷贝后的预设指令之后,所述跳转指令用于指示执行的线程跳转到所述第一初始化代码中的所述预设指令对应的下一个内存地址。所述备份模块包括:第一获取单元,用于获取所述被保护进程的第一初始化代码的起始内存地址;计算单元,用于根据预设的代码所占内存的大小,计算出需要拷贝的所述第一初始化代码中的指令条数,得到所述第一初始化代码中需要拷贝的预设指令;拷贝单元,用于从所述起始内存地址对应的指令开始拷贝所述预设指令,并将拷贝得到的所述预设指令从第二指定的内存地址开始顺序存放。所述执行模块还用于:如果所述预设线程是所述被保护进程的线程,则跳转到第二指定的内存地址,执行所述拷贝后的第一初始化代码中的预设指令。所述执行模块,包括:第二获取单元,用于获取所述第一指定的内存地址对应的指定指令;第三获取单元,用于根据所述指定指令获取所述预设线程的线程函数地址;匹配单元,用于将所述预设线程的线程函数地址与所述被保护进程的线程函数表中的地址进行比较,如果所述预设线程的线程函数地址能够与所述被保护进程的线程函数表中的地址匹配,则确认所述预设线程是所述被保护进程中的线程,否则,确认所述预设线程不是所述被保护进程中的线程。本专利技术实施例提供的技术方案带来的有益效果是:启动被保护进程,获取所述被保护进程的第一初始化代码;根据预设的代码Hook所述第一初始化代码中的预设指令,得到第二初始化代码,所述预设的代码用于指示执行的线程跳转到第一指定的内存地址;当预设线程被启动时,执行所述第二初始化代码,并根据所述第二初始化代码跳转到第一指定的内存地址;根据所述第一指定的内存地址对应的指定指令判断所述预设线程是否是被保护进程的线程,如果否,则终止执行所述预设线程。在被保护程序中加入预设的代码,在被保护进程启动时,用预设的代码Hook掉第一初始化代码,使预设线程按照第二初始化代码的指令跳转到第一指定的内存地址,执行指定指令,判断所述预设线程是否是被保护进程的线程,一旦发现该线程不是被保护进程的线程,则终止该线程的执行,其中不需要将驱动程序与被保护程序相绑定,降低了被保护程序的复杂度,提高了被保护程序的稳定性。【附图说明】为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例一提供的一种保护进程的方法流程图;图2是本专利技术实施例二提供的一种保护进程的方法流程图;图3是本专利技术实施例三提供的一种保护进程的装置结构示意图;图4是本专利技术实施例三提供的另一种保护进程的装置结构示意图。【具体实施方式】为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。实施例一参见图1,本实施例中提供了一种保护进程的方法,包括:101、启动被保护进程,获取所述被保护进程的第一初始化代码;102、根据预设的代码Hook所述第一初始化代码中的预设指令,得到第二初始化代码,所述预设的代码用于指示执行的线程跳转到第一指定的内存地址;103、当预设线程被启动时,执行所述第二初始化代码,并根据所述第二初始化代码跳转到第一指本文档来自技高网...

【技术保护点】
一种保护进程的方法,其特征在于,所述方法包括:启动被保护进程,获取所述被保护进程的第一初始化代码;根据预设的代码Hook所述第一初始化代码中的预设指令,得到第二初始化代码,所述预设的代码用于指示执行的线程跳转到第一指定的内存地址;当预设线程被启动时,执行所述第二初始化代码,并根据所述第二初始化代码跳转到第一指定的内存地址;根据所述第一指定的内存地址对应的指定指令判断所述预设线程是否是被保护进程的线程,如果否,则终止执行所述预设线程。

【技术特征摘要】
1.一种保护进程的方法,其特征在于,所述方法包括:启动被保护进程,获取所述被保护进程的第一初始化代码;根据预设的代码Hook所述第一初始化代码中的预设指令,得到第二初始化代码,所述预设的代码用于指示执行的线程跳转到第一指定的内存地址;当预设线程被启动时,执行所述第二初始化代码,并根据所述第二初始化代码跳转到第一指定的内存地址;根据所述第一指定的内存地址对应的指定指令判断所述预设线程是否是被保护进程的线程,如果否,则终止执行所述预设线程。2.根据权利要求1所述的方法,其特征在于,所述获取所述被保护进程的第一初始化代码之后,还包括:将所述第一初始化代码中的预设指令拷贝到第二指令的内存地址,并将跳转指令添加到所述拷贝后的预设指令之后,所述跳转指令用于指示执行的线程跳转到所述第一初始化代码中的所述预设指令对应的下一个内存地址。3.根据权利要求2所述的方法,其特征在于,所述将所述第一初始化代码中的预设指令拷贝到第二指令的内存地址,包括:获取所述被保护进程的第一初始化代码的起始内存地址;根据预设的代码所占内存的大小,计算出需要拷贝的所述第一初始化代码中的指令条数,得到所述第一初始化代码中需要拷贝的预设指令;从所述起始内存地址对应的指令开始拷贝所述预设指令,并将拷贝得到的所述预设指令从第二指定的内存地址开始顺序存`放。4.根据权利要求2所述的方法,其特征在于,所述方法还包括:如果所述预设线程是所述被保护进程的线程,则跳转到第二指定的内存地址,执行所述拷贝后的第一初始化代码中的预设指令。5.根据权利要求1所述的方法,其特征在于,所述根据所述第一指定的内存地址对应的指令判断所述预设线程是否是被保护进程的线程,包括:获取所述第一指定的内存地址对应的指定指令;根据所述指定指令获取所述预设线程的线程函数地址;将所述预设线程的线程函数地址与所述被保护进程的线程函数表中的地址进行比较,如果所述预设线程的线程函数地址能够与所述被保护进程的线程函数表中的地址匹配,则确认所述预设线程是所述被保护进程中的线程,否则,确认所述预设线程不是所述被保护进程中的线程。6.一种保护进程的装置,其特征在于,...

【专利技术属性】
技术研发人员:曹亮
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1