[go: up one dir, main page]

CN101617322B - 信息处理装置、信息处理方法和程序 - Google Patents

信息处理装置、信息处理方法和程序 Download PDF

Info

Publication number
CN101617322B
CN101617322B CN2008800059436A CN200880005943A CN101617322B CN 101617322 B CN101617322 B CN 101617322B CN 2008800059436 A CN2008800059436 A CN 2008800059436A CN 200880005943 A CN200880005943 A CN 200880005943A CN 101617322 B CN101617322 B CN 101617322B
Authority
CN
China
Prior art keywords
signal handler
signal
handler
property value
identifier
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.)
Expired - Fee Related
Application number
CN2008800059436A
Other languages
English (en)
Other versions
CN101617322A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of CN101617322A publication Critical patent/CN101617322A/zh
Application granted granted Critical
Publication of CN101617322B publication Critical patent/CN101617322B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2113Multi-level security, e.g. mandatory access control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

防止信号处理程序的未预期处理中断进程的正常执行。在执行位于进程的正常执行可能被信号处理程序的未预期处理所中断的函数1125中的命令1121时,修改进程的信号处理程序表并且在函数1125的处理期间执行的信号处理程序变成了信号处理程序钩子函数。当生成信号并且执行信号处理程序钩子函数时,将安全级别改变成不能执行未预期处理的级别,在此之后执行原始信号处理程序,从而防止了信号处理程序的未预期处理。另外,在函数1125终止后,执行第二特定命令1122,以将信号处理程序表返回到原始状态。

Description

