一种远程32位进程注入64位进程的方法及系统与流程

文档序号:20439151发布日期:2020-04-17 22:16阅读:435来源:国知局
一种远程32位进程注入64位进程的方法及系统与流程

本发明涉及操作系统处理领域,尤其涉及一种远程32位进程注入64位进程的方法及系统。



背景技术:

目前,随着硬件技术的不断发展和成熟,计算机装配内存空间和存储容量大的存储设备已经成为常见的配置。为了充分发挥存储设备,尤其是内存设备的性能,需要计算机安装64位操作系统,以便发挥硬件的最大性能。因此,越来越多的用户使用例如微软windows10这样的64位操作系统。微软的64位windows操作系统,能够兼容32位的应用程序,即在64位操作系统中存在32位进程和64位进程。

为了保证信息安全,基于操作系统的数据安全防护类软件也得到了广泛应用,特别是终端安全防护类产品,通常会使用远程注入技术,以监控进程的运行,进而实现相关信息的审查、审计。但存在的问题是32位进程只能通过注入模块注入到32位进程,64位进程只能通过注入模块注入到64位进程,无法实现32位进程既能注入32位进程又能注入64位进程。

目前,现有技术中存在如图1-2所示的32位进程和64位进程的交叉注入方法,但现有技术的32位进程和64位进程交叉注入方法实现过程繁琐,需要创建另外的注入器进程,主进程和从属注入器进程需要通讯,若通讯失败,则无法实现某些进程的注入,存在功能失效的情况。



技术实现要素:

为解决上述技术问题,本发明提出了一种32位进程注入64位进程的方法及系统,所述方法及系统,用以解决现有技术中32位进程和64位进程交叉注入方法实现过程繁琐,需要创建另外的注入器进程的技术问题。

根据本发明的第一方面,提供一种远程32位进程注入64位进程的系统,所述系统包括函数定位层和注入处理层;

所述函数定位层用于将32位注入器进程的进程空间从x86工作模式切换至x64工作模式,定位出远程注入进程在x64模式下所需的64位ntdll中的关键nativeapi函数地址,定位完成后切换至x86工作模式,并将所述关键nativeapi函数地址传递到注入处理层;

所述注入处理层用于将远程注入模块的信息封装成所述关键nativeapi函数调用需要的参数,将进程切换至x64工作模式,调用远线程创建函数,实现将远程模块或远程进程注入到64位目标进程中,再切换至x86工作模式。

进一步地,所述函数定位层包括x86、x64模式切换模块和nativeapi定位模块;所述x86、x64模式切换模块用于进程内部x86和x64工作模式之间的切换,以满足其他模块或进程的工作环境要求;所述nativeapi定位模块,调用所述x86、x64模式切换模块,将工作环境切换至x64工作模式,用于定位64位ntdll模块中的关键nativeapi函数地址,定位完成后将工作模式切换回x86工作模式。

进一步地,所述关键nativeapi函数包括内存分配、管理函数、远线程创建函数,用于由注入处理层引用所述关键nativeapi函数实现远程模块或远程进程注入。

进一步地,所述注入处理层包括注入参数组装模块和远程注入模块;所述注入参数组装模块,用于将待注入的远程模块或远程进程信息,组装成符合系统格式的可执行shellcode代码;所述远程注入模块,用于调用所述x86、x64模式切换模块,将进程切换至x64工作模式,调用定位出的所述关键nativeapi函数及地址,将封装好的数据写入目标进程空间;再调用用户线程创建函数,实现远程模块或远程进程的远程注入,注入完成后,再切换回x86工作模式。

根据本发明第二方面,提供一种远程32位进程注入64位进程的方法,所述方法其于如前所述的远程32位进程注入64位进程的系统实现,执行以下步骤:

步骤s401:系统开机后,注册进程创建通知回调函数;

步骤s402:创建新的远程进程,检查所述远程进程状态;

步骤s403:检查所述远程进程是否为64位进程;若是,进入步骤s404;若否,进入步骤s407;

步骤s404:将32位注入器进程的进程空间切换至x64工作模式,定位64位ntdll模块中的关键nativeapi函数地址,定位完成后将工作模式切换回x86工作模式;

步骤s405:将待注入的远程进程信息,组装成符合系统格式的可执行shellcode代码,组装远程进程注入需要的参数模块,切换至x64工作模式,使用定位出的所述关键nativeapi函数地址将相关信息写入目标进程;

