CN113110893B - 进程重定向方法及装置 - Google Patents

进程重定向方法及装置 Download PDF

Info

Publication number
CN113110893B
CN113110893B CN202010033626.8A CN202010033626A CN113110893B CN 113110893 B CN113110893 B CN 113110893B CN 202010033626 A CN202010033626 A CN 202010033626A CN 113110893 B CN113110893 B CN 113110893B
Authority
CN
China
Prior art keywords
binfmt
redirection
name
structural body
linux
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010033626.8A
Other languages
English (en)
Other versions
CN113110893A (zh
Inventor
李常坤
屈梦梦
张聪
汤迪斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qianxin Technology Group Co Ltd
Secworld Information Technology Beijing Co Ltd
Original Assignee
Qianxin Technology Group Co Ltd
Secworld Information Technology Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qianxin Technology Group Co Ltd, Secworld Information Technology Beijing Co Ltd filed Critical Qianxin Technology Group Co Ltd
Priority to CN202010033626.8A priority Critical patent/CN113110893B/zh
Publication of CN113110893A publication Critical patent/CN113110893A/zh
Application granted granted Critical
Publication of CN113110893B publication Critical patent/CN113110893B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例提供一种进程重定向方法及装置,所述方法包括:当检测到第一进程运行时,利用预先注册在系统运行解析链表最开头的第一binfmt结构体对所述第一进程进行解析,若确定所述第一进程为需要进行重定向的进程,则在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统,以使Linux系统以第二进程开始执行,其中,第二进程为第一进程需要重定向的进程。本发明实施例借助Linux系统的binfmt机制实现了第一进程至第二进程的进程重定向,整个实现过程简单方便,且对外界无感知,从而完成了进程重定向的目的。

Description

进程重定向方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种进程重定向方法及装置。
背景技术
在国产化系统中对安全的需要日益加剧,由于国产系统的原因,要从其它进程中干扰流程比较困难。有时候需要做一些重定向来达到安全防护的效果。
进程重定向是一种较为新颖的技术,当用户在国产系统中运行A程序时,实际上运行的是B程序。Linux创建新进程分为两个步骤:1、fork分裂出一个新的执行体;2、execve加载一个新的可执行文件。这种执行重定向需要驱动在内核的辅助下才能完成,由于execve的系统调用非常特殊,很难使用sys_call_table的替换来拦截。
发明内容
针对现有技术中的问题,本发明实施例提供一种进程重定向方法及装置。
具体地,本发明实施例提供了以下技术方案:
第一方面,本发明实施例提供了一种进程重定向方法,包括:
当检测到第一进程运行时,利用预先注册在系统运行解析链表最开头的第一binfmt结构体对所述第一进程进行解析,若确定所述第一进程为需要进行重定向的进程,则在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统,以使Linux系统以第二进程开始执行,其中,第二进程为第一进程需要重定向的进程。
进一步地,在利用预先注册在系统运行解析链表最开头的第一binfmt结构体对所述第一进程进行解析之前,所述进程重定向方法还包括:
通过Linux内核提供的binfmt的操作接口将第一binfmt结构体注册到系统运行解析链表的最开头。
进一步地,所述binfmt的操作接口包括insert_binfmt接口和/或register_binfmt接口。
进一步地,所述在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,具体包括:
通过下面方式将第一进程的名称修改为第二进程的名称:
binfmt->file=open_exec("第二进程的名称"),或,binfmt->filename="第二进程的文件路径名",其中,open_exec是内核提供的接口。
进一步地,所述将第一binfmt结构体中的指针地址初始化后返回至Linux系统,具体包括:
调用系统接口prepare_binfmt(binfmt)衔接流程,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统。
进一步地,所述进程重定向方法还包括:
若确定所述第一进程为不需要进行重定向的进程,则不经过重定向步骤直接返回-ENOEXEC。
第二方面,本发明实施例还提供了一种进程重定向装置,包括:
重定向处理模块,用于当检测到第一进程运行时,利用预先注册在系统运行解析链表最开头的第一binfmt结构体对所述第一进程进行解析,若确定所述第一进程为需要进行重定向的进程,则在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统,以使Linux系统以第二进程开始执行,其中,第二进程为第一进程需要重定向的进程。
进一步地,所述进程重定向装置还包括:
注册模块,用于通过Linux内核提供的binfmt的操作接口将第一binfmt结构体注册到系统运行解析链表的最开头。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述进程重定向方法的步骤。
第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述进程重定向方法的步骤。
由上面技术方案可知,本发明实施例提供的进程重定向方法及装置,巧妙地借助Linux系统的binfmt机制,由于本实施例预先在系统运行解析链表最开头的位置注册了第一binfmt结构体,而在Linux系统中,进程在Linux上运行时,内核会通过遍历运行解析链表的方式对其一一进行解析,因此,基于该基础,本实施例可以利用第一binfmt结构体在对待进行重定向的进程进行解析的同时对其进行重定向操作,从而使得重定向操作对外界无感知。具体来说,本发明实施例采用如下方案实现:当检测到第一进程在Linux上运行时,采用预先注册的第一binfmt结构体对所述第一进程进行解析,若确定所述第一进程为需要进行重定向的进程,则在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统,以使Linux系统以第二进程开始执行,其中,第二进程为第一进程需要重定向的进程。由此可见,本实施例非常巧妙地借助Linux系统的binfmt机制实现了第一进程至第二进程的进程重定向,整个实现过程简单方便,且对外界无感知,从而完成了进程重定向的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的进程重定向方法的流程图;
图2为本发明一实施例提供的进程重定向装置的结构示意图;
图3为本发明一实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明实施例提供的进程重定向方法的流程图。如图1所示,本发明实施例提供的进程重定向方法包括如下步骤:
步骤101:当检测到第一进程运行时,利用预先注册在系统运行解析链表最开头的第一binfmt结构体对所述第一进程进行解析。
步骤102:若确定所述第一进程为需要进行重定向的进程,则在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统,以使Linux系统以第二进程开始执行,其中,第二进程为第一进程需要重定向的进程。
在本实施例中,需要说明的是,这里的第一binfmt结构体为一个系统结构体binfmt变量,这个结构体中可以包含一个模块指针和回调函数FUN。可以理解的是,根据实际需要,这个结构体中还可以包含其他变量或参数,本实施例对此不作限定。
在本实施例中,需要说明的是,Linux系统正好存在binfmt机制,因此可以注册一个binfmt结构到系统运行解析链表的最开头(这个链表中还有其它的格式解析比如:elf,脚本的等)。由于Linux系统每加载一个执行体(可以为进程)的时候都会调用系统运行解析链表来解释加载,因此,在系统运行解析链表的最开头注册一个binfmt结构,可以使得利用注册的binfmt结构对执行体(进程)进行解释,在解释的时候可以判断当前运行的是否是要被重定向的文件(比如“/bin/chmod”),若是,即可调用open_exec函数,然后根据返回值来填充bprm结构体,主要是覆盖file、filename、interp成员。需要说明的是,覆盖后的filename即为重定向后的文件名(比如“/bin/ls”),然后调用prepare_binprm重新初始化一下bprm指针,并将binfmt结构返回给系统,系统就会以新的进程(比如“/bin/ls”)带上原来的参数运行进来。对于外界是没有任何感知的。
在本实施例中,需要说明的是,在确定第一进程是否为需要进行重定向的进程时,可以先提取第一进程的名称,然后将第一进程的名称与预设数据库中的名称进行匹配,若匹配一致,则说明第一进程为需要进行重定向的进程,否则说明第一进程为不需要进行重定向的进程。其中,所述预设数据库中存储有预先确定好的需要进行重定向的进程的名称。需要说明的是,这些预先确定好的需要进行重定向的进程一般为对安全防护要求比较高的进程。
在本实施例中,为更清晰的表达本实施例提供的进程重定向方法的内容,下面给出具体的实现过程:
S1、通过Linux内核提供的接口insert_binfmt或register_binfmt注册一个binfmt结构体A到“系统运行解析链表”中的最开头。
在本步骤中,需要说明的是,这里的binfmt结构体A是指声明了一个系统结构体binfmt变量A,这个结构体包含一个模块指针和回调函数FUN。例如,该结构体的名字可以为linux_binfmt,里面包含一个模块指针和回调函数FUN。
S2、当在Linux上运行进程时,内核会通过遍历此“系统运行解析链表”一一进行解析,首先会用步骤S1注册的结构体A来解析,即会调用到结构体A的回调函数FUN中。
S3、在函数FUN中判断当前运行的进程是否是要被重定向的进程文件,若是,则进行下一步,否则不经过重定向步骤直接返回-ENOEXEC即可。
S4、通过FUN的参数得到binfmt结构体,对结构体的成员:file,filename进行修改,分别修改成重定向后的参数。比如binfmt->file=open_exec("新重定向的文件名");binfmt->filename="新重定向文件名";其中open_exec是内核提供的接口。
S5、调用其它相关的系统接口,衔接流程比如prepare_binfmt(binfmt);然后将binfmt结构体中的指针地址初始化后返回至Linux系统。
S6、Linux系统会巧妙的自动以新重定向的进程开始执行,外界即用户态没有任何感知。
由上面技术方案可知,本发明实施例提供的进程重定向方法,巧妙地借助Linux系统的binfmt机制,由于本实施例预先在系统运行解析链表最开头的位置注册了第一binfmt结构体,而在Linux系统中,进程在Linux上运行时,内核会通过遍历运行解析链表的方式对其一一进行解析,因此,基于该基础,本实施例可以利用第一binfmt结构体在对待进行重定向的进程进行解析的同时对其进行重定向操作,从而使得重定向操作对外界无感知。具体来说,本发明实施例采用如下方案实现:当检测到第一进程在Linux上运行时,采用预先注册的第一binfmt结构体对所述第一进程进行解析,若确定所述第一进程为需要进行重定向的进程,则在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统,以使Linux系统以第二进程开始执行,其中,第二进程为第一进程需要重定向的进程。由此可见,本实施例非常巧妙地借助Linux系统的binfmt机制实现了第一进程至第二进程的进程重定向,整个实现过程简单方便,且对外界无感知,从而完成了进程重定向的目的。
进一步地,基于上述实施例的内容,在本实施例中,在利用预先注册在系统运行解析链表最开头的第一binfmt结构体对所述第一进程进行解析之前,所述进程重定向方法还包括:
通过Linux内核提供的binfmt的操作接口将第一binfmt结构体注册到系统运行解析链表的最开头。
在本实施例中,为方便操作,可以通过Linux内核提供的binfmt的操作接口将第一binfmt结构体注册到系统运行解析链表的最开头。当然,需要说明的是,本发明对此不作限定,根据需要还可以采用其他注册方式,只要能够实现将第一binfmt结构体注册到系统运行解析链表的最开头即可。
进一步地,基于上述实施例的内容,在本实施例中,所述binfmt的操作接口包括insert_binfmt接口和/或register_binfmt接口。当然,需要说明的是,本发明对此不作限定,根据需要还可以采用其他形式的binfmt的操作接口,只要能够实现将第一binfmt结构体注册到系统运行解析链表的最开头即可。
例如,可以通过Linux内核提供的接口insert_binfmt或register_binfmt将第一binfmt结构体注册到系统运行解析链表的最开头。
在本实施例中,为方便操作,可以通过Linux内核提供的接口insert_binfmt或register_binfmt将第一binfmt结构体注册到系统运行解析链表的最开头。当然,需要说明的是,本发明对此不作限定,根据需要还可以采用其他注册方式,只要能够实现将第一binfmt结构体注册到系统运行解析链表的最开头即可。
进一步地,基于上述实施例的内容,在本实施例中,所述在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,具体包括:
通过下面方式将第一进程的名称修改为第二进程的名称:
binfmt->file=open_exec("第二进程的名称"),或,binfmt->filename="第二进程的文件路径名",其中,open_exec是内核提供的接口。
在本实施例中,在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称时,可以通过两种方式实现,其中一种方式是采用binfmt->file这种处理方式实现,另外一种方式是采用binfmt->filename这种处理方式实现。当采用binfmt->filename这种处理方式实现时,可以直接获取第二进程的名称,当采用binfmt->file这种处理方式实现时,需要借助内核提供的接口open_exec,该接口open_exec返回的值即为第二进程的名称。
进一步地,基于上述实施例的内容,在本实施例中,所述将第一binfmt结构体中的指针地址初始化后返回至Linux系统,具体包括:
调用系统接口prepare_binfmt(binfmt)衔接一下流程,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统。
在本实施例中,调用系统接口prepare_binfmt(binfmt)衔接一下流程,然后将第一binfmt结构体中的指针地址初始化后返回至Linux系统,从而使得系统自动以新重定向的第二进程开始执行,外界即用户态没有任何感知。
进一步地,基于上述实施例的内容,在本实施例中,所述进程重定向方法还包括:
若确定所述第一进程为不需要进行重定向的进程,则返回
-ENOEXEC。
在本实施例中,当确定第一进程为不需要进行重定向的进程,则直接返回-ENOEXEC即可,无需进行在第一binfmt结构体中的回调函数中对第一进程的名称进行修改的过程,也即无需进行进程重定向的过程。
下面对于本实施例提供的进程重定向方法,给出两种适用的应用场景以及对应的效果,现具体说明如下:
第一种场景为:进程注入。
在本实施例中,需要说明的是,对于进程注入来说,在Linux上进行进程注入的难度很大,需要ptrace以及各平台和汇编方面的知识。当用户进程启动之后,so文件也无法做成第一时间注入模块。Linux上有preload机制应用于所有的操作系统的所有进程会带来很大的问题。因此,如果需要第一时间注入so文件到用户自己启动的进程中,则可以采用上面实施例介绍的进程重定向方法,具体处理过程为:当用户运行程序A的时候,可把程序A重定向成程序B,程序B要做的是加入preload环境变量把so文件加入进去,程序B然后运行程序A。这样程序A在第一时间启动的时候就被注入了so文件。
第二种场景为:进程参数的获取与拦截。
在本实施例中,需要说明的是,当调用程序A的时候,传入了大量的参数。在内核驱动层对参数做提取修改难度很大。这时候可以用执行重定向的方式让调用A程序的时候其实是调用为预先设置的B程序。B程序获取参数并拦截或修改之后再次运行A程序。
由上面技术方案可知,本发明实施例提供的进程重定向方法,巧妙地借助Linux系统的binfmt机制,由于本实施例预先在系统运行解析链表最开头的位置注册了第一binfmt结构体,而在Linux系统中,进程在Linux上运行时,内核会通过遍历运行解析链表的方式对其一一进行解析,因此,基于该基础,本实施例可以利用第一binfmt结构体在对待进行重定向的进程进行解析的同时对其进行重定向操作,从而使得重定向操作对外界无感知。具体来说,本发明实施例采用如下方案实现:当检测到第一进程在Linux上运行时,采用预先注册的第一binfmt结构体对所述第一进程进行解析,若确定所述第一进程为需要进行重定向的进程,则在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统,以使Linux系统以第二进程开始执行。由此可见,本实施例非常巧妙地借助Linux系统的binfmt机制实现了第一进程至第二进程的进程重定向,整个实现过程简单方便,且对外界无感知,从而完成了进程重定向的目的。
图2示出了本发明实施例提供的进程重定向装置的结构示意图。如图2所示,本发明实施例提供的进程重定向装置包括:重定向处理模块21,其中:
重定向处理模块21,用于当检测到第一进程运行时,利用预先注册在系统运行解析链表最开头的第一binfmt结构体对所述第一进程进行解析,若确定所述第一进程为需要进行重定向的进程,则在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统,以使Linux系统以第二进程开始执行,其中,第二进程为第一进程需要重定向的进程。
基于上述实施例的内容,在本实施例中,所述进程重定向装置还包括:
注册模块,用于通过Linux内核提供的binfmt的操作接口将第一binfmt结构体注册到系统运行解析链表的最开头。
基于上述实施例的内容,在本实施例中,所述注册模块,用于通过Linux内核提供的接口insert_binfmt或register_binfmt将第一binfmt结构体注册到系统运行解析链表的最开头。
基于上述实施例的内容,在本实施例中,所述重定向处理模块在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称时,具体用于:
通过下面方式将第一进程的名称修改为第二进程的名称:
binfmt->file=open_exec("第二进程的名称"),或,binfmt->filename="第二进程的文件路径名",其中,open_exec是内核提供的接口。
基于上述实施例的内容,在本实施例中,所述重定向处理模块在将第一binfmt结构体中的指针地址初始化后返回至Linux系统时,具体用于:
调用系统接口prepare_binfmt(binfmt)衔接流程,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统。
基于上述实施例的内容,在本实施例中,所述重定向处理模块,还用于:若确定所述第一进程为不需要进行重定向的进程,则返回-ENOEXEC。
由于本发明实施例提供的进程重定向装置,可以用于执行上述实施例所述的进程重定向方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。
基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图3,所述电子设备具体包括如下内容:处理器301、存储器302、通信接口303和通信总线304;
其中,所述处理器301、存储器302、通信接口303通过所述通信总线304完成相互间的通信;
所述处理器301用于调用所述存储器302中的计算机程序,所述处理器执行所述计算机程序时实现上述进程重定向方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:当检测到第一进程运行时,利用预先注册在系统运行解析链表最开头的第一binfmt结构体对所述第一进程进行解析,若确定所述第一进程为需要进行重定向的进程,则在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统,以使Linux系统以第二进程开始执行,其中,第二进程为第一进程需要重定向的进程。
可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。
基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述进程重定向方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:当检测到第一进程运行时,利用预先注册在系统运行解析链表最开头的第一binfmt结构体对所述第一进程进行解析,若确定所述第一进程为需要进行重定向的进程,则在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统,以使Linux系统以第二进程开始执行,其中,第二进程为第一进程需要重定向的进程。
可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的进程重定向方法。
此外,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
此外,在本发明中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (9)

1.一种进程重定向方法,其特征在于,包括:
当检测到第一进程运行时,利用预先注册在系统运行解析链表最开头的第一binfmt结构体对所述第一进程进行解析,若确定所述第一进程为需要进行重定向的进程,则在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统,以使Linux系统以第二进程开始执行,其中,第二进程为第一进程需要重定向的进程,其中,所述将第一binfmt结构体中的指针地址初始化后返回至Linux系统,具体包括:
调用系统接口prepare_binfmt(binfmt)衔接流程,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统。
2.根据权利要求1所述的进程重定向方法,其特征在于,在利用预先注册在系统运行解析链表最开头的第一binfmt结构体对所述第一进程进行解析之前,所述进程重定向方法还包括:
通过Linux内核提供的binfmt的操作接口将第一binfmt结构体注册到系统运行解析链表的最开头。
3.根据权利要求2所述的进程重定向方法,其特征在于,所述binfmt的操作接口包括insert_binfmt接口和/或register_binfmt接口。
4.根据权利要求1所述的进程重定向方法,其特征在于,所述在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,具体包括:
通过下面方式将第一进程的名称修改为第二进程的名称:
binfmt->file=open_exec("第二进程的名称"),或,binfmt->filename="第二进程的文件路径名",其中,open_exec是内核提供的接口。
5.根据权利要求1所述的进程重定向方法,其特征在于,所述进程重定向方法还包括:
若确定所述第一进程为不需要进行重定向的进程,则不经过重定向步骤直接返回-ENOEXEC。
6.一种进程重定向装置,其特征在于,包括:
重定向处理模块,用于当检测到第一进程运行时,利用预先注册在系统运行解析链表最开头的第一binfmt结构体对所述第一进程进行解析,若确定所述第一进程为需要进行重定向的进程,则在第一binfmt结构体中的回调函数中将第一进程的名称修改为第二进程的名称,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统,以使Linux系统以第二进程开始执行,其中,第二进程为第一进程需要重定向的进程,其中,所述重定向处理模块在将第一binfmt结构体中的指针地址初始化后返回至Linux系统时,具体用于:
调用系统接口prepare_binfmt(binfmt)衔接流程,并将第一binfmt结构体中的指针地址初始化后返回至Linux系统。
7.根据权利要求6所述的进程重定向装置,其特征在于,所述进程重定向装置还包括:
注册模块,用于通过Linux内核提供的binfmt的操作接口将第一binfmt结构体注册到系统运行解析链表的最开头。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述进程重定向方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至5任一项所述进程重定向方法的步骤。
CN202010033626.8A 2020-01-13 2020-01-13 进程重定向方法及装置 Active CN113110893B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010033626.8A CN113110893B (zh) 2020-01-13 2020-01-13 进程重定向方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010033626.8A CN113110893B (zh) 2020-01-13 2020-01-13 进程重定向方法及装置

Publications (2)

Publication Number Publication Date
CN113110893A CN113110893A (zh) 2021-07-13
CN113110893B true CN113110893B (zh) 2024-04-26

Family

ID=76708827

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010033626.8A Active CN113110893B (zh) 2020-01-13 2020-01-13 进程重定向方法及装置

Country Status (1)

Country Link
CN (1) CN113110893B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101206692A (zh) * 2006-12-20 2008-06-25 联想(北京)有限公司 检测进程的方法及设备
CN101553769A (zh) * 2005-10-11 2009-10-07 努雅公司 用于跟踪并监控计算机应用的系统和方法
CN105653906A (zh) * 2015-12-28 2016-06-08 中国人民解放军信息工程大学 基于地址随机的反内核挂钩方法
CN108170503A (zh) * 2018-01-24 2018-06-15 腾讯科技(深圳)有限公司 一种跨系统运行安卓应用的方法、终端及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678747B2 (en) * 2011-02-08 2017-06-13 Openspan, Inc. Code injection and code interception in an operating system with multiple subsystem environments
US10073687B2 (en) * 2016-08-25 2018-09-11 American Megatrends, Inc. System and method for cross-building and maximizing performance of non-native applications using host resources

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101553769A (zh) * 2005-10-11 2009-10-07 努雅公司 用于跟踪并监控计算机应用的系统和方法
CN101206692A (zh) * 2006-12-20 2008-06-25 联想(北京)有限公司 检测进程的方法及设备
CN105653906A (zh) * 2015-12-28 2016-06-08 中国人民解放军信息工程大学 基于地址随机的反内核挂钩方法
CN108170503A (zh) * 2018-01-24 2018-06-15 腾讯科技(深圳)有限公司 一种跨系统运行安卓应用的方法、终端及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于进程生命周期的虚拟机隐藏进程检测技术;陈蒙蒙;陈兴蜀;金鑫;;计算机应用(第S2期);全文 *

Also Published As

Publication number Publication date
CN113110893A (zh) 2021-07-13

Similar Documents

Publication Publication Date Title
CN106897609B (zh) 一种对动态加载的应用程序进行监控的方法及装置
CN110941528B (zh) 一种基于故障的日志埋点设置方法、装置及系统
KR101793306B1 (ko) 가상 애플리케이션 확장 포인트
CN107967139B (zh) 游戏的热更新方法及装置
US20160142437A1 (en) Method and system for preventing injection-type attacks in a web based operating system
CN106202100B (zh) 页面的加载方法及装置
CN107835228B (zh) 一种基于动态广义路由的指令处理方法及装置
US20240143739A1 (en) Intelligent obfuscation of mobile applications
CN111679852B (zh) 一种冲突依赖库的检测方法及装置
CN113391874A (zh) 一种虚拟机检测对抗方法、装置、电子设备及存储介质
CN108108169B (zh) 一种基于Jenkins的多分支的构建方法及系统
Kim et al. {FuzzOrigin}: Detecting {UXSS} vulnerabilities in browsers through origin fuzzing
CN108897588B (zh) 一种用于模块间通信的路由方法和路由装置
CN113110893B (zh) 进程重定向方法及装置
CN107273745B (zh) 一种动态链接库形式的恶意代码的动态分析方法
CN111966630B (zh) 文件类型的检测方法、装置、设备和介质
CN110659022B (zh) 一种基于Java自动调用Python脚本的方法
CN108089887B (zh) 一种新增页面的启动控制方法及装置
JP5188421B2 (ja) ソースコード解析方法およびソースコード解析支援システム
CN115859280A (zh) 内存马的检测方法、装置、设备及存储介质
CN115048082A (zh) 微前端系统构建方法、装置、服务器及可读存储介质
CN114417347A (zh) 应用程序的漏洞检测方法、装置、设备、存储介质和程序
CN108520179B (zh) 一种webview漏洞的处理方法和装置
CN111666216A (zh) 一种智能合约分析方法及装置
Fayó Advanced SQL injection in Oracle databases

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Country or region after: China

Address after: Room 332, 3 / F, Building 102, 28 xinjiekouwei street, Xicheng District, Beijing 100088

Applicant after: Qianxin Technology Group Co.,Ltd.

Applicant after: Qianxin Wangshen information technology (Beijing) Co.,Ltd.

Address before: Room 332, 3 / F, Building 102, 28 xinjiekouwei street, Xicheng District, Beijing 100088

Applicant before: Qianxin Technology Group Co.,Ltd.

Country or region before: China

Applicant before: LEGENDSEC INFORMATION TECHNOLOGY (BEIJING) Inc.

GR01 Patent grant
GR01 Patent grant