信息处理装置、信息处理方法和程序
技术领域
本发明涉及具有改变应用进程的安全级别的功能的信息处理装置,更具体而言,涉及在执行信号处理程序(signal handler)时改变应用进程的安全级别的方法和装置。
背景技术
近年来,以确保信息处理装置的安全性为目的而开发了诸如SE Linux之类的使得能够针对每个进程设定安全级别的安全OS。另外,如专利文献1中所记载的,应用进程的安全级别在进程的执行期间被动态改变。这里,安全级别是进程属性之一,是一种用来判定是否允许该进程执行指令或对资源的访问控制的属性。
该信息处理装置还被设计成这样的:当在进程的执行期间生成某个信号时,则执行由该进程注册的信号处理程序。这里的信号是进程间通信,并且当用户或其他进程引起特定的事件时,与所生成事件相符的一种信号被发送到所关注的进程。信号处理程序是由每个进程准备的例程,并且相关的信号处理程序根据接收到的信号的种类被执行。当进程未能定义与接收到的信号相关的信号处理程序时,OS则执行预先定义的进程。作为一对的信号种类和信号处理程序的集合将被称为信号处理程序表,该信号处理程序表是针对每个进程定义的。当信号被生成时,OS参考信号发送目的地进程的信号处理程序表以开始执行与所发送信号的种类相配对的信号处理程序。此时,对迄今为止执行的进程的处理被临时中断。
专利文献1:日本专利早期公开No.2001-249848。
由于使得能够针对每个进程设定安全级别的OS消除了轮换的可能性,因此当进程执行可靠性高的函数时,提高进程的安全级别就使得能够在该函数内执行特权指令(privileged instruction)。相反,当进程执行可靠性低的例程时,通过改变进程的安全级别,可以进行诸如防止未经授权的处理之类的控制。
然而,当在可靠性高的函数的执行期间,某个信号被生成从而执行在进程中预先定义的信号处理程序时,该信号处理程序是在不改变安全级别的情况下被执行的。因此,函数的正常执行可能因为对信号处理程序的非预期处理而受到阻碍,使得无法确保原来的处理并且在一些情况下引起未经授权的处理。其原因在于,取决于函数的被信号中断的部分和在信号处理程序中执行的特权指令的种类,有可能该函数中定义的处理将不会根据定义被执行。
为了防止这种未经授权的处理,必须在改变进程的安全级别的情况下执行信号处理程序。然而,上述的安全OS不具有检测进程开始执行信号处理程序的点和其结束执行的点并且改变进程的安全级别的功能。因此,当信号处理程序在执行中时,无法专门改变进程的安全级别。
至于要在改变安全级别的情况下执行的信号处理程序,限制为将由下述信号执行的信号处理程序是方便的:该信号是在受到信号处理程序的未经授权的处理的影响的区间被处理的同时被接收到的。其原因在于,由于如果所有信号处理程序都是在其安全级别被改变的情况下被执行的,则这些信号处理程序的处理可能不会始终被执行,因此会希望使在安全级别被改变的情况下的信号处理程序的执行达到最低限度。然而,不存在这样的机制,即在执行信号处理程序时,当执行信号处理程序的信号被接收到时,判定进程的哪个区间正被信号处理程序所处理。因此,无法在特定的信号处理程序被执行时专门改变进程的安全级别。
(本发明的目的)
本发明的一个目的是使得在信号处理程序被执行时进程的安全级别能够被改变。
本发明的另一个目的是检测在某个进程正在执行特定处理区间时接收到的信号将要执行的信号处理程序,并且在该进程的安全级别被改变的情况下执行检测到的信号处理程序。
发明内容
根据本发明的一个示例性方面,一种在OS的控制下执行进程的信息处理装置,包括:存储装置,该存储装置容纳着:用于在正常执行可能受到信号处理程序的非预期处理的阻碍
的处理区间的执行之前执行第一特定指令并且在该处理区间的执行之后执行第二特定指令的函数,用于执行第三特定指令、执行在由该第三特定指令获得的地址处开始的信号处理程序、并且在该信号处理程序的执行之后执行第四特定指令的信号处理程序钩子函数(signal handler hookfunction),信号处理程序,进程的属性值,进程的信号处理程序表,以及用于保存(save)进程的属性值和信号处理程序表这一对的信号处理程序存储单元;
信号处理程序改变单元,用于在进程执行第一特定指令时,将进程的标识符和信号处理程序表这一对保存到信号处理程序存储单元中,并将进程的信号处理程序表处设定的信号处理程序改变成信号处理程序钩子函数;
信号处理程序返回单元,用于在进程执行第二特定指令时,将进程的信号处理程序表处设定的信号处理程序钩子函数返回到被保存在信号处理程序存储单元中的、信号处理程序钩子函数的设定之前的信号处理程序;
信号处理程序获得单元,用于在进程执行第三特定指令时,参考信号处理程序存储单元,获得与进程的标识符和进程所接收到的信号的种类相配对的信号处理程序;
安全级别改变单元,用于在信号处理程序获得单元获取信号处理程序之后改变进程的属性值;以及
安全级别返回单元,用于在进程执行第四特定指令时,将进程的属性值改变成改变之前的属性值。
根据本发明的另一个示例性方面,一种在OS的控制下执行进程的信息处理装置,包括:
存储装置,该存储装置容纳着:用于在正常执行可能受到信号处理程序的非预期处理的阻碍的处理区间的执行之前执行第一特定指令并且在该处理区间的执行之后执行第二特定指令的函数,用于执行第三特定指令、执行在由该第三特定指令获得的地址处开始的信号处理程序、并且在该信号处理程序的执行之后执行第四特定指令的信号处理程序钩子函数,信号处理程序,进程的属性值,由多个进程共享的信号处理程序表,以及用于保存包括进程的标识符的进程标识符组和信号处理程序表这一对的信号处理程序存储单元;
信号处理程序改变单元,用于在共享信号处理程序表的多个进程当中的特定进程执行第一特定指令时,在信号处理程序存储单元中没有存储包括其他进程的标识符的进程标识符组的情况下,在将包括特定进程的标识符的进程标识符组和信号处理程序表这一对保存到信号处理程序存储单元中之后,将信号处理程序表处设定的信号处理程序改变成信号处理程序钩子函数,并且在信号处理程序存储单元中存储有包括其他进程的标识符的进程标识符组的情况下,将该特定进程的标识符添加到包括其他进程的标识符的进程标识符组,以及将信号处理程序表处设定的信号处理程序添加到信号处理程序存储单元中的与添加后的进程标识符组相配对的信号处理程序表,然后将信号处理程序表处设定的信号处理程序改变成信号处理程序钩子函数;
信号处理程序返回单元,用于在该特定进程执行第二特定指令时,在信号处理程序存储单元中没有存储包括其他进程的标识符的进程标识符组的情况下,在将该特定进程的信号处理程序表中被设定了信号处理程序钩子函数的信号处理程序返回到保存在信号处理程序存储单元中的、在信号处理程序钩子函数的设定之前的信号处理程序之后,从信号处理程序存储单元中删除包括该特定进程的标识符的进程标识符组和信号处理程序表这一对的数据,并且在信号处理程序存储单元中存储有包括其他进程的标识符的进程标识符组的情况下,将该特定进程的信号处理程序表处设定的信号处理程序添加到信号处理程序存储单元中的与该进程标识符组相配对的信号处理程序表,并从进程标识符组中删除该特定进程的标识符;
信号处理程序获得单元,用于在进程执行第三特定指令时,参考信号处理程序存储单元,获得与进程的标识符和进程所接收到的信号的种类相配对的信号处理程序;
安全级别改变单元,用于在信号处理程序获得单元获取信号处理程序之后改变进程的属性值;以及
安全级别返回单元,用于在进程执行第四特定指令时,将进程的属性值改变成改变之前的属性值。
根据本发明的另一个示例性方面,一种由信息处理装置在OS的控制下执行进程的信息处理方法,其中,
该信息处理装置在存储装置中容纳着:用于在正常执行可能受到信号处理程序的非预期处理的阻碍的处理区间的执行之前执行第一特定指令并且在该处理区间的执行之后立即执行第二特定指令的函数,用于执行第三特定指令、执行在由该第三特定指令获得的地址处开始的信号处理程序、并且在该信号处理程序的执行之后执行第四特定指令的信号处理程序钩子函数,信号处理程序,进程的属性值,进程的信号处理程序表,以及用于保存进程的属性值和信号处理程序表这一对的信号处理程序存储单元,该方法包括:
信号处理程序改变步骤,在进程执行第一特定指令时,将进程的标识符和信号处理程序表这一对保存到信号处理程序存储单元中,并将进程的信号处理程序表处设定的信号处理程序改变成信号处理程序钩子函数;
信号处理步骤,参考信号处理程序表确定与在进程的执行期间接收到的信号相对应的信号处理程序,并且当所确定的信号处理程序是信号处理程序钩子函数时,调用信号处理程序钩子函数;
信号处理程序获得步骤,在进程执行信号处理程序钩子函数的第三特定指令时,参考信号处理程序存储单元,获得与进程的标识符和在进程处接收到的信号的种类相配对的信号处理程序;
安全级别改变步骤,在在信号处理程序获得步骤中获取信号处理程序之后改变进程的属性值;
安全级别返回步骤,当进程在在信号处理程序钩子函数中执行在信号处理程序获得步骤中获得的信号处理程序之后执行第四特定指令时,将进程的属性值改变成改变之前的属性值;以及
信号处理程序返回步骤,在进程执行函数的第二特定指令时,将进程的信号处理程序表处设定的信号处理程序钩子函数返回到被保存在信号处理程序存储单元中的、信号处理程序钩子函数的设定之前的信号处理程序。
根据本发明的另一个示例性方面,一种由信息处理装置在OS的控制下执行进程的信息处理方法,其中
该信息处理装置在存储装置中容纳着:用于在正常执行可能受到信号处理程序的非预期处理的阻碍的处理区间的执行之前执行第一特定指令并且在该处理区间的执行之后立即执行第二特定指令的函数,用于执行第三特定指令、执行在由该第三特定指令获得的地址处开始的信号处理程序、并且在该信号处理程序的执行之后执行第四特定指令的信号处理程序钩子函数,信号处理程序,进程的属性值,由多个进程共享的信号处理程序表,以及用于保存包括进程的标识符的进程标识符组和信号处理程序表这一对的信号处理程序存储单元;该方法包括:
信号处理程序改变步骤,在共享信号处理程序表的多个进程当中的特定进程执行第一特定指令时,在信号处理程序存储单元中没有存储包括其他进程的标识符的进程标识符组的情况下,在将包括该特定进程的标识符的进程标识符组和信号处理程序表这一对保存到信号处理程序存储单元中之后,将信号处理程序表处设定的信号处理程序改变成信号处理程序钩子函数,并且在信号处理程序存储单元中存储有包括其他进程的标识符的进程标识符组的情况下,将该特定进程的标识符添加到包括其他进程的标识符的进程标识符组,以及将信号处理程序表处设定的信号处理程序添加到信号处理程序存储单元中的与添加后的进程标识符组相配对的信号处理程序表,然后将信号处理程序表处设定的信号处理程序改变成信号处理程序钩子函数;
信号处理步骤,参考信号处理程序表确定与在进程的执行期间接收到的信号相对应的信号处理程序,并且当所确定的信号处理程序是信号处理程序钩子函数时,调用信号处理程序钩子函数;
信号处理程序获得步骤,在进程执行信号处理程序钩子函数的第三特定指令时,参考信号处理程序存储单元,获得与进程的标识符和进程所接收到的信号的种类相配对的信号处理程序;
安全级别改变步骤,在在信号处理程序获得步骤中获取信号处理程序之后改变进程的属性值;以及
信号处理程序返回步骤,在特定进程执行第二特定指令时,在信号处理程序存储单元中没有存储包括其他进程的标识符的进程标识符组的情况下,在将第一进程的信号处理程序表中被设定了信号处理程序钩子函数的信号处理程序返回到保存在信号处理程序存储单元中的、在信号处理程序钩子函数的设定之前的信号处理程序之后,从信号处理程序存储单元中删除包括第一进程的标识符的进程标识符组和信号处理程序表这一对的数据,并且在信号处理程序存储单元中存储有包括第二进程的标识符的进程标识符组的情况下,将该特定进程的信号处理程序表处设定的信号处理程序添加到信号处理程序存储单元中的与进程标识符组相配对的信号处理程序表,并从进程标识符组中删除特定进程的标识符。
根据本发明的另一个示例性方面,一种在信息处理装置中实现的程序,该信息处理装置在OS的控制下执行进程,其中,
该信息处理装置包括存储装置,该存储装置容纳着:用于在正常执行可能受到信号处理程序的非预期处理的阻碍的处理区间的执行之前执行第一特定指令并且在该处理区间的执行之后立即执行第二特定指令的函数,用于执行第三特定指令、执行在由该第三特定指令获得的地址处开始的信号处理程序、并且在该信号处理程序的执行之后执行第四特定指令的信号处理程序钩子函数,信号处理程序,进程的属性值,进程的信号处理程序表,以及用于保存进程的属性值和信号处理程序表这一对的信号处理程序存储单元,其中
该程序使得该信息处理装置执行以下处理:
信号处理程序改变处理,在进程执行第一特定指令时,将进程的标识符和信号处理程序表这一对保存到信号处理程序存储单元中,并将进程的信号处理程序表处设定的信号处理程序改变成信号处理程序钩子函数;
信号处理程序返回处理,在进程执行第二特定指令时,将进程的信号处理程序表处设定的信号处理程序钩子函数返回到被保存在信号处理程序存储单元中的、信号处理程序钩子函数的设定之前的信号处理程序;
信号处理程序获得处理,在进程执行第三特定指令时,参考信号处理程序存储单元,获得与进程的标识符和进程所接收到的信号的种类相配对的信号处理程序;
安全级别改变处理,在通过信号处理程序获得处理获取信号处理程序之后改变进程的属性值;以及
安全级别返回处理,在进程执行第四特定指令时,将进程的属性值改变成改变之前的属性值。
根据本发明的另一个示例性方面,一种在信息处理装置中实现的程序,该信息处理装置在OS的控制下执行进程,其中
该信息处理装置包括存储装置,该存储装置容纳着:用于在正常执行可能受到信号处理程序的非预期处理的阻碍的处理区间的执行之前执行第一特定指令并且在该处理区间的执行之后立即执行第二特定指令的函数,用于执行第三特定指令、执行在由该第三特定指令获得的地址处开始的信号处理程序、并且在该信号处理程序的执行之后执行第四特定指令的信号处理程序钩子函数,信号处理程序,进程的属性值,由多个进程共享的信号处理程序表,以及用于保存包括进程的标识符的进程标识符组和信号处理程序表这一对的信号处理程序存储单元,其中
该程序使得该信息处理装置执行以下步骤:
信号处理程序改变处理,在共享信号处理程序表的多个进程当中的特定进程执行第一特定指令时,在信号处理程序存储单元中没有存储包括其他进程的标识符的进程标识符组的情况下,在将包括特定进程的标识符的进程标识符组和信号处理程序表这一对保存到信号处理程序存储单元中之后,将信号处理程序表处设定的信号处理程序改变成信号处理程序钩子函数,并且在信号处理程序存储单元中存储有包括其他进程的标识符的进程标识符组的情况下,将该特定进程的标识符添加到包括其他进程的标识符的进程标识符组,以及将信号处理程序表处设定的信号处理程序添加到信号处理程序存储单元中的与添加后的进程标识符组相配对的信号处理程序表,然后将信号处理程序表处设定的信号处理程序改变成信号处理程序钩子函数;
信号处理程序返回处理,在特定进程执行第二特定指令时,在信号处理程序存储单元中没有存储包括其他进程的标识符的进程标识符组的情况下,在将该特定进程的信号处理程序表中被设定了信号处理程序钩子函数的信号处理程序返回到保存在信号处理程序存储单元中的、在信号处理程序钩子函数的设定之前的信号处理程序之后,从信号处理程序存储单元中删除包括特定进程的标识符的进程标识符组和信号处理程序表这一对的数据,并且在信号处理程序存储单元中存储有包括其他进程的标识符的进程标识符组的情况下,将该特定进程的信号处理程序表处设定的信号处理程序添加到信号处理程序存储单元中的与该进程标识符组相配对的信号处理程序表,并从进程标识符组中删除该特定进程的标识符。
信号处理程序获得处理,在进程执行第三特定指令时,参考信号处理程序存储单元,获得与进程的标识符和进程所接收到的信号的种类相配对的信号处理程序;
安全级别改变处理,在通过信号处理程序获得处理获取信号处理程序之后改变进程的属性值;以及
安全级别返回处理,在进程执行第四特定指令时将进程的属性值改变成改变之前的属性值。
第一个效果是防止信号处理程序的未预期处理阻碍进程的正常执行。
其原因在于,通过由第一特定指令调用的信号处理程序改变单元,进程的信号处理程序被改变成信号处理程序钩子函数,并且通过由第二特定指令调用的信号处理程序返回单元,被改变成信号处理程序钩子函数的信号处理程序被返回到先前状态,从而只有在从执行第一特定指令到执行第二特定指令的时段期间执行的信号处理程序变成信号处理程序钩子函数,并且在此时段的处理期间执行的信号处理程序将作为尚待信号处理程序改变单元改变成信号处理程序钩子函数的信号处理程序被执行,其中进程的属性值被信号处理程序钩子函数中的第三特定函数所调用的安全级别改变单元所改变,并且禁止了诸如阻止进程的正常执行的指令和资源访问。
第二个效果是,为了实现本发明,不必改变在从生成信号到OS执行信号发送目的地的信号处理程序之间的时段中要执行的处理。
其原因在于,通过由第一特定指令调用的信号处理程序改变单元,进程的信号处理程序被改变成信号处理程序钩子函数,并且通过由信号处理程序钩子函数中的第三特定指令调用的安全级别改变单元,信号处理程序的执行被检测以改变进程的属性值。
附图说明
图1示出根据本发明的信息处理装置的硬件结构示例的框图;
图2是本发明的第一实现模式的框图;
图3是示出本发明第一实现模式中的信号处理程序改变单元的处理示例的流程图;
图4是示出本发明第一实现模式中的信号处理程序获得单元的处理示例的流程图;
图5是示出本发明第一实现模式中的安全级别改变单元的处理示例的流程图;
图6是示出本发明第一实现模式中的安全级别返回单元的处理示例的流程图;
图7是示出本发明第一实现模式中的信号处理程序返回单元的处理示例的流程图;
图8是本发明的第二实现模式的框图;
图9是本发明第二实现模式中的安全级别改变单元的处理示例的流程图;
图10是本发明的第三实现模式的框图;
图11是示出本发明第三实现模式中的信号处理程序获得单元的处理示例的流程图;
图12是示出本发明第三实现模式中的安全级别改变单元的处理示例的流程图;
图13是本发明的第四实现模式的框图;
图14是示出本发明第四实现模式中的信号处理程序改变单元的处理示例的流程图;
图15是示出本发明第四实现模式中的信号处理程序改变单元的处理示例的流程图;
图16是示出本发明第四实现模式中的信号处理程序改变单元的处理示例的流程图;
图17是示出本发明第四实现模式中的信号处理程序获得单元的处理示例的流程图;
图18是示出本发明第四实现模式中的信号处理程序返回单元的处理示例的流程图;
图19是示出本发明第四实现模式中的信号处理程序返回单元的处理示例的流程图;
图20是示出本发明第四实现模式中的信号处理程序返回单元的处理示例的流程图;
图21是本发明的第一示例性实施例的框图;
图22是用于说明本发明第一示例性实施例的信号处理程序表和默认信号处理程序表的图;
图23是本发明的第二示例性实施例的框图;
图24是用于说明本发明第二示例性实施例的信号处理程序表和默认信号处理程序表的图;
图25是本发明的第三示例性实施例的框图;
图26是用于说明本发明第三示例性实施例的信号处理程序表和默认信号处理程序表的图;
图27是本发明的第四示例性实施例的框图;
图28是用于说明本发明第四示例性实施例的信号处理程序表的图;
图29是用于说明本发明第四示例性实施例的默认信号处理程序表的图;并且
图30是示出本发明第四示例性实施例中的进程的操作序列的图。
具体实施方式
接下来,将参考附图详细描述本发明的最佳实现模式。
(根据本发明的信息处理装置的硬件结构的示例)
参考图1,根据本发明的信息处理装置的硬件结构的一个示例包括CPU 1、ROM 2、RAM 3、显示单元4、输入操作单元5、文件系统6以及将这些组件连接在一起的总线7。ROM 2是只读存储器,其存储将被CPU1执行的操作系统(OS)、库函数和固定数据。RAM 3是可读且可写存储器,其临时存储将被CPU 1执行的应用进程和可变数据。显示单元4由LCD等等形成,其显示应用屏幕等等。输入操作单元5由键盘等等形成,其从用户接收数据或指令输入。文件系统6由硬盘或SD卡形成,其存储应用程序或各种数据。具有这种硬件结构的信息处理装置的示例包括常见计算机,例如个人计算机、游戏终端和蜂窝电话。
(第一实现模式)
参考图2,本发明的第一实现模式包括存储装置1100、OS 1110和进程1120。
存储装置1100存储指示进程1120的安全级别的属性值1101、信号值1102以及信号处理程序表1103。该装置还具有作为信号处理程序表1103的保存区域的信号处理程序存储单元1104以及作为属性值1101的保存区域的安全级别存储单元1105。
信号处理程序存储单元1104将进程的标识符和信号处理程序表1103作为一对来进行存储。为了区分信号处理程序存储单元1104中保存的信号处理程序表1103和尚未保存的信号处理程序表1103,将把前者称为默认信号处理程序表。
安全级别存储单元1105将进程的标识符和进程的属性值作为一对来进行存储。
进程1120包括函数1125、信号处理程序钩子函数1126以及信号处理程序1127。
进程1120的函数1125是一个不可能变更的很可靠的函数,其具有执行得到保证的部分1128。函数1125还具有插入在紧挨执行得到保证的部分1128的执行之前的部分的第一特定指令1121,以及插入在紧接执行得到保证的部分1128的执行之后的部分的第二特定指令1122。
信号处理程序钩子函数1126具有插入在紧接其执行开始之后的部分的第三特定指令1123,以及插入在紧挨其执行结束之前的部分的第四特定指令1124。插入在第三特定指令1123和第四特定指令1124之间的区间中的还有指令1129,用于执行通过执行第三特定指令1123而获得的地址的信号处理程序1127。
信号处理程序1127包括特权指令1130。
OS 1110例如是能够针对每个进程设定安全级别的安全OS。
OS 1110例如是能够针对每个进程设定安全级别的安全OS。OS 1110管理进程1120的执行和进程1120的属性值1101。属性值1101是用来判定是否允许进程执行特权指令或对资源控制的访问的属性值。作为进程间通信功能提供了管理信号并且在对进程1120的信号1131被生成时调用信号处理单元1116的功能。还提供了利用第一特定指令1121调用信号处理程序改变单元1111的功能、利用第二特定指令1122调用信号处理程序返回单元1112的功能、利用第三特定指令1123调用信号处理程序获得单元1113的功能、利用第四特定指令1124调用安全级别返回单元1115的功能、以及利用特权指令1130调用特权指令执行控制单元1117的功能。还提供了利用插入在信号处理程序获得单元1113中的指令1118来调用安全级别改变单元1114的功能。
信号处理程序改变单元1111在进程1120的函数1125执行第一特定指令1121时被调用,其具有下述功能:将进程1120的标识符和信号处理程序表1103作为一对保存到信号处理程序存储单元1104中,以把在前信号处理程序表1103处设定的信号处理程序改变成信号处理程序钩子函数1126。
信号处理单元1116具有下述功能:参考其中生成了信号1131的进程1120的信号处理程序表1103,以执行与所生成的信号1131相对应地设定的函数(这是信号处理程序1127或信号处理程序钩子函数1126)。在执行函数时,所生成的信号1131的值被传递给该函数。
信号处理程序获得单元1113是在进程1120接收到信号1131后执行的信号处理程序钩子函数1126中以接收到的信号1131的值作为参数(argument)来执行的第三特定指令1123所调用的,其具有下述功能:从信号处理程序存储单元1104中与进程1120的标识符配对的默认信号处理程序表中获得与信号1131相对应的信号处理程序,利用指令1118调用安全级别改变单元1114,并且在安全级别改变单元1114的处理完成之后,将所获得的信号处理程序传递给信号处理程序钩子函数1126。
安全级别改变单元1114是由信号处理程序获得单元1113中的指令1118调用的,其具有下述功能:在将进程1120的标识符和属性值1101作为一对保存到安全级别存储单元1105之后,改变进程1120的前属性值1101。
安全级别返回单元1115是由信号处理程序钩子函数的第四特定指令1124调用的,其具有下述功能:将进程1120的属性值1101改变成安全级别存储单元1105中保存的与进程1120的标识符相配对的属性值,删除安全级别存储单元1105中存储的进程1120的标识符和属性值的对。
信号处理程序返回单元1112是在进程1120的函数1125执行第二特定指令1122时被调用的,其具有下述功能:把被设定为进程1120的信号处理程序表1103处的信号处理程序的信号处理程序钩子函数1126返回到在要与信号处理程序存储单元1104中保存的进程1120的标识符配对的默认信号处理程序表处设定的信号处理程序,删除信号处理程序存储单元1104中保存的进程1120的标识符和默认信号处理程序表的对。
特权指令执行控制单元1117是在进程1120执行特权指令1130时被调用的,其具有下述功能:基于进程1120的属性值1101来控制是否执行特权指令1130。
接下来,将详细描述本实现模式的整体操作。
当进程1120调用函数1125时,布置在函数1125处的第一特定指令1121被执行以调用信号处理程序改变单元1111。
参考图3,信号处理程序改变单元1111首先将与进程1120的标识符配对的信号处理程序表1103作为默认信号处理程序表存储(保存)到信号处理程序存储单元1104中(步骤A1)。接下来,信号处理程序改变单元1111将信号搜索号码i设定为初始值0(步骤A2)。接下来,参考进程1120的信号处理程序表1103中与信号值为i的信号相对应地设定的信号处理程序(步骤A3),当信号处理程序是由进程1120设定的信号处理程序时(步骤A4中的“是”),将信号处理程序钩子函数1126设定为与信号值为i的信号相对应的信号处理程序(步骤A5)。然后,将信号搜索号码i加1(步骤A6)。当进程1120的信号处理程序没有被设定为对应于信号值为i的信号时(步骤A4处的“否”),跳过步骤A5,并将信号搜索号码i加1(步骤A6)。
接下来,当更新后的信号搜索号码i是大于OS 1110所管理的信号号码的最大值S的值时(步骤A7处的“是”),信号处理程序改变单元1111结束信号处理程序改变处理。结果,第一特定指令1121的执行结束,以恢复进程1120的函数1125的处理。另一方面,当更新后的信号搜索号码i是等于或小于S的值时(步骤A7处的“否”),返回到步骤A3,以重复与上述处理相同的处理。
接下来,假定在第一特定指令1121的执行完成之后,执行函数1125的进程1120接收到信号1131。于是,函数1125的执行被OS 1110所中断,以执行信号处理单元1116。信号处理单元1116从进程1120的信号处理程序表1103中取出与信号1131的值相对应的信号处理程序,并且将控制转移给该信号处理程序。在此情况下,由于信号处理程序钩子函数1126是与进程1120的信号处理程序表1103中的信号1131相对应地注册的,所以信号处理程序钩子函数1126将被执行。此时,信号1131的值将被从信号处理单元1116传递给信号处理程序钩子函数1126。
以接收到的信号1131的值作为参数,信号处理程序钩子函数1126执行第三特定指令1123。通过执行第三特定指令1123,信号处理程序获得单元1113被调用。
参考图4,信号处理程序获得单元1113获得作为第三特定指令1123的参数的信号1131的值(步骤B1)。接下来,参考信号处理程序存储单元1104,参考与其自己的进程1120的标识符配对的默认信号处理程序表(步骤B2)来获得与信号1131的值相对应地设定的信号处理程序1127(步骤B3)。接下来,通过执行指令1118,通知进程1120的标识符以调用安全级别改变单元1114(步骤B4),并且等等接收来自安全级别改变单元1114的安全级别改变完成信号(步骤B5)。
参考图5,当被信号处理程序获得单元1113调用时,安全级别改变单元1114将进程1120的标识符及其属性值1101作为一对存储(保存)在安全级别存储单元1105中(步骤C1)。接下来,改变进程1120的属性值1101(步骤C2)并将安全级别改变完成信号发送到信号处理程序获得单元1113(步骤C3)以结束处理。这里,改变之前进程1120的属性值1101的值将被记为Nx,改变之后的将被Ny。改变之后的Ny将被假定为表示不允许执行特权指令的安全级别。
在接收到安全级别改变完成信号后,信号处理程序获得单元1113把在步骤B3从信号处理程序存储单元1104获得的信号处理程序1127传递给信号处理程序钩子函数1126(步骤B6),并结束处理。
信号处理程序钩子函数1126通过第三特定指令1123执行从信号处理程序获得单元1113获得的信号处理程序1127。当在信号处理程序1127的执行期间执行插入在信号处理程序1127中的特权指令1130时,控制转移到特权指令执行控制单元1117。特权指令执行控制单元1117参考执行了特权指令1130的进程1120的属性值1101,以判定该进程是否具有使能执行特权指令的安全级别。在此情况下,由于属性值1101被改变成了不允许执行特权指令的值Ny,因此特权指令1130将不被执行。另一方面,在属性值1101是Nx的条件下,特权指令1130将被执行。
当信号处理程序1127的执行结束时,信号处理程序钩子函数1126将执行第四特定指令1124。在执行第四特定指令1124时,将利用进程1120的标识符来调用安全级别返回单元1115。
参考图6,安全级别返回单元1115参考安全级别存储单元1105来获得与进程1120的标识符配对的属性值Nx(步骤D1)。接下来,删除安全级别存储单元1105中存储的由进程1120的标识符和属性值Nx这一对形成的数据(步骤D2)。然后,将进程1120的属性值1101从Ny改变成Nx(步骤D3)。这就完成了安全级别返回单元1115的处理,并将控制返回到信号处理程序钩子函数1126,从而完成了第四特定指令1124的执行。当第四特定指令1124的执行结束时,信号处理程序钩子函数1126的处理完成了。当信号处理程序钩子函数1126的处理结束时,控制通过信号处理单元1116被返回到函数1125,从而恢复函数1125的处理。
当函数1125的处理恢复以执行布置在函数1125中的第二特定指令1122时,利用进程1120的标识符调用信号处理程序返回单元1112。
参考图7,信号处理程序返回单元1112参考信号处理程序存储单元1104以获得与进程1120的标识符配对的默认信号处理程序表(步骤E1)。接下来,信号处理程序返回单元1112将信号搜索号码i设定为初始值0(步骤E2)。接下来,参考进程1120的信号处理程序表1103中与信号的值i相对应地设定的信号处理程序(步骤E3)。当所参考的信号处理程序是信号处理程序钩子函数时(步骤E4处的“是”),将默认信号处理程序表中注册的与信号值i相对应的信号处理程序设定为进程1120的信号处理程序(步骤E5)。在信号处理程序设定结束时或者当所参考的信号处理程序没有设定的信号处理程序钩子函数时(步骤E4处的“否”),将信号搜索号码i加1(步骤E6)。当信号搜索号码i是大于最大值S的值时(步骤E7处的“是”),删除信号处理程序存储单元1104中存储的由进程1120的标识符和信号处理程序钩子函数这一对形成的数据(步骤E8)。然后,结束第二特定指令1122的执行,并继续函数1125的处理。当信号搜索号码i是等于或小于S的值时(步骤E7处的“否”),返回到步骤E3以重复与上述相同的处理。
接下来,将描述本实现模式的效果。
本实现模式使得即使在相同的信号处理程序1127之间也能够从逻辑上区分在进程1120执行特定处理区间的同时接收到的信号将要执行的信号处理程序1127和其他信号处理程序1127,从而在进程1120的安全级别被改变的情况下执行前一种信号处理程序1127。其原因在于,在进程1120执行特定处理区间时,通过将信号处理程序改变成信号处理程序钩子函数,前一种信号处理程序的执行被检测到,从而在安全级别改变的情况下执行信号处理程序。
(第二实现模式)
参考图8,本发明的第二实现模式与图2所示的第一实现模式的不同之处在于,存储装置1100具有安全级别改变规则存储单元2001,并且OS1110具有取代安全级别改变单元1114的安全级别改变单元2002。
安全级别改变规则存储单元2001预先存储改变规则,该改变规则包括这样一对属性值,即,改变之前进程1120的属性值和改变之后的属性值。这里,改变之前进程1120的属性值1101被记为Nx,并且改变之后的属性值被记为Nxx。
安全级别改变单元2002被信号处理程序获得单元1113调用以获得进程1120的标识符和属性值1101,并作为一对存储(保存)在安全级别存储单元1105中,然后,参考安全级别改变规则存储单元2001以获得与改变之前的属性值1101配对的改变之后的属性值Nxx,并且将进程1120的属性值1101改变成所获得的属性值Nxx。
接下来,将描述本实现模式的整体操作。由于在本实现模式的操作之中,与第一实现模式不同的操作仅在于安全级别改变单元2002的操作,因此下面将描述安全级别改变单元2002的操作。
参考图9,当被信号处理程序获得单元1113调用时,安全级别改变单元2002将进程1120的标识符及其属性值1101作为一对存储(保存)在安全级别存储单元1105中(步骤C11)。接下来,参考安全级别改变规则存储单元2001以获得与改变之前的属性值1101(=Nx)配对的改变之后的属性值Nxx(步骤C12),并且将进程1120的属性值1101改变成所获得的属性值Nxx(步骤C13)。然后,向信号处理程序获得单元1113发送安全级别改变完成信号(步骤C14)。
接下来,将描述本实现模式的效果。
本实现模式除了第一实现模式的效果之外还具有以下效果,即,根据进程1120的安全级别,能够基于预先存储的安全级别改变规则来改变信号处理程序执行时进程的安全级别。
(第三实现模式)
参考图10,本发明的第三实现模式与图2所示的第一实现模式的不同之处在于存储装置1100具有安全级别改变规则存储单元3001,并且OS1110具有取代信号处理程序获得单元1113和安全级别改变单元1114的信号处理程序获得单元3002和安全级别改变单元3003。
安全级别改变规则存储单元3001预先存储改变规则,该改变规则包括以下这一对,即,进程1120接收到的信号1131的值和进程1120的属性值。这里,将改变之前进程1120的属性值1101记为Nx,并将与信号1131的值相对应的属性值记为Nxx。
从在进程1120接收到信号1131后执行的信号处理程序钩子函数1126中,信号处理程序获得单元3002通过第三特定指令1123被调用,以在以接收到的信号1131的值作为参数的情况下被执行,从而参考信号处理程序存储单元1104,并且在从与进程1120的标识符配对的信号处理程序表中获得与信号1131的值相对应的信号处理程序1127之后,调用安全级别改变单元3003并将信号1131的值传送到该单元,并且在安全级别改变单元3003的处理结束之后,将所获得的信号处理程序1127传递给信号处理程序钩子函数1126。
当被信号处理程序获得单元3002调用以接收信号1131的值时,在将进程1120的标识符和属性值1101作为一对存储(保存)在安全级别存储单元1105中之后,安全级别改变单元3003参考安全级别改变规则存储单元3001以获得与信号1131的值配对的属性值Nxx,并且将进程1120的属性值1101改变成属性值Nxx。
接下来,将描述本实现模式的整体操作。由于在本实现模式的操作之中,与第一实现模式不同的操作仅在于信号处理程序获得单元3002和安全级别改变单元3003的操作,因此下面将描述信号处理程序获得单元3002和安全级别改变单元3003的操作。
参考图11,当从信号处理程序钩子函数1126中以信号1131的值为参数通过第三特定指令1123被调用时,信号处理程序获得单元3002获得信号1131的值(步骤B11)。接下来,参考信号处理程序存储单元1104,以参考与进程1120的标识符配对的默认信号处理程序表(步骤B12),获得与信号1131的值相对应地设定的信号处理程序1127(步骤B13)。接下来,通过执行指令1118,通知进程1120的标识符和信号1131的值以调用安全级别改变单元3003(步骤B14),并且等待接收来自安全级别改变单元3003的安全级别改变完成信号(步骤B15)。
参考图12,当被信号处理程序获得单元3002调用时,安全级别改变单元3003获得信号1131的值(步骤C21),并将进程1120的标识符及其属性值1101作为一对存储(保存)在安全级别存储单元1105中(步骤C22)。接下来,将进程1120的标识符和属性值1101作为一对存储(保存)在安全级别存储单元1105中(步骤C22)。接下来,参考安全级别改变规则存储单元3001,获得与从信号处理程序获得单元3002获得的信号1131的值配对的属性值Nxx(步骤C23),并且将进程1120的属性值1101改变成所获得的属性值Nxx(步骤C24)。然后,向信号处理程序获得单元3002发送安全级别改变完成信号(步骤C25)。
在接收到安全级别改变完成信号后,信号处理程序获得单元3002把在步骤B13从信号处理程序存储单元1104获得的信号处理程序1127传递给信号处理程序钩子函数1126(步骤B16)以结束处理。
接下来,将描述本实现模式的效果。
本实现模式除了第一实现模式的效果之外还使得能够基于预先存储的安全级别改变规则,根据所生成的信号1131的值来改变执行信号处理程序时进程的安全级别。
(第四实现模式)
参考图13,本发明的第四实现模式与图2所示的第一实现模式的不同之处在于存储装置1100具有取代信号处理程序表1103和信号处理程序存储单元1104的共享信号处理程序表4001和信号处理程序存储单元4002,并且OS 1110具有取代信号处理程序改变单元1111、信号处理程序返回单元1112和信号处理程序获得单元1113的信号处理程序改变单元4003、信号处理程序返回单元4004和信号处理程序获得单元4005。
共享信号处理程序表4001是被多个进程1120共享的信号处理程序表。在本实现模式的情况下,OS 1110对共享信号处理程序表的进程进行管理。
信号处理程序存储单元4002是用于保存共享信号处理程序表4001的存储单元。根据第一实现模式的信号处理程序存储单元1104存储一个进程1120的标识符和信号处理程序表这一对,而根据本实现模式的信号处理程序存储单元4002将一组进程标识符和共享信号处理程序表4001作为一对来进行存储。这里,进程标识符组是共享配对的共享信号处理程序表4001的进程的至少一个进程标识符的集合。
当在进程1120的函数1125执行第一特定指令1121时被调用时,信号处理程序改变单元4003在存在与自身进程1120共享着共享信号处理程序表4001的其他进程并且所关注的其他进程的标识符被存储在信号处理程序存储单元4002的进程标识符组中时将自身进程1120的进程标识符添加到进程标识符组,以将除了在自身进程1120的共享信号处理程序表4001处设定的信号处理程序钩子函数1126之外的其他信号处理程序存储(保存)在与进程标识符组配对的默认信号处理程序表中。然后,把在自身进程1120的共享信号处理程序表4001处设定的信号处理程序改变成信号处理程序钩子函数1126。
另一方面,在不存在与自身进程1120共享着共享信号处理程序表4001的其他进程的情况下,或者在即使存在这样的其他进程但其他进程的标识符未被存储在信号处理程序存储单元4002的进程标识符组中的情况下,信号处理程序改变单元4003将进程1120的标识符作为进程标识符组并将共享信号处理程序表4001作为默认信号处理程序表存储(保存)在信号处理程序存储单元4002中,把在进程1120的共享信号处理程序表4001处设定的信号处理程序改变成信号处理程序钩子函数1126。
当在进程1120的函数1125执行第二特定指令1122时被调用时,信号处理程序返回单元4004参考信号处理程序存储单元4002中的包括进程1120的进程标识符的进程标识符组,并且在存在除了进程1120之外的其他进程标识符时,将除了在进程1120的共享信号处理程序表4001处设定的信号处理程序钩子函数1126之外的信号处理程序存储(保存)在与进程标识符组配对的默认信号处理程序表中。然后,从进程标识符组中删除进程1120的标识符。
另一方面,当进程标识符组中除了进程1120的标识符之外不存在其他进程标识符时,信号处理程序返回单元4004把在进程1120的共享信号处理程序表4001处设定为信号处理程序的信号处理程序钩子函数1126改变成在与包括进程1120的标识符的进程标识符组配对地存储在信号处理程序存储单元4002中的默认信号处理程序表处设定的信号处理程序。然后,删除信号处理程序存储单元4002中存储的由包括进程1120的标识符的进程标识符组和默认信号处理程序表这一对形成的数据。
信号处理程序获得单元4005是与信号处理程序获得单元1113大体相同的单元。更具体而言,在进程1120接收到信号1131后执行的信号处理程序钩子函数1126中通过第三特定指令1123被调用从而以接收到的信号1131的值为参数而执行的信号处理程序获得单元4005具有下述功能:从信号处理程序存储单元4002中的与包括进程1120的标识符的进程标识符组配对的默认信号处理程序表中获得与信号1131相对应的信号处理程序,并利用指令1118调用安全级别改变单元1114,并且在安全级别改变单元1114的处理结束之后,将所获得的信号处理程序传递给信号处理程序钩子函数1126。
接下来,将描述本实现模式的整体操作。由于在本实现模式的操作之中,与第一实现模式不同的操作是信号处理程序改变单元4003、信号处理程序返回单元4004和信号处理程序获得单元4005的操作,因此下面将描述信号处理程序改变单元4003、信号处理程序返回单元4004和信号处理程序获得单元4005的操作。
当进程1120调用函数1125以执行布置在函数1125中的第一特定指令1121时,信号处理程序改变单元4003将被调用。
参考图14至图16,当存在与进程1120共享着共享信号处理程序表4001的其他进程时(步骤A11处的“是”),信号处理程序改变单元4003判定所关注的其他进程的标识符是否被存储在信号处理程序存储单元4002中的进程标识符组中(步骤A12)。当与进程1120共享着共享信号处理程序表4001的其他进程的标识符被存储在信号处理程序存储单元4002中的进程标识符组中时(步骤A12处的“是”),将进程1120的进程标识符添加到该进程标识符组(步骤A13)。
接下来,信号处理程序改变单元4003参考与该进程标识符组配对的默认信号处理程序表(步骤A14)。接下来,将信号搜索号码i设定为初始值0(步骤A15)。接下来,参考进程1120的共享信号处理程序表4001中与信号值i相对应地设定的信号处理程序(步骤A16),并且当所参考的信号处理程序设定有除信号处理程序钩子函数1126之外的其他信号处理程序时(步骤A17处的“是”),将该信号处理程序作为与信号值i相对应的信号处理程序存储(保存)在默认信号处理程序表中(步骤A18),在进程1120的共享信号处理程序表4001中将信号处理程序钩子函数1126设定为与信号值i相对应的信号处理程序(步骤A19)。然后,将信号搜索号码i加1(步骤A20)。另一方面,当所参考的信号处理程序没有设定除信号处理程序钩子函数1126之外的其他信号处理程序时(步骤A17处的“否”),跳过步骤A18和A19,并将信号搜索号码i加1(步骤A20)。
接下来,当信号搜索号码i大于信号号码的最大值S时(步骤A21处的“是”),信号处理程序改变单元4003结束处理。这样就完成了第一特定指令1121的执行,并恢复函数1125的处理。另一方面,当信号搜索号码i等于或小于S时(步骤A21处的“否”),返回步骤A16,并重复与上述处理相同的处理。
当不存在与进程1120共享着共享信号处理程序表的其他进程时(步骤A11处的“否”),或者即使存在,但当所关注的其他进程的标识符未被存储在信号处理程序存储单元4002的进程标识符组中时(步骤A12处的“否”),信号处理程序改变单元4003将包括进程1120的标识符的进程标识符组和共享信号处理程序表4001作为一对存储(保存)在信号处理程序存储单元4002中(步骤A22)。
接下来,信号处理程序改变单元4003将信号搜索号码i设定为初始值0(步骤A23)。接下来,参考进程1120的共享信号处理程序表4001中与信号值i相对应地设定的信号处理程序(步骤A24),并且当所参考的信号处理程序是由进程1120所设定的信号处理程序时(步骤A25处的“是”),将信号处理程序改变成作为与信号值i相对应的信号处理程序的信号处理程序钩子函数1126(步骤A26)。然后,将信号搜索号码i加1(步骤A27)。当所参考的信号处理程序不是由进程1120设定的信号处理程序时(步骤A25处的“否”),跳过步骤A26,并将信号搜索号码i加1(步骤A27)。
接下来,当信号搜索号码i大于S时(步骤A28处的“是”),信号处理程序改变单元4003结束处理。这样就完成了第一特定指令1121的执行,并且恢复函数1125的处理。另一方面,当信号搜索号码i是等于或小于S的值时(步骤A28处的“否”),返回到步骤A24,并且重复与上述处理相同的处理。
这里假定在执行函数1125的进程1120结束第一特定指令1121的执行之后,信号处理程序钩子函数1126接收到被设定为信号处理程序的信号1131。然后,函数1125的执行被OS 1110所中断,以通过信号处理单元1116执行信号处理程序钩子函数1126。然后,在信号处理程序钩子函数1126中,以接收到的信号1131的值作为参数来执行第三特定指令1123,从而调用信号处理程序获得单元4005。
参考图17,信号处理程序获得单元4005获得作为第三特定指令1123的参数的信号1131的值(步骤B21)。接下来,参考信号处理程序存储单元4002中与包括自身进程1120的标识符的进程标识符组配对的默认信号处理程序表(步骤B22),以获得与信号1131的值相对应地设定的信号处理程序1127(步骤B23)。接下来,通过执行指令1118,通知进程1120的标识符以调用安全级别改变单元1114(步骤B24),并且等待接收来自安全级别改变单元1114的安全级别改变完成信号(步骤B25)。
如参考图5所述,当被信号处理程序获得单元4005调用时,安全级别改变单元1114将进程1120的标识符及其属性值1101作为一对存储(保存)在安全级别存储单元1105中(步骤C1),改变进程1120的属性值1101(步骤C2),并且向信号处理程序获得单元4005发送安全级别改变完成信号(步骤C3)以结束处理。这里,作为本实现模式的修改例,安全级别改变单元1114可以检查信号处理程序存储单元4002中是否有任何进程标识符组包括进程1120的标识符,并且仅当包括时(即,所关注的进程执行函数1125的第一特定指令1121但不执行第二特定指令1122的状态),才改变进程1120的属性值1101。
当接收到安全级别改变完成信号时,信号处理程序获得单元4005把在步骤B23从信号处理程序存储单元4002获得的信号处理程序1127传递给信号处理程序钩子函数1126(步骤B25)以结束处理。
信号处理程序钩子函数1126通过第三特定指令1123执行从信号处理程序获得单元4005获得的信号处理程序1127。当插入在信号处理程序1127中的特权指令1130在信号处理程序1127的执行期间被执行时,控制转移到特权指令执行控制单元1117。特权指令执行控制单元1117参考执行了特权指令1130的进程1120的属性值1101,以判定其是否具有使能执行特权指令的安全级别。
当信号处理程序1127的执行结束时,信号处理程序钩子函数1126执行第四特定指令1124。当执行第四特定指令1124时,利用进程1120的标识符来调用安全级别返回单元1115。
如已参考图6所述,安全级别返回单元1115参考安全级别存储单元1105来获得与进程1120的标识符配对的属性值(步骤D1)。接下来,删除安全级别存储单元1105中存储的由进程1120的标识符和属性值这一对形成的数据(步骤D2)。然后,将进程1120的属性值1101返回到先前属性值(步骤D3)。
这里,作为本实现模式的修改例,安全级别改变单元1114可以检查进程1120的标识符是否被包括在信号处理程序存储单元4002中的任何进程标识符组中,并且当不包括时,则结束处理,而不执行将进程1120的属性值1101返回到先前值的处理。
当安全级别返回单元1115的处理结束而将控制返回到信号处理程序钩子函数1126时,第四特定指令1124的执行结束。当第四特定指令1124的执行结束时,信号处理程序钩子函数1126的处理结束。当信号处理程序钩子函数1126的处理结束时,控制通过信号处理单元1116被返回到函数1125,从而恢复函数1125的处理。然后,当函数1125的处理恢复从而执行布置在函数1125中的第二特定指令1122时,利用进程1120的标识符调用信号处理程序返回单元4004。
参考图18至图20,信号处理程序返回单元4004参考信号处理程序存储单元4002中的包括进程1120的进程标识符的进程标识符组(步骤E11),并且当在该进程标识符组中存在除进程1120之外的其他进程的标识符时(步骤E12处的“是”),参考与该进程标识符组配对的默认信号处理程序表(步骤E13)。接下来,将信号搜索号码i设定为初始值0(步骤S14),参考进程1120的共享信号处理程序表4001中与信号值i相对应的信号处理程序(步骤E15)。
当所参考的信号处理程序设定了除信号处理程序钩子函数1126之外的其他信号处理程序时(步骤E16处的“是”),信号处理程序返回单元4004将信号处理程序存储单元4002中的信号处理程序作为与信号值i相对应的信号处理程序存储(保存)在默认信号处理程序表中(步骤E17)。接下来,设定信号处理程序钩子函数1126,来作为被参考的进程1120的共享信号处理程序表4001中与信号值i相对应的信号处理程序(步骤E18)。然后,将信号搜索号码i加1(步骤E19)。另一方面,当所参考的信号处理程序没有设定信号处理程序钩子函数1126时(步骤E16中的“否”),跳过步骤E17和E18的处理,并将信号搜索号码i加1(步骤E19)。
接下来,当信号搜索号码i是比信号号码的最大值S更大的值时(步骤E20处的“是”),信号处理程序返回单元4004从信号处理程序存储单元4002中存储的进程标识符组中删除进程1120的标识符(步骤E21)。然后,信号处理程序返回单元4004结束处理。这样就完成了第二特定指令1122的执行,并且恢复函数1125的处理。另一方面,当信号搜索号码i是等于或小于S的值时(步骤E20处的“否”),返回到步骤E15,并重复与上述处理相同的处理。
当在进程标识符组中不存在除进程1120之外的其他进程的标识符时(步骤E12处的“否”),信号处理程序返回单元4004获得信号处理程序存储单元4002中存储的与包括进程1120的标识符的进程标识符组配对的默认信号处理程序表(步骤E22)。接下来,信号处理程序返回单元4004将信号搜索号码i设定为初始值0(步骤E23),参考进程1120的共享信号处理程序表4001中与信号值i相对应地设定的信号处理程序(步骤E24)。
当所参考的信号处理程序是信号处理程序钩子函数1126时(步骤S25处的“是”),信号处理程序返回单元4004从信号处理程序存储单元4002中读取在默认信号处理程序表中被注册为与信号值i相对应的信号处理程序的信号处理程序,并将其设定为进程1120的共享信号处理程序表4001中与信号值i相对应的信号处理程序(步骤E26)。然后,将信号搜索号码i加1(步骤E27)。另一方面,当所参考的信号处理程序不是信号处理程序钩子函数1126时(步骤E26处的“否”),跳过步骤E26的处理,并将信号搜索号码i加1(步骤E27)。
接下来,当信号搜索号码i是比信号号码的最大值S更大的值时(步骤E28处的“是”),信号处理程序返回单元4004删除信号处理程序存储单元4002中存储的由包括进程1120的标识符的进程标识符组和默认信号处理程序表这一对形成的数据(步骤E29)。然后,结束信号处理程序返回单元4004的处理。这样就完成了第二特定指令1122的执行,恢复函数1125的处理。另一方面,当信号搜索号码i是等于或小于S的值时(步骤E28处的“否”),返回到步骤E24,并且重复与上述处理相同的处理。
接下来,将描述本实现模式的效果。
在改变信号处理程序表中的信号处理程序时,通过执行与共享信号处理程序表的进程有关的处理,本实现模式允许了应对具有使得能够在多个进程之间共享信号处理程序表的功能的OS。
(第一示例性实施例)
接下来,将参考图21和图22描述本发明的第一示例性实施例。本示例性实施例对应于本发明的第一实现模式。
在本示例性实施例中,OS 1110和进程A在可在程序控制下工作的计算机上工作。
本示例性实施例中的OS 1110管理作为信号的信号0(信号值为0)、信号1(信号值为1)和信号2(信号值为2),并且与信号值成对地存储在每个进程的信号处理程序表中的是在生成这些信号时要执行的信号处理程序的起始地址,在生成信号时,将参考信号发送目的地进程的信号处理程序表,以获得与信号值配对的信号处理程序的起始地址,并且启动该信号处理程序。OS 1110还具有使得能够针对每个进程设定安全级别的安全OS功能,其使得在本示例性实施例中安全级别能够被设定为“低”(非特权级别)和“高”(特权级别)。在为“低”的进程的属性值被设定为1并且为“高”的进程的属性值被设定为3的情况下,被设定为具有安全级别“低”的进程的特权系统调用(system call)执行受限,而被设定为具有安全级别“高”的进程则对特权系统调用的执行没有限制。这样的OS例如是SE Linux或者可以是其他种类的OS。
另外,OS 1110具有信号处理程序改变单元1111、信号处理程序返回单元1112、信号处理程序获得单元1113、安全级别改变单元1114、安全级别返回单元1115、信号处理单元1116、特权指令执行控制单元1117、信号处理程序存储单元1104和安全级别存储单元1105。作为系统调用指令,OS 1110还包括作为第一特定指令的用于调用信号处理程序改变单元1111的系统调用1、作为第二特定指令的用于调用信号处理程序返回单元1112的系统调用2、作为第三特定指令的用于调用信号处理程序获得单元1113的系统调用3、以及作为第四特定指令的用于调用安全级别返回单元1115的系统调用4。安全级别改变单元1114具有将进程的属性值改变成1(安全级别“低”)的功能。安全级别返回单元1115具有将进程的属性值返回到3(安全级别“高”)的功能。
进程A包括函数1125、信号处理程序钩子函数1126、信号处理程序As0以及信号处理程序As1。在函数本身所执行的处理之中,函数1125被设计为,在预先确定的特定处理区间的执行之前,使系统调用1在以信号处理程序钩子函数1126的起始地址作为参数的情况下被执行,并且在该特定处理区间的执行之后,使系统调用2在以信号处理程序钩子函数1126的起始地址作为参数的情况下被执行。信号处理程序钩子函数1126在函数的顶部部分布置有以接收到的信号值作为参数来执行的系统调用3,并且在函数的结尾部分布置有系统调用4。此外,紧接系统调用3之后布置了基于系统调用3获得的信号处理程序的起始地址来执行信号处理程序的指令。信号处理程序As0是当信号0被发送到进程A时要执行的信号处理程序,而信号处理程序As1是在信号1被发送到进程A时要执行的信号处理程序。在进程A中,对于信号2没有设定信号处理程序。进程A的信号处理程序表在图22中以状态1示出。进程A的标识符是1,并且进程A的属性值是3(安全级别“高”)。
这里假定进程A调用函数1125,从而以信号处理程序钩子函数1126的起始地址作为参数来执行布置在函数1125中的系统调用1。当系统调用1被执行时,信号处理程序改变单元1111将被调用。信号处理程序改变单元1111将进程A的标识符1与进程A的信号处理程序表成对地存储在信号处理程序存储单元1104中。信号处理程序存储单元1104中存储的信号处理程序表将被称为默认信号处理程序表A。默认信号处理程序表A的内容如图22所示。
接下来,信号处理程序改变单元1111将信号搜索号码设定为初始值0。由于这里的OS 1110管理具有信号值0至2的信号,因此信号搜索号码的最大值为2。然后,参考进程A的信号处理程序表中与信号值0配对的信号处理程序的起始地址。由于信号值0与信号处理程序As0的首地址成对地存储,因此将该信号处理程序改变成信号处理程序钩子函数1126的起始地址。然后,将信号搜索号码加1。由于信号搜索号码达到1,因此参考进程A的信号处理程序表中与信号值1配对的信号处理程序的起始地址。由于信号值1与信号处理程序As1的首地址成对地存储,因此将该信号处理程序改变成信号处理程序钩子函数1126的起始地址。然后,将信号搜索号码加1。由于信号搜索号码达到2,因此参考进程A的信号处理程序表中与信号值2配对的信号处理程序的起始地址。由于对于信号值2没有设定信号处理程序的起始地址,因此将信号搜索号码加1。信号搜索号码达到3,这大于信号搜索号码的最大值,从而结束系统调用1的处理。此时获得的进程A的信号处理程序表在图22中以状态2示出。
假定执行函数1125的进程A在完成系统调用1的执行之后接收到信号1。由于信号处理程序钩子函数1126被设定为进程A的信号1的信号处理程序,因此函数1125的执行被中断,以执行信号处理程序钩子函数1126。然后,在信号处理程序钩子函数1126中,系统调用3在以接收到的信号1的信号值1为参数的情况下被执行。当系统调用3被执行时,信号处理程序获得单元1113将被调用。
参考与进程A的标识符1配对的默认信号处理程序表A,信号处理程序获得单元1113从信号处理程序存储单元1104中获得与信号的值1配对的信号处理程序As1的起始地址。然后,调用安全级别改变单元1114,等待接收安全级别改变完成信号。
安全级别改变单元1114将进程A的标识符1和属性值3作为一对存储在安全级别存储单元1105中。然后,将进程A的属性值改变成1,并向信号处理程序获得单元1113发送安全级别改变完成信号。
在接收到安全级别改变完成信号后,信号处理程序获得单元1113把从信号处理程序存储单元1104获得的信号处理程序As1的起始地址传递给信号处理程序钩子函数1126,以结束系统调用3的处理。
基于通过系统调用3获得的信号处理程序As1的起始地址,信号处理程序钩子函数1126调用信号处理程序As1。
在完成信号处理程序As1的执行后,信号处理程序钩子函数1126执行系统调用4。当系统调用4被执行时,安全级别返回单元1115将被调用。
安全级别返回单元1115参考安全级别存储单元1105以获得与进程A的标识符1配对的属性值3。接下来,删除安全级别存储单元1105中存储的由进程A的标识符1和属性值3这一对形成的数据。然后,将进程A的属性值改变成3,结束系统调用4的处理。系统调用4的处理的结束引起了信号处理程序钩子函数1126的处理的结束。当信号处理程序钩子函数1126的处理结束时,函数1125的处理恢复。
当函数1125的处理恢复,从而在以信号处理程序钩子函数1126的首地址作为参数的情况下执行布置在函数1125中的系统调用2时,信号处理程序返回单元1112将被调用。
信号处理程序返回单元1112参考信号处理程序存储单元1104以获得与进程A的标识符1配对的默认信号处理程序表A。接下来,信号处理程序返回单元1112将信号搜索号码设定为初始值0。由于这里的OS 1110管理信号值为0至2的信号,因此信号搜索号码的最大值为2。然后,参考进程A的信号处理程序表中与信号值0配对的信号处理程序的起始地址。由于信号值0与信号处理程序钩子函数的首地址成对地存储,因此将该信号处理程序改变成默认信号处理程序表A中与信号值0配对的信号处理程序As0。接下来,将信号搜索号码加1。由于信号搜索号码达到1,因此参考进程A的信号处理程序表中与信号值1配对的信号处理程序的起始地址。由于信号值1与信号处理程序钩子函数的首地址成对地存储,因此将该信号处理程序改变成默认信号处理程序表A中与信号值1配对的信号处理程序As1。接下来,将信号搜索号码加1。由于信号搜索号码达到2,因此参考进程A的信号处理程序表中与信号值2配对的信号处理程序的起始地址。由于对于信号2没有设定信号处理程序的起始地址,因此将信号搜索号码加1。由于信号搜索号码达到3,这大于信号搜索号码的最大值,因此从信号处理程序存储单元1104中删除由进程A的标识符1和默认信号处理程序表A这一对形成的数据,然后结束系统调用2的处理。
(第二示例性实施例)
接下来,将参考图23和图24描述本发明的第二示例性实施例。本示例性实施例对应于本发明的第二实现模式。
本示例性实施例与第一示例性实施例的不同之处在于可在计算机上工作的进程是进程B,并且OS 1110具有安全级别改变规则存储单元2001。本示例性实施例中的OS 1110管理作为信号的信号0(信号值为0)、信号1(信号值为1)和信号2(信号值为2),并且与信号值成对地存储在每个进程的信号处理程序表中的是在生成这些信号时要执行的信号处理程序的起始地址,在生成信号时,将参考信号发送目的地进程的信号处理程序表,以获得与信号值配对的信号处理程序的起始地址,并且启动该信号处理程序。OS 1110还具有使得能够针对每个进程设定安全级别的安全OS功能,其使得在本示例性实施例中安全级别能够被设定为“低”(非特权级别)、“中”(普通授权级别)和“高”(特权级别),并且在为“低”的进程的属性值被设定为1,为“中”的进程的属性值被设定为2,并且为“高”的进程的属性值被设定为3的情况下,被设定为具有安全级别“低”的进程的特权系统调用执行受限,被设定为具有安全级别“中”的进程仅有几个特权系统调用的执行受限,而被设定为具有安全级别“高”的进程则对特权系统调用的执行没有限制。这样的OS例如是SELinux或者可以是其他种类的OS。
另外,安全级别改变规则存储单元2001具有如图24所示存储的改变规则。
进程B包括函数1125、信号处理程序钩子函数1126、以及信号处理程序Bs0。信号处理程序Bs0是在信号0被发送到进程B时将要执行的信号处理程序。进程B对于信号1和信号2没有设定信号处理程序。进程B的信号处理程序表在图24中以状态1示出。进程B的标识符是1,并且进程B的属性值是3(安全级别“高”)。
这里假定进程B调用函数1125,从而以信号处理程序钩子函数1126的起始地址作为参数来执行布置在该函数中的系统调用1。当系统调用1被执行时,信号处理程序改变单元1111将被调用。
信号处理程序改变单元1111将进程B的标识符1与进程B的信号处理程序表成对地存储在信号处理程序存储单元1104中。信号处理程序存储单元1104中存储的信号处理程序表将被称为默认信号处理程序表B。内容如图24所示。接下来,信号处理程序改变单元1111将信号搜索号码设定为初始值0。由于这里的OS 1110管理具有信号值0至2的信号,因此信号搜索号码的最大值为2。接下来,参考进程B的信号处理程序表中与信号值0配对的信号处理程序的起始地址。由于信号值0与信号处理程序Bs0的首地址成对地存储,因此将该信号处理程序改变成信号处理程序钩子函数1126的起始地址。然后,将信号搜索号码加1。由于信号搜索号码达到1,因此参考进程B的信号处理程序表中与信号值1配对的信号处理程序的起始地址。由于对于信号值1没有设定信号处理程序的起始地址,因此将信号搜索号码加1。由于信号搜索号码达到2,因此参考进程B的信号处理程序表中与信号值2配对的信号处理程序的起始地址。由于对于信号值2没有设定信号处理程序,因此将信号搜索号码加1。信号搜索号码达到3,这大于信号搜索号码的最大值,从而结束系统调用1的处理。此时获得的进程B的信号处理程序表在图24中以状态2示出。
假定执行函数1125的进程B在完成系统调用1的执行之后接收到信号0。由于信号处理程序钩子函数1126被设定为进程B的信号0的信号处理程序,因此函数1125的执行被中断以执行信号处理程序钩子函数1126。
信号处理程序钩子函数1126以接收到的信号0的信号值0作为参数来执行系统调用3。当系统调用3被执行时,信号处理程序获得单元1113将被调用。
参考与进程B的标识符1配对的默认信号处理程序表B,信号处理程序获得单元1113从信号处理程序存储单元1104中获得与信号的值0配对的信号处理程序Bs0的起始地址。然后,调用安全级别改变单元2002,等待接收安全级别改变完成信号。
安全级别改变单元2002将进程B的标识符1和属性值3作为一对存储在安全级别存储单元1105中。然后,参考安全级别改变规则存储单元2001以获得与尚未改变的属性值3(进程B的属性值)配对的属性值2。然后,将进程B的属性值改变成2,并向信号处理程序获得单元1113发送安全级别改变完成信号。
在接收到安全级别改变完成信号后,信号处理程序获得单元1113把从信号处理程序存储单元1104获得的信号处理程序Bs0的起始地址传递给信号处理程序钩子函数1126,以结束系统调用3的处理。
基于通过系统调用3获得的信号处理程序Bs0的起始地址,信号处理程序钩子函数1126调用信号处理程序Bs0。然后,在信号处理程序Bs0的执行完成后,信号处理程序钩子函数1126执行系统调用4。
当系统调用4被执行时,安全级别返回单元1115将被调用。安全级别返回单元1115参考安全级别存储单元1105以获得与进程B的标识符1配对的属性值3。接下来,删除安全级别存储单元1105中存储的由进程B的标识符1和属性值3这一对形成的数据。然后,将进程B的属性值改变成3,并结束系统调用4的处理。系统调用4的处理的结束引起了信号处理程序钩子函数1126的处理的结束。当信号处理程序钩子函数1126的处理结束时,函数1125的处理恢复。
函数1125的处理恢复,从而在以信号处理程序钩子函数1126的首地址作为参数的情况下执行布置在函数1125中的系统调用2。当系统调用2被执行时,信号处理程序返回单元1112将被调用。
信号处理程序返回单元1112参考信号处理程序存储单元1104以获得与进程B的标识符1配对的默认信号处理程序表B。接下来,信号处理程序返回单元1112将信号搜索号码设定为初始值0。由于这里的OS管理信号值为0至2的信号,因此信号搜索号码的最大值为2。接下来,参考进程B的信号处理程序表中与信号值0配对的信号处理程序的起始地址。由于信号值0与信号处理程序钩子函数1126的首地址成对地存储,因此将该信号处理程序改变成默认信号处理程序表B中与信号值0配对的信号处理程序Bs0。接下来,将信号搜索号码加1。由于信号搜索号码达到1,因此参考进程B的信号处理程序表中与信号值1配对的信号处理程序的起始地址。由于对于信号值1没有设定信号处理程序的起始地址,因此将信号搜索号码加1。由于信号搜索号码达到2,因此参考进程B的信号处理程序表中与信号值2配对的信号处理程序的起始地址。由于对于信号2没有设定信号处理程序,因此将信号搜索号码加1。由于信号搜索号码达到3,这大于信号搜索号码的最大值,因此从信号处理程序存储单元1104中删除由进程B的标识符1和默认信号处理程序表B这一对形成的数据,然后结束系统调用2的处理。
(第三示例性实施例)
接下来,将参考图25和图26描述本发明的第三示例性实施例。本示例性实施例对应于本发明的第三实现模式。
本示例性实施例与第一示例性实施例的不同之处在于可在计算机上工作的进程是进程C,并且OS 1110具有安全级别改变规则存储单元3001。本示例性实施例中的OS 1110管理作为信号的信号0(信号值为0)、信号1(信号值为1)和信号2(信号值为2),并且与信号值成对地存储在每个进程的信号处理程序表中的是在生成这些信号时要执行的信号处理程序的起始地址,在生成信号时,将参考信号发送目的地进程的信号处理程序表,以获得与信号值配对的信号处理程序的起始地址,并且启动该信号处理程序。OS 1110还具有使得能够针对每个进程设定安全级别的安全OS功能,其使得在本示例性实施例中安全级别能够被设定为“低”(非特权级别)、“中”(普通授权级别)和“高”(特权级别),并且在为“低”的进程的属性值被设定为1,为“中”的进程的属性值被设定为2,并且为“高”的进程的属性值被设定为3的情况下,被设定为具有安全级别“低”的进程的特权系统调用执行受限,被设定为具有安全级别“中”的进程仅有几个特权系统调用的执行受限,而被设定为具有安全级别“高”的进程则对特权系统调用的执行没有限制。这样的OS例如是SELinux或者可以是其他种类的OS。
另外,OS 1110布置有信号处理程序改变单元1111、信号处理程序返回单元1112、信号处理程序获得单元3002、安全级别改变单元3003、安全级别返回单元1115、信号处理程序存储单元1104、安全级别存储单元1105以及安全级别改变规则存储单元3001,并且包括作为第一特定指令的用于调用信号处理程序改变单元1111的系统调用1、作为第二特定指令的用于调用信号处理程序返回单元1112的系统调用2、作为第三特定指令的用于调用信号处理程序获得单元3002的系统调用3、以及作为第四特定指令的用于调用安全级别返回单元1115的系统调用4。安全级别改变规则存储单元3001存储有内容如图26所示的改变规则。
进程C包括函数1125、信号处理程序钩子函数1126、以及信号处理程序Cs0。函数1125被设计为,在由函数本身执行的处理当中,在预先确定的特定处理执行区间的执行之前使得系统调用1在以信号处理程序钩子函数1126的起始地址作为参数的情况下被执行,并且在由函数本身执行的处理当中,在该特定处理执行区间的执行之后使得系统调用2在以信号处理程序钩子函数1126的起始地址作为参数的情况下被执行。信号处理程序钩子函数1126在函数的顶部部分布置有将在以接收到的信号值作为参数的情况下执行的系统调用3,并且在函数的结尾部分布置有系统调用4。此外,紧接系统调用3之后布置了基于系统调用3将获得的信号处理程序的起始地址来执行信号处理程序的指令。信号处理程序Cs0是当信号0被发送到进程C时要执行的信号处理程序,并且在进程C中,对于信号1和信号2没有设定信号处理程序。进程C的信号处理程序表在图26中以状态1示出。进程C的标识符是1,并且进程C的属性值是3(安全级别“高”)。
这里假定进程C调用函数1125,从而以信号处理程序钩子函数1126的起始地址作为参数来执行布置在该函数1125中的系统调用1。当系统调用1被执行时,信号处理程序改变单元1111将被调用。
信号处理程序改变单元1111将进程C的标识符1与进程C的信号处理程序表成对地存储在信号处理程序存储单元1104中。信号处理程序存储单元1104中存储的信号处理程序表将被称为默认信号处理程序表C。默认信号处理程序表C的状态如图26所示。
接下来,信号处理程序改变单元1111将信号搜索号码设定为初始值0。由于这里的OS管理具有信号值0至2的信号,因此信号搜索号码的最大值为2。接下来,参考进程C的信号处理程序表中与信号值0配对的信号处理程序的起始地址。由于信号值0与信号处理程序Cs0的首地址成对地存储,因此将该信号处理程序改变成信号处理程序钩子函数1126的起始地址。然后,将信号搜索号码加1。由于信号搜索号码达到1,因此参考进程C的信号处理程序表中与信号值1配对的信号处理程序的起始地址。由于对于信号值1没有设定信号处理程序的起始地址,因此将信号搜索号码加1。由于信号搜索号码达到2,因此参考进程C的信号处理程序表中与信号值2配对的信号处理程序的起始地址。由于对于信号值2没有设定信号处理程序,因此将信号搜索号码加1。信号搜索号码达到3,这大于信号搜索号码的最大值,从而结束系统调用1的处理。此时获得的进程C的信号处理程序表在图26中以状态2示出。
假定执行函数1125的进程C在完成系统调用1的执行之后接收到信号0。由于信号处理程序钩子函数1126被设定为进程C的信号0的信号处理程序,因此函数1125的执行被中断以执行信号处理程序钩子函数1126。然后,在信号处理程序钩子函数1126中,系统调用3在以接收到的信号0的信号值0为参数的情况下被执行。当系统调用3被执行时,信号处理程序获得单元3002将被调用。
参考与进程C的标识符1配对的默认信号处理程序表C,信号处理程序获得单元3002从信号处理程序存储单元1104中获得与信号的值0配对的信号处理程序Cs0的起始地址。然后,调用安全级别改变单元3003,以传递信号值0。然后,等待接收安全级别改变完成信号。
安全级别改变单元3003将进程C的标识符1和属性值3作为一对存储在安全级别存储单元1105中。接下来,参考安全级别改变规则存储单元3001,获得与信号值0配对的属性值1。然后,将进程C的属性值改变成1,并向信号处理程序获得单元3002发送安全级别改变完成信号。
在接收到安全级别改变完成信号后,信号处理程序获得单元3002把从信号处理程序存储单元1104获得的信号处理程序Cs0的起始地址传递给信号处理程序钩子函数1126,以结束系统调用3的处理。
基于通过系统调用3获得的信号处理程序Cs0的起始地址,信号处理程序钩子函数1126调用信号处理程序Cs0。然后,在信号处理程序Cs0的执行完成后,信号处理程序钩子函数1126执行系统调用4。当系统调用4被执行时,安全级别返回单元1115将被调用。
安全级别返回单元1115参考安全级别存储单元1105以获得与进程C的标识符1配对的属性值3。接下来,删除安全级别存储单元1105中存储的由进程C的标识符1和属性值3这一对形成的数据。然后,将进程C的属性值改变成3,并结束系统调用4的处理。系统调用4的处理的结束引起了信号处理程序钩子函数1126的处理的结束。当信号处理程序钩子函数1126的处理结束时,函数1125的处理恢复。
当函数1125的处理恢复,从而在以信号处理程序钩子函数1126的首地址作为参数的情况下执行布置在该函数中的系统调用2时,信号处理程序返回单元1112将被调用。
信号处理程序返回单元1112参考信号处理程序存储单元1104以获得与进程C的标识符1配对的默认信号处理程序表C。接下来,信号处理程序返回单元1112将信号搜索号码设定为初始值0。由于这里的OS管理信号值为0至2的信号,因此信号搜索号码的最大值为2。然后,参考进程C的信号处理程序表中与信号值0配对的信号处理程序的起始地址。由于信号值0与信号处理程序钩子函数1126的首地址成对地存储,因此将该信号处理程序改变成默认信号处理程序表C中与信号值0配对的信号处理程序Cs0。接下来,将信号搜索号码加1。由于信号搜索号码达到1,因此参考进程C的信号处理程序表中与信号值1配对的信号处理程序的起始地址。由于对于信号值1没有设定信号处理程序的起始地址,因此将信号搜索号码加1。由于信号搜索号码达到2,因此参考进程C的信号处理程序表中与信号值2配对的信号处理程序的起始地址。由于对于信号2没有设定信号处理程序,因此将信号搜索号码加1。由于信号搜索号码达到3,这大于信号搜索号码的最大值,因此从信号处理程序存储单元1104中删除由进程C的标识符1和默认信号处理程序表C这一对形成的数据,然后结束系统调用2的处理。
(第四示例性实施例)
接下来,将参考图27,图28和图29描述本发明的第四示例性实施例。本示例性实施例对应于本发明的第四实现模式。
在本示例性实施例中,OS 1110以及进程D1和D2在可在程序控制下工作的计算机上工作。
OS 1110管理作为信号的信号0(信号值为0)、信号1(信号值为1)和信号2(信号值为2),并且与信号值成对地存储在每个进程的信号处理程序表中的是在生成这些信号时要执行的信号处理程序的起始地址,在生成信号时,将参考信号发送目的地进程的信号处理程序表,以获得与信号值配对的信号处理程序的起始地址,并且启动该信号处理程序。在OS 1110下,信号处理程序表可被多个进程(线程)所共享。OS 1110还具有使得能够针对每个进程设定安全级别的安全OS功能,其使得在本示例性实施例中安全级别能够被设定为“低”(非特权级别)和“高”(特权级别),并且在为“低”的进程的属性值被设定为1并且为“高”的进程的属性值被设定为3的情况下,被设定为具有安全级别“低”的进程的特权系统调用执行受限,而被设定为具有安全级别“高”的进程则对特权系统调用的执行没有限制。这样的OS例如是SE Linux或者可以是其他种类的OS。
另外,OS 1110具有信号处理程序改变单元4003、信号处理程序返回单元4004、信号处理程序获得单元4005、安全级别改变单元1114、安全级别返回单元1115、信号处理程序存储单元4002以及安全级别存储单元1105,并且还包括作为第一特定指令的用于调用信号处理程序改变单元4003的系统调用1、作为第二特定指令的用于调用信号处理程序返回单元4004的系统调用2、作为第三特定指令的用于调用信号处理程序获得单元4005的系统调用3、以及作为第四特定指令的用于调用安全级别返回单元1115的系统调用4。安全级别改变单元1114具有将进程的属性值改变成1(安全级别“低”)的功能。
进程D1和进程D2是同一程序的线程,并且共享信号处理程序表。进程D1和进程D2包括函数1125、信号处理程序钩子函数1126、信号处理程序Ds0、信号处理程序Ds1、以及信号处理程序Ds2。函数1125被设计为,在由函数本身执行的处理当中,在预先确定的特定处理执行区间的执行之前使得系统调用1在以信号处理程序钩子函数1126的起始地址作为参数的情况下被执行,并且在由函数本身执行的处理当中,在该特定处理执行区间的执行之后,使得系统调用2在以信号处理程序钩子函数1126的起始地址作为参数的情况下被执行。此外,紧挨函数1125的系统调用2之前,布置了一指令,用于将信号处理程序Ds1设定为信号1的信号处理程序。信号处理程序钩子函数1126在函数的顶部部分布置有将在以接收到的信号值作为参数的情况下执行的系统调用3,并且在函数的结尾部分布置有系统调用4。此外,紧接系统调用3之后布置了基于系统调用3获得的信号处理程序的起始地址来执行信号处理程序的指令。信号处理程序Ds0是当信号0被发送到进程D1或进程D2时要执行的信号处理程序。在进程D1和进程D2中,对于信号1和信号2没有设定信号处理程序。进程D1和进程D2的信号处理程序表在图28中以状态1示出。进程D1的标识符是1,进程D2的标识符是0,并且进程D1和进程D2的属性值是3(安全级别“高”)。
在这里假定进程D1和进程D2以图30所示的方式工作的情况下将描述本示例性实施例的操作。
首先,当进程D1调用函数1125,从而以信号处理程序钩子函数1126的起始地址作为参数来执行布置在该函数中的系统调用1时,信号处理程序改变单元4003将被调用。
由于进程D1与进程D2共享信号处理程序表,因此信号处理程序改变单元4003判定进程D2的标识符2是否被存储在信号处理程序存储单元4002中的进程标识符组中。在此示例中,由于在信号处理程序存储单元4002中没有存储包括标识符2的进程标识符组,因此以进程D1的标识符1作为进程标识符组,并且将其与进程D1的信号处理程序表作为一对来进行存储。存储在信号处理程序存储单元4002中的信号处理程序表将被称为默认信号处理程序表D。此时获得的默认信号处理程序表D具有图29所示的状态。
接下来,信号处理程序改变单元4003将信号搜索号码设定为初始值0。由于这里的OS管理具有信号值0至2的信号,因此信号搜索号码的最大值为2。然后,参考进程D1的信号处理程序表中与信号值0配对的信号处理程序的起始地址。由于信号值0与信号处理程序Ds0的首地址成对地存储,因此将该信号处理程序改变成信号处理程序钩子函数1126的起始地址。然后,将信号搜索号码加1。由于信号搜索号码达到1,因此参考进程D1的信号处理程序表中与信号值1配对的信号处理程序的起始地址。由于对于信号值1没有设定信号处理程序的起始地址,因此将信号搜索号码加1。由于信号搜索号码达到2,因此参考进程D1的信号处理程序表中与信号值2配对的信号处理程序的起始地址。由于对于信号值2没有设定信号处理程序,因此将信号搜索号码加1。信号搜索号码达到3,这大于信号搜索号码的最大值,从而结束系统调用1的处理。此时获得的由进程D1和进程D2共享的信号处理程序表的状态在图28中以状态2示出。
假定在进程D1中完成系统调用1的执行之后,进程D2将信号处理程序Ds2注册为信号2的信号处理程序(图28中的状态3),并调用函数1125。此时,函数1125中的系统调用2在进程D1中尚待执行。进程D2以信号处理程序钩子函数1126的起始地址作为参数来执行布置在该函数中的系统调用1。当系统调用1被执行时,信号处理程序改变单元4003将被调用。
由于进程D2与进程D1共享信号处理程序表,因此信号处理程序改变单元4003判定进程D1的标识符1是否被存储在信号处理程序存储单元4002中的进程标识符组中。由于在信号处理程序存储单元4002中,存在存储有标识符1的进程标识符组,因此将进程D2的标识符2添加到该进程标识符组。接下来,参考与该进程标识符组配对的默认信号处理程序表D。接下来,信号处理程序改变单元4003将信号搜索号码设定为初始值0。由于这里的OS管理信号值为0至2的信号,因此信号搜索号码的最大值为2。然后,参考进程D2的信号处理程序表中与信号值0配对的信号处理程序的起始地址。由于对于信号值0设定了信号处理程序钩子函数1126的首地址,因此将信号搜索号码加1。由于信号搜索号码达到1,因此参考进程D2的信号处理程序表中与信号值1配对的信号处理程序的起始地址。由于对于信号值1没有设定信号处理程序的起始地址,因此将信号搜索号码加1。由于信号搜索号码达到2,因此参考进程D2的信号处理程序表中与信号值2配对的信号处理程序的起始地址。由于对于信号值2存储了信号处理程序Ds2的首地址,因此将信号处理程序Ds2与默认信号处理程序D的信号值2作为一对来进行存储。然后,将进程D2的信号处理程序表中与信号值2配对的改变成信号处理程序钩子函数1126的首地址。然后,将信号搜索号码加1。信号搜索号码达到3,这大于信号搜索号码的最大值,从而结束系统调用1的处理。
此时由进程D1和进程D2共享的信号处理程序表在图28中以状态4示出。默认信号处理程序表D的内容在图29中以状态2示出。
这里假定进程D1接收到信号2。由于对于进程D1的信号2的信号处理程序设定了信号处理程序钩子函数1126,因此函数1125的执行被中断以执行信号处理程序钩子函数1126。然后,在信号处理程序钩子函数1126中,系统调用3在以接收到的信号2的信号值2为参数的情况下被执行。当系统调用3被执行时,信号处理程序获得单元4005将被调用。
参考与存储有进程D1的标识符1的进程标识符组配对的默认信号处理程序表D,信号处理程序获得单元4005从信号处理程序存储单元4002中获得与信号值2配对的信号处理程序Ds2的起始地址。然后,调用安全级别改变单元1114,等待接收安全级别改变完成信号。
安全级别改变单元1114将进程D1的标识符1和属性值3作为一对存储在安全级别存储单元1105中。然后,将进程D1的属性值改变成1,向信号处理程序获得单元4005发送安全级别改变完成信号。
在接收到安全级别改变完成信号后,信号处理程序获得单元4005把从信号处理程序存储单元4002获得的信号处理程序Ds2的起始地址传递给信号处理程序钩子函数1126,以结束系统调用3的处理。
基于通过系统调用3获得的信号处理程序Ds2的起始地址,信号处理程序钩子函数1126调用信号处理程序Ds2。在信号处理程序Ds2的执行完成后,信号处理程序钩子函数1126执行系统调用4。当系统调用4被执行时,安全级别返回单元1115将被调用。
安全级别返回单元1115参考安全级别存储单元1105,以获得与进程D1的标识符1配对的属性值3。接下来,删除安全级别存储单元1105中存储的由进程D1的标识符1和属性值3这一对形成的数据。然后,将进程D1的属性值改变成3,并结束系统调用4的处理。系统调用4的处理的结束引起了信号处理程序钩子函数1126的处理的结束。当信号处理程序钩子函数1126的处理结束时,函数1125的处理恢复。
假定在进程D1恢复函数1125的处理从而执行布置在该函数中的指令以将信号处理程序Ds1设定为信号1的信号处理程序之后(信号处理程序表进入图28中的状态5),系统调用2在以信号处理程序钩子函数1126的首地址作为参数的情况下被执行。此时,系统调用2在进程D2的函数1125中尚待执行。当系统调用2被执行时,信号处理程序返回单元4004将被调用。
信号处理程序返回单元4004参考信号处理程序存储单元4002以找出包括进程D1的标识符1的进程标识符组。在此情况下,在该进程标识符组中,除了标识符1外,还存在标识符2。接下来,参考与该进程标识符组配对的默认信号处理程序表D,信号处理程序返回单元4004将信号搜索号码设定为初始值0。由于这里的OS管理信号值为0至2的信号,因此信号搜索号码的最大值为2。然后,参考进程D1的信号处理程序表中与信号值0配对的信号处理程序的起始地址。由于对于信号值0设定了信号处理程序钩子函数1126的首地址,因此将信号搜索号码加1。由于信号搜索号码达到1,因此参考进程D1的信号处理程序表中与信号值1配对的信号处理程序的起始地址。由于对于信号值1没有设定信号处理程序Ds1的起始地址,因此将信号处理程序Ds1与默认信号处理程序D的信号值1作为一对来进行存储。然后,将信号搜索号码加1。由于信号搜索号码达到2,因此参考进程D1的信号处理程序表中与信号值2配对的信号处理程序的起始地址。由于对于信号2设定了信号处理程序钩子函数1126的首地址,因此将信号搜索号码加1。由于信号搜索号码达到3,这大于信号搜索号码的最大值,因此从信号处理程序存储单元4002中的包括进程D1的标识符的进程标识符组中删除标识符1,从而结束系统调用2的处理。此时由进程D1和进程D2共享的信号处理程序表在图28中以状态6示出。默认信号处理程序表D的内容在图29中以状态3示出。
接下来,假定在进程D2恢复函数1125的处理从而执行布置在该函数中的指令以将信号处理程序Ds1设定为信号1的信号处理程序之后(信号处理程序表进入图28中的状态5),系统调用2在以信号处理程序钩子函数1126的首地址作为参数的情况下被执行。当系统调用2被执行时,信号处理程序返回单元4004将被调用。
信号处理程序返回单元4004参考信号处理程序存储单元4002以找出信号处理程序存储单元4002中的包括进程D1的标识符1的进程标识符组。在此情况下,在该进程标识符组中,除了标识符2外没有其他标识符。信号处理程序返回单元4004获得与包括进程D2的标识符2的进程标识符组配对的默认信号处理程序表D。接下来,信号处理程序改变单元4003将信号搜索号码设定为初始值0。由于这里的OS管理信号值为0至2的信号,因此信号搜索号码的最大值为2。参考进程D2的信号处理程序表中与信号值0配对的信号处理程序的起始地址。由于信号值0与信号处理程序钩子函数1126的首地址被成对地存储,因此将该信号处理程序改变成默认信号处理程序表D中与信号值0配对的信号处理程序Ds0。然后,将信号搜索号码加1。由于信号搜索号码达到1,因此参考进程D2的信号处理程序表中与信号值1配对的信号处理程序的起始地址。由于对于信号值1设定了信号处理程序Ds1的起始地址,因此将信号搜索号码加1。由于信号搜索号码达到2,因此参考进程D2的信号处理程序表中与信号值2配对的信号处理程序的起始地址。由于信号2与信号处理程序钩子函数1126的首地址被成对地存储,因此将该信号处理程序改变成默认信号处理程序表D中与信号值2配对的信号处理程序Ds2。然后,将信号搜索号码加1。由于信号搜索号码达到3,这大于信号搜索号码的最大值,因此删除信号处理程序存储单元4002中由存储有进程2的标识符2的进程标识符组和默认信号处理程序表D这一对形成的数据,结束系统调用2的处理。
当在从进程D1执行系统调用2的时间点到进程D2执行系统调用2的时间点之间的区间中信号2被进程D1接收到时,在本示例性实施例中进程D1的属性值被改变成非特权级别以执行信号处理程序Ds2。此外,像以上描述的第四实现模式的修改例中那样,在安全级别改变单元1114检查进程D1的标识符是否被包括在信号处理程序存储单元4002中的任何进程标识符组中并且仅当包括时才改变进程D1的属性值否则就不改变属性值的示例性实施例中,当在从进程D1执行系统调用2的时间点到进程D2执行系统调用2的时间点之间的区间中信号2被进程D1接收到时,信号处理程序Ds2在进程D1的属性值被保持在特权级别的情况下被执行。
在本发明的实现模式中,当进程调用包括第一特定指令和第二特定指令的函数时,第一特定指令被执行,从而在函数应当保证处理的处理区间之前导致内部中断。在与该内部中断有关的处理中,信号处理程序改变单元将进程的信号处理程序表与进程的标识符作为一对存储(保存)在信号处理程序存储单元中。然后,信号处理程序改变单元参考进程的信号处理程序表,以将进程的信号处理程序表处设定的信号处理程序改变成信号处理程序钩子函数。然后,当设定了信号处理程序钩子函数的那种信号在执行第一特定指令的函数的处理期间被生成时,信号处理程序钩子函数将被调用。在信号处理程序钩子函数中,第三特定指令被执行,从而生成内部中断。在与该内部中断有关的处理中,信号处理程序获得单元参考信号处理程序存储单元中存储的与进程的标识符配对的信号处理程序表,以从所参考的信号处理程序表中获得与进程接收到的那种信号配对的信号处理程序。然后,信号处理程序获得单元调用安全级别改变单元。安全级别改变单元改变进程的属性值,以将进程的安全级别改变为不允许执行特权指令。当进程的安全级别被改变时,信号处理程序获得单元把从信号处理程序存储单元获得的信号处理程序返回到信号处理程序钩子函数。信号处理程序钩子函数执行所获得的信号处理程序。当在该信号处理程序中执行特权指令时,发生内部中断,从而使得特权指令执行控制单元根据进程的属性值来判定是否执行特权指令。由于进程的属性值在这里被安全级别改变单元所改变,因此特权指令将不被执行,从而具有差错。然后,当信号处理程序的处理结束时,在信号处理程序钩子函数中将执行第四特定指令,以生成内部中断。在与该内部中断有关的处理中,进程的属性值被安全级别返回单元改变以将进程的安全级别返回到安全级别改变单元进行改变之前的状态。然后,信号处理程序钩子函数的处理结束,从而再次继续包括第一特定指令和第二特定指令的函数的处理,并且执行第二特定指令,从而发生内部中断。在与该内部中断有关的处理中,信号处理程序返回单元参考进程的信号处理程序表。然后,当信号处理程序表中设定的信号处理程序是信号处理程序钩子函数时,参考信号处理程序存储单元以从信号处理程序表中获得与进程配对的信号处理程序,并将进程的信号处理程序改变成在设定在信号处理程序钩子函数之前的信号处理程序。以上就实现了目的。
虽然已经参考本发明的示例性实施例具体示出和描述了本发明,但是本发明并不限于这些实施例。本领域的普通技术人员将会理解,在不脱离由权利要求限定的本发明的精神和范围的情况下,可对其进行形式和细节上的各种改变。
通过引用并入
本申请基于2007年2月22日提交的日本专利申请No.2007-041711并要求其优先权,该申请的公开内容通过引用被全部并入在此。
工作应用性
本发明可应用于诸如以下用途:由信息处理装置安全地执行包括可靠性未知的信号处理程序的处理的进程。这里的信息处理装置可应用到很多种装置,例如个人计算机、诸如蜂窝电话或PDA之类的移动通信终端的内置式计算机、游戏机、以及多功能复印机。