步骤s406:利用64位ntdll模块中的用户线程创建函数,实现远程进程的远程注入,注入完成后,再切换回x86工作模式;进入步骤s408;

步骤s407:使用线程creatremotethread完成远程进程的远程注入;

步骤s408:检查是否退出系统,若是,方法结束;若否,进入步骤s402。

根据本发明第三方面,提供一种远程32位进程注入64位进程的装置,所述装置包括:

注册进程模块:用于在系统开机后,注册进程创建通知回调函数;

检查进程状态模块:用于创建新的远程进程,检查所述远程进程状态;

第一判断模块:用于检查所述远程进程是否为64位进程;

定位模块:用于将32位注入器进程的进程空间切换至x64工作模式,定位64位ntdll模块中的关键nativeapi函数地址,定位完成后将工作模式切换回x86工作模式;

写入模块:用于将待注入的远程进程信息,组装成符合系统格式的可执行shellcode代码,组装远程进程注入需要的参数模块,切换至x64工作模式,使用定位出的所述关键nativeapi函数地址将相关信息写入目标进程;

第一注入模块:用于利用64位ntdll模块中的用户线程创建函数,实现远程进程的远程注入,注入完成后,再切换回x86工作模式;

第二注入模块:用于使用线程creatremotethread完成远程进程的远程注入;

第二判断模块:用于检查是否退出系统。

根据本发明第四方面,提供一种32位进程注入64位进程的系统,包括:

处理器,用于执行多条指令;

存储器,用于存储多条指令;

其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如前所述的32位进程注入64位进程的方法。

根据本发明第五方面,提供一种计算机可读存储介质,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如前所述的32位进程注入64位进程的方法。

根据本发明的上述方案,能够解决32位进程不能注入64位进程的问题,将远程功能模块或远程进程注入到64位目标进程,32位的远程进程可同时注入32位和64位进程,不需要其他辅助进程。该方案简单、方便、从而保证硬件资源能够发挥最大性能,程序执行效率高,避免进程注入失败造成功能失效。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明提供如下附图进行说明。在附图中:

图1为现有技术中主注入程序为32位进程的32位进程和64位进程的交叉注入方法流程图;

图2为现有技术中主注入程序为64位进程的32位进程和64位进程的交叉注入方法流程图;

图3为本发明一个实施方式的远程32位进程注入64位进程的系统的总体架构图;

图4为本发明一个实施方式的远程32位进程注入64位进程的方法流程图;

图5为本发明一个实施方式的基于远程32位进程注入64位进程方法的进行远程监控的方法流程图;

图6为本发明一个实施方式的远程32位进程注入64位进程的装置结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

首先结合图3说明本发明的远程32位进程注入64位进程的系统的总体架构,图3示出了根据本发明的一个实施方式的远程32位进程注入64位进程的系统的总体架构图。如图3所示:

所述远程32位进程注入64位进程的系统包括函数定位层和注入处理层。

所述函数定位层用于将32位进程空间从x86工作模式切换至x64工作模式,定位出远程注入进程在x64模式下所需的64位ntdll中的关键nativeapi函数地址,定位完成后切换至x86工作模式,并将所述关键nativeapi函数地址传递到注入处理层。

所述函数定位层包括x86、x64模式切换模块和nativeapi定位模块。在64位操作系统环境中,32位进程空间存在x86、x64两种工作模式。所述x86、x64模式切换模块用于进程内部x86和x64工作模式之间的切换,以满足其他模块或进程的工作环境要求。所述nativeapi定位模块,调用所述x86、x64模式切换模块,将工作环境切换至x64工作模式,用于定位64位ntdll模块中的关键nativeapi函数地址,定位完成后将工作模式切换回x86工作模式。所述关键nativeapi函数包括但不限于内存分配、管理函数、远线程创建函数,用于由注入处理层引用所述关键nativeapi函数实现远程模块或远程进程注入。

所述注入处理层用于将远程注入模块的信息封装成所述关键nativeapi函数调用需要的参数,将进程切换至x64工作模式,调用远线程创建函数,实现将远程模块或远程进程注入到64位目标进程中,再切换至x86工作模式。

所述注入处理层包括注入参数组装模块和远程注入模块。所述注入参数组装模块,用于将待注入的远程模块或远程进程信息,组装成符合系统格式的可执行shellcode代码;所述远程注入模块,用于调用所述x86、x64模式切换模块,将进程切换至x64工作模式,调用定位出的所述关键nativeapi函数及地址,将封装好的数据写入目标进程空间;再调用用户线程创建函数,实现远程模块或远程进程的远程注入,注入完成后,再切换回x86工作模式。