Claims (18)

1.一种在OS的控制下执行进程的信息处理装置,其中,所述信息处理装置在存储装置中容纳着:用于在正常执行可能受到信号处理程序的非预期处理的阻碍的处理区间的执行之前执行第一特定指令并且在所述处理区间的执行之后立即执行第二特定指令的函数,用于执行第三特定指令、执行在由该第三特定指令获得的地址处开始的信号处理程序、并且在该信号处理程序的执行之后执行第四特定指令的信号处理程序钩子函数,所述信号处理程序,进程的属性值,进程的信号处理程序表,并且将用于保存进程的属性值和信号处理程序表这一对的信号处理程序存储单元包括在所述存储装置中,所述信息处理装置包括:
信号处理程序改变单元,用于在所述进程执行所述第一特定指令时,将所述进程的标识符和所述信号处理程序表这一对保存到所述信号处理程序存储单元中,将所述进程的信号处理程序表处设定的信号处理程序改变成所述信号处理程序钩子函数;
信号处理单元,用于参考所述信号处理程序表确定与在所述进程的执行期间接收到的信号相对应的信号处理程序,并且当所确定的信号处理程序是所述信号处理程序钩子函数时,调用所述信号处理程序钩子函数;
信号处理程序获得单元,用于在所述进程执行所述信号处理程序钩子函数的所述第三特定指令时,参考所述信号处理程序存储单元,获得与所述进程的标识符和在所述进程处所接收到的信号的种类相配对的信号处理程序;
安全级别改变单元,用于在所述信号处理程序获得单元获取信号处理程序之后改变所述进程的属性值;
安全级别返回单元,用于当所述进程在所述信号处理程序钩子函数中执行在所述信号处理程序获得单元中获得的信号处理程序之后执行所述第四特定指令时,将所述进程的属性值改变成改变之前的属性值;以及
信号处理程序返回单元,用于在所述进程执行所述函数的所述第二特定指令时,将所述进程的信号处理程序表处设定的所述信号处理程序钩子 函数返回到被保存在所述信号处理程序存储单元中的、所述信号处理程序钩子函数的设定之前的信号处理程序。
2.一种在OS的控制下执行进程的信息处理装置,其中,所述信息处理装置在存储装置中容纳着:用于在正常执行可能受到信号处理程序的非预期处理的阻碍的处理区间的执行之前执行第一特定指令并且在所述处理区间的执行之后执行第二特定指令的函数,用于执行第三特定指令、执行在由该第三特定指令获得的地址处开始的信号处理程序、并且在该信号处理程序的执行之后执行第四特定指令的信号处理程序钩子函数,所述信号处理程序,进程的属性值,由多个进程共享的信号处理程序表,并且将用于保存包括进程的标识符的进程标识符组和信号处理程序表这一对的信号处理程序存储单元包括在所述存储装置中,所述信息处理设备包括:
信号处理程序改变单元,用于在共享所述信号处理程序表的多个进程当中的特定进程执行所述第一特定指令时,在所述信号处理程序存储单元中没有存储包括其他进程的标识符的进程标识符组的情况下,在将包括所述特定进程的标识符的进程标识符组和所述信号处理程序表这一对保存到所述信号处理程序存储单元中之后,将所述信号处理程序表处设定的信号处理程序改变成所述信号处理程序钩子函数,并且在所述信号处理程序存储单元中存储有包括所述其他进程的标识符的进程标识符组的情况下,将所述特定进程的标识符添加到包括所述其他进程的标识符的进程标识符组,以及将所述信号处理程序表处设定的信号处理程序添加到所述信号处理程序存储单元中的与添加后的进程标识符组相配对的信号处理程序表,然后将所述信号处理程序表处设定的信号处理程序改变成所述信号处理程序钩子函数;
信号处理单元,用于参考所述信号处理程序表确定与在所述进程的执行期间接收到的信号相对应的信号处理程序,并且当所确定的信号处理程序是所述信号处理程序钩子函数时,调用所述信号处理程序钩子函数;
信号处理程序获得单元,用于在所述进程执行所述信号处理程序钩子函数的所述第三特定指令时,参考所述信号处理程序存储单元,获得与所述进程的标识符和所述进程所接收到的信号的种类相配对的信号处理程 序;
安全级别改变单元,用于在所述信号处理程序获得单元获取信号处理程序之后改变所述进程的属性值;以及
信号处理程序返回单元,用于在所述特定进程执行所述第二特定指令时,在所述信号处理程序存储单元中没有存储包括所述其他进程的标识符的进程标识符组的情况下,将所述特定进程的信号处理程序表中设定了所述信号处理程序钩子函数的信号处理程序返回到保存在所述信号处理程序存储单元中的、在所述信号处理程序钩子函数的设定之前的信号处理程序,从所述信号处理程序存储单元中删除包括所述特定进程的标识符的进程标识符组和所述信号处理程序表这一对的数据,并且在所述信号处理程序存储单元中存储有包括所述其他进程的标识符的进程标识符组的情况下,将所述特定进程的信号处理程序表处设定的信号处理程序添加到所述信号处理程序存储单元中的与所述进程标识符组相配对的信号处理程序表,并从所述进程标识符组中删除所述特定进程的标识符。
3.根据权利要求2所述的信息处理装置,其中,所述安全级别改变单元仅当属性值要被改变的进程的标识符被包括在所述信号处理程序存储单元中的进程标识符组中时才改变该进程的属性值。
4.根据权利要求3所述的信息处理装置,其中,所述安全级别返回单元仅当属性值要被返回的进程的标识符被包括在所述信号处理程序存储单元中的进程标识符组中时才改变该进程的属性值。
5.根据权利要求1或权利要求2所述的信息处理装置,其中,所述属性值是指示出所述进程的安全级别的属性值。
6.根据权利要求1或权利要求2所述的信息处理装置,其中
所述属性值是指示出所述进程的安全级别的属性值,并且所述信息处理装置包括
特权指令执行控制单元,用于基于所述进程的安全级别来检查授权,并且在存在执行特权指令的授权时,执行所述特权指令。
7.根据权利要求1所述的信息处理装置,包括
安全级别改变规则存储单元,用于容纳改变所述属性值的规则,其中 
所述安全级别改变单元基于所述安全级别改变规则存储单元中存储的规则来改变所述属性值。
8.根据权利要求7所述的信息处理装置,其中
在所述安全级别改变规则存储单元中,存储有所述属性值改变之前的属性值和改变之后的属性值这一对,并且
所述安全级别改变单元将所述进程的属性值改变成与改变之前的属性值相配对的改变之后的属性值,所述改变之前的属性值等同于存储在所述安全级别改变规则存储单元中的所述进程的属性值。
9.根据权利要求7所述的信息处理装置,其中
在所述安全级别改变规则存储单元中,存储有信号的值和属性值这一对,并且
所述安全级别改变单元将所述进程的属性值改变成与存储在所述安全级别改变规则存储单元中的由所述进程接收到的信号的值相配对的属性值。
10.一种由信息处理装置在OS的控制下执行进程的信息处理方法,其中,所述信息处理装置在存储装置中容纳着:用于在正常执行可能受到信号处理程序的非预期处理的阻碍的处理区间的执行之前执行第一特定指令并且在所述处理区间的执行之后立即执行第二特定指令的函数,用于执行第三特定指令、执行在由该第三特定指令获得的地址处开始的信号处理程序、并且在该信号处理程序的执行之后执行第四特定指令的信号处理程序钩子函数,所述信号处理程序,进程的属性值,进程的信号处理程序表,并且将用于保存进程的属性值和信号处理程序表这一对的信号处理程序存储单元包括在所述存储装置中,所述方法包括:
信号处理程序改变步骤,在所述进程执行所述第一特定指令时,将所述进程的标识符和所述信号处理程序表这一对保存到所述信号处理程序存储单元中,将所述进程的信号处理程序表处设定的信号处理程序改变成所述信号处理程序钩子函数;
信号处理步骤,参考所述信号处理程序表确定与在所述进程的执行期间接收到的信号相对应的信号处理程序,并且当所确定的信号处理程序是 所述信号处理程序钩子函数时,调用所述信号处理程序钩子函数;
信号处理程序获得步骤,在所述进程执行所述信号处理程序钩子函数的所述第三特定指令时,参考所述信号处理程序存储单元,获得与所述进程的标识符和在所述进程处接收到的信号的种类相配对的信号处理程序;
安全级别改变步骤,在所述信号处理程序获得步骤中获取信号处理程序之后改变所述进程的属性值;
安全级别返回步骤,当所述进程在所述信号处理程序钩子函数中执行在所述信号处理程序获得步骤中获得的信号处理程序之后执行所述第四特定指令时,将所述进程的属性值改变成改变之前的属性值;以及
信号处理程序返回步骤,在所述进程执行所述函数的所述第二特定指令时,将所述进程的信号处理程序表处设定的所述信号处理程序钩子函数返回到被保存在所述信号处理程序存储单元中的、所述信号处理程序钩子函数的设定之前的信号处理程序。
11.一种由信息处理装置在OS的控制下执行进程的信息处理方法,其中,所述信息处理装置在存储装置中容纳着:用于在正常执行可能受到信号处理程序的非预期处理的阻碍的处理区间的执行之前执行第一特定指令并且在所述处理区间的执行之后立即执行第二特定指令的函数,用于执行第三特定指令、执行在由该第三特定指令获得的地址处开始的信号处理程序、并且在该信号处理程序的执行之后执行第四特定指令的信号处理程序钩子函数,所述信号处理程序,进程的属性值,由多个进程共享的信号处理程序表,并且将用于保存包括进程的标识符的进程标识符组和信号处理程序表这一对的信号处理程序存储单元包括在所述存储装置中,所述方法包括:
信号处理程序改变步骤,在共享所述信号处理程序表的多个进程当中的特定进程执行所述第一特定指令时,在所述信号处理程序存储单元中没有存储包括其他进程的标识符的进程标识符组的情况下,在将包括所述特定进程的标识符的进程标识符组和所述信号处理程序表这一对保存到所述信号处理程序存储单元中之后,将所述信号处理程序表处设定的信号处理程序改变成所述信号处理程序钩子函数,并且在所述信号处理程序存储单 元中存储有包括所述其他进程的标识符的进程标识符组的情况下,将所述特定进程的标识符添加到包括所述其他进程的标识符的进程标识符组,以及将所述信号处理程序表处设定的信号处理程序添加到所述信号处理程序存储单元中的与添加后的进程标识符组相配对的信号处理程序表,然后将所述信号处理程序表处设定的信号处理程序改变成所述信号处理程序钩子函数;
信号处理步骤,参考所述信号处理程序表确定与在所述进程的执行期间接收到的信号相对应的信号处理程序,并且当所确定的信号处理程序是所述信号处理程序钩子函数时,调用所述信号处理程序钩子函数;
信号处理程序获得步骤,在所述进程执行所述信号处理程序钩子函数的所述第三特定指令时,参考所述信号处理程序存储单元,获得与所述进程的标识符和所述进程所接收到的信号的种类相配对的信号处理程序;
安全级别改变步骤,在所述信号处理程序获得步骤中获取信号处理程序之后改变所述进程的属性值;以及
信号处理程序返回步骤,在所述特定进程执行所述第二特定指令时,在所述信号处理程序存储单元中没有存储包括所述其他进程的标识符的进程标识符组的情况下,在将所述特定进程的信号处理程序表中设定了所述信号处理程序钩子函数的信号处理程序返回到保存在所述信号处理程序存储单元中的、在所述信号处理程序钩子函数的设定之前的信号处理程序之后,从所述信号处理程序存储单元中删除包括所述特定进程的标识符的进程标识符组和所述信号处理程序表这一对的数据,并且在所述信号处理程序存储单元中存储有包括所述其他进程的标识符的进程标识符组的情况下,将所述特定进程的信号处理程序表处设定的信号处理程序添加到所述信号处理程序存储单元中的与所述进程标识符组相配对的信号处理程序表,并从所述进程标识符组中删除所述特定进程的标识符。
12.根据权利要求11所述的信息处理方法,其中,在所述安全级别改变步骤中,仅当属性值要被改变的进程的标识符被包括在所述信号处理程序存储单元中的进程标识符组中时,该进程的属性值才被改变。
13.根据权利要求12所述的信息处理方法,其中,在所述安全级别改 变步骤中,仅当属性值要被返回的进程的标识符被包括在所述信号处理程序存储单元中的进程标识符组中时,该进程的属性值才被改变。
14.根据权利要求10或权利要求11所述的信息处理方法,其中,所述属性值是指示出所述进程的安全级别的属性值。
15.根据权利要求10或权利要求11所述的信息处理方法,其中
所述属性值是指示出所述进程的安全级别的属性值,并且所述信息处理方法包括
特权指令执行控制步骤,基于所述进程的安全级别来检查授权,并且在存在执行特权指令的授权时,执行所述特权指令。
16.根据权利要求10所述的信息处理方法,其中,所述信息处理装置包括安全级别改变规则存储单元,用于容纳改变所述属性值的规则,其中
在所述安全级别改变步骤中,所述属性值基于所述安全级别改变规则存储单元中存储的规则被改变。
17.根据权利要求16所述的信息处理方法,其中
在所述安全级别改变规则存储单元中,存储有所述属性值改变之前的属性值和改变之后的属性值这一对,并且
在所述安全级别改变步骤中,所述进程的属性值被改变成与改变之前的属性值相配对的改变之后的属性值,所述改变之前的属性值等同于存储在所述安全级别改变规则存储单元中的所述进程的属性值。
18.根据权利要求16所述的信息处理方法,其中
在所述安全级别改变规则存储单元中,存储有信号的值和属性值这一对,并且
在所述安全级别改变步骤中,所述进程的属性值被改变成与存储在所述安全级别改变规则存储单元中的由所述进程接收到的信号的值相配对的属性值。 
CN2008800059436A 2007-02-22 2008-02-22 信息处理装置、信息处理方法和程序 Expired - Fee Related CN101617322B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP041711/2007 2007-02-22
JP2007041711 2007-02-22
PCT/JP2008/053070 WO2008111382A1 (ja) 2007-02-22 2008-02-22 情報処理装置、情報処理方法およびプログラム

Publications (2)

Publication Number Publication Date
CN101617322A CN101617322A (zh) 2009-12-30
CN101617322B true CN101617322B (zh) 2013-01-02

Family

ID=39759324

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008800059436A Expired - Fee Related CN101617322B (zh) 2007-02-22 2008-02-22 信息处理装置、信息处理方法和程序

Country Status (4)

Country Link
US (1) US20100325733A1 (zh)
JP (1) JP5067723B2 (zh)
CN (1) CN101617322B (zh)
WO (1) WO2008111382A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101873640B (zh) * 2010-05-27 2013-04-24 华为终端有限公司 流量处理方法、装置和移动终端
US8429744B1 (en) * 2010-12-15 2013-04-23 Symantec Corporation Systems and methods for detecting malformed arguments in a function by hooking a generic object
DE102011005209B4 (de) 2011-03-07 2016-06-23 Infineon Technologies Ag Programmanweisungsgesteuerte Instruktionsflusskontrolle
US8844032B2 (en) * 2012-03-02 2014-09-23 Sri International Method and system for application-based policy monitoring and enforcement on a mobile device
EP2869145B1 (de) * 2013-10-29 2016-04-27 dSPACE digital signal processing and control engineering GmbH Verfahren zur Beeinflussung eines Steuerprogramms eines Steuergerätes

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6823460B1 (en) * 1999-11-14 2004-11-23 Networks Associates Technology, Inc. Method and system for intercepting an application program interface

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999023538A1 (en) * 1997-10-28 1999-05-14 Georgia Tech Research Corporation Adaptive data security system and method
JP2004094837A (ja) * 2002-09-04 2004-03-25 Hitachi Ltd 状態遷移制御方法
JPWO2006059639A1 (ja) * 2004-11-30 2008-06-05 日本電気株式会社 情報共有システム、情報共有方法、グループ管理プログラム及びコンパートメント管理プログラム
JPWO2007040228A1 (ja) * 2005-10-04 2009-04-16 日本電気株式会社 情報処理装置、情報処理方法およびプログラム
US7962911B2 (en) * 2007-02-02 2011-06-14 International Business Machines Corporation Method and apparatus for preventing undesired termination of a process in an information handling system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6823460B1 (en) * 1999-11-14 2004-11-23 Networks Associates Technology, Inc. Method and system for intercepting an application program interface