以下结合图4说明本发明的远程32位进程注入64位进程的方法流程,图4示出了根据本发明的远程32位进程注入64位进程的方法流程图。让你述远程32位进程注入64位进程的方法基于所述远程32位进程注入64位进程的系统实现,如图4所示:

步骤s401:系统开机后,注册进程创建通知回调函数;

步骤s402:创建新的远程进程,检查所述远程进程状态;

所述新的远程进程是新创建的,是待注入的目标进程。

步骤s403:检查所述远程进程是否为64位进程;若是,进入步骤s404;若否,进入步骤s407;

步骤s404:将32位注入器进程的进程空间切换至x64工作模式,定位64位ntdll模块中的关键nativeapi函数地址,定位完成后将工作模式切换回x86工作模式;

在64位系统环境中,32位进程有两种工作模式(即x86和x64),默认处于x86工作模式。当32位注入器进程中要注入的目标为64位进程时,需要将32位注入器进程切换到x64模式,定位所需nativeapi函数的地址,执行注入操作。因为ntdll模块在各进程空间内映射的地址为同一内存地址,因此,32位注入器进程切换到x64模式下,定位出的nativeapi函数地址,在目标64位地址空间中有效,可以实现注入功能。

步骤s405:将待注入的远程进程信息,组装成符合系统格式的可执行shellcode代码,组装远程进程注入需要的参数模块,切换至x64工作模式,使用定位出的所述关键nativeapi函数地址将相关信息写入目标进程;

步骤s406:利用64位ntdll模块中的用户线程创建函数,实现远程进程的远程注入,注入完成后,再切换回x86工作模式;进入步骤s408;

步骤s407:使用线程creatremotethread完成远程进程的远程注入;

步骤s408:检查是否退出系统,若是,方法结束;若否,进入步骤s402。

以下结合实施例进一步说明本发明的远程32位进程注入64位进程的方法。

以下结合图5说明本发明的基于远程32位进程注入64位进程方法的进行远程监控的方法。如图5所示:

步骤s501:进入windows桌面操作系统后,登录v3账号系统,验证通过后进入步骤s502;

步骤s502:同步文件操作审查策略;

步骤s503:注入审查模块到资源管理器进程;

步骤s504:所述资源管理器进行文件操作,所述文件操作包括拷贝、删除;

步骤s505:所述审查模块根据配置的策略,监控所述文件操作行为,并上传操作日志给服务器;

步骤s506:检查是否退出系统,若是,方法结束;若否,进入步骤s502。

其中步骤s503:注入审查模块到资源管理器进程,采用如前所述的远程32位进程注入64位进程方法。

本发明的远程32位进程注入64位进程方法,可以应用于文件操作记录审计、外发文件的审查等方面。

本发明实施例进一步给出一种远程32位进程注入64位进程的装置,如图6所示,所述装置包括:

注册进程模块:用于在系统开机后,注册进程创建通知回调函数;

检查进程状态模块:用于创建新的远程进程,检查所述远程进程状态;

第一判断模块:用于检查所述远程进程是否为64位进程;

定位模块:用于将32位注入器进程的进程空间切换至x64工作模式,定位64位ntdll模块中的关键nativeapi函数地址,定位完成后将工作模式切换回x86工作模式;

写入模块:用于将待注入的远程进程信息,组装成符合系统格式的可执行shellcode代码,组装远程进程注入需要的参数模块,切换至x64工作模式,使用定位出的所述关键nativeapi函数地址将相关信息写入目标进程;

第一注入模块:用于利用64位ntdll模块中的用户线程创建函数,实现远程进程的远程注入,注入完成后,再切换回x86工作模式;

第二注入模块:用于使用线程creatremotethread完成远程进程的远程注入;

第二判断模块:用于检查是否退出系统。

本发明实施例进一步给出一种实现远程32位进程注入64位进程的系统,包括:

处理器,用于执行多条指令;

存储器,用于存储多条指令;

其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如前所述的远程32位进程注入64位进程的方法。

本发明实施例进一步给出一种计算机可读存储介质,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如前所述的远程32位进程注入64位进程的方法。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,实体机服务器,或者网络云服务器等,需安装windows或者windowsserver操作系统)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1