Also Published As

Publication number Publication date
US20100325733A1 (en) 2010-12-23
WO2008111382A1 (ja) 2008-09-18
JP5067723B2 (ja) 2012-11-07
CN101617322A (zh) 2009-12-30
JPWO2008111382A1 (ja) 2010-06-24

Similar Documents

Publication Publication Date Title
US9727380B2 (en) Global register protection in a multi-threaded processor
US8645923B1 (en) Enforcing expected control flow in program execution
US9990490B2 (en) Generic privilege escalation prevention
US20150089652A1 (en) Methods of detection of software exploitation
CN110363004B (zh) 一种代码漏洞检测方法、装置、介质及设备
US10346199B2 (en) Handling exceptions related to corrupt application state
CN101617322B (zh) 信息处理装置、信息处理方法和程序
CN108898012B (zh) 检测非法程序的方法和装置
CN105095763B (zh) 漏洞防御方法及装置、电子设备
CN105404559A (zh) 在数据处理装置中进行除错
US10929536B2 (en) Detecting malware based on address ranges
CN113836529A (zh) 进程检测方法、装置、存储介质以及计算机设备
CN112231198B (zh) 一种恶意进程调试方法、装置、电子设备及介质
US20240303205A1 (en) Error Management In System On A Chip With Securely Partitioned Memory Space
CN114547676A (zh) 应用程序页面的权限控制方法及装置
CN109388441B (zh) 处理方法、装置、电子设备及可读存储介质
CN112685744B (zh) 一种利用栈相关寄存器检测软件漏洞的方法及装置
CN113407940B (zh) 脚本检测方法、装置、存储介质以及计算机设备
US8176567B2 (en) Apparatus and method to limit access to selected sub-program in a software system
US11074200B2 (en) Use-after-free exploit prevention architecture
CN105631317A (zh) 一种系统调用方法及装置
KR101684933B1 (ko) 파일 송신 차단 방법 및 그 기능이 구비된 컴퓨팅 장치
CN109327521B (zh) 一种网络通讯的方法及装置
CN116257293A (zh) 一种接口权限控制方法、装置及电子设备
US20150047015A1 (en) Access control for hardware units

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130102

Termination date: 20160222