CN1975678A - 执行程序的信息处理设备、计算机可读介质和程序控制方法 - Google Patents
执行程序的信息处理设备、计算机可读介质和程序控制方法 Download PDFInfo
- Publication number
- CN1975678A CN1975678A CNA2006101635322A CN200610163532A CN1975678A CN 1975678 A CN1975678 A CN 1975678A CN A2006101635322 A CNA2006101635322 A CN A2006101635322A CN 200610163532 A CN200610163532 A CN 200610163532A CN 1975678 A CN1975678 A CN 1975678A
- Authority
- CN
- China
- Prior art keywords
- program
- address
- homophony
- destination address
- legal
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000010365 information processing Effects 0.000 title 1
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 43
- 230000008859 change Effects 0.000 claims description 6
- 238000004321 preservation Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 27
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 2
- 238000010521 absorption reaction Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
提供一种信息处理设备,包括子进程部分,其执行包括根据主调程序的调用而执行的处理和将处理结果返回主调程序的返回处理的子进程;地址获取处理部分,其获取子进程部分执行子进程时访问的访问目的地址,访问目的地址被分配给主调程序的一个存储区;判断处理部分,其根据所获取的存储信息判断主调程序是否合法;以及终止处理部分,如果判断结果为主调程序不合法,则终止子进程的执行。
Description
技术领域
本发明涉及响应于主程序的调用而执行预定处理,并将处理结果返回主程序的子程序。
背景技术
通常有一种公知的子程序,诸如插件程序,其响应于主程序的调用执行预定处理,并将处理结果返回主程序。
从子程序返回主程序的处理结果包括这种如果在未授权方式下使用可能引发问题的数据,诸如与使用限制有关的访问权信息,未公开的信息或解密密钥。
当这种具有高度机密性的数据从子程序输送到主程序时,存在一种已知的会使主程序遭受电子欺骗的攻击。作为这样一种攻击,存在伪造主程序本身的攻击,或者侵入主程序与子程序之间从而吸取(sniff)或者伪造它们之间的数据交换。
日本专利未审公开No.2005-166051披露了一种通过API钩子引擎防止对API(应用程序接口)的未授权访问的技术,其中该API钩子引擎通过API将调用钩住,并根据所调用的API预计的处理或者API所执行的处理种类确定继续还是终止通过该API的处理。
日本专利未审公开No.2005-166051中所描述的API钩子引擎根据所调用的API的种类来判断是继续还是终止所调用API的处理。不过,如果所调用的API的种类是允许的,则API钩子引擎使得API的处理继续。从而,如果受到电子欺骗的主程序调用一个被允许的API,则API钩子引擎允许该调用。从而,根据日本专利未审公开No1.2005-166051中所述的技术,机密信息有可能通过允许种类的API流出到被电子欺骗的主程序。
本发明意在针对响应于主调程序的调用执行预定处理并将处理结果返回主调程序的子程序,加强处理结果的安全性。
发明内容
根据本发明一个方面,提供一种信息处理设备,包括子进程部分,执行包括响应于主调程序的调用而执行的处理和将处理结果返回主调程序的返回处理的子进程;地址获取处理部分,其获取子进程部分执行子进程时访问的访问目的地址,访问目的地址被分配给主调程序的一个存储区;判断处理部分,其根据所获取的存储信息判断主调程序是否合法;以及终止处理部分,如果判断结果为主调程序不合法,则终止子进程的执行。
根据本发明另一方面,判断处理部分根据所获得的访问目的地址获取有关主调程序所使用的存储区的存储信息,并根据存储信息判断主调程序是否为合法的主调程序。
根据本发明另一方面,判断处理部分根据所获得的访问目的地址获得有关主调程序的属性信息,并通过将该属性信息与关于合法主调程序的属性信息进行比较,判断主调程序是否为合法的主调程序。
此外,根据本发明另一方面,判断处理部分通过比较所获得的访问目的地址与合法主调程序的最初访问目的地址,判断主调程序是否为合法的主调程序。在此情形中,通过查阅登记了一组合法主调程序的原始访问目的地址的地址列表,判断主调程序是否为合法的主调程序。
此外,根据本发明另一方面,判断处理部分根据所获得的访问目的地址来获得保存主调程序的存储区的起始地址,比较所获得的起始地址与预先登记的合法主调程序的起始地址,在存在差别的情况下确定差别,根据所述差别校正所获得的访问目的地址,并根据经过校正的访问目的地址判断主调程序是否为合法的主调程序。
根据本发明另一方面,判断处理部分从存储器获取存储在预定地址范围内待判断的数据,该预定地址范围位为以所获得的访问目的地址作为参考指定的,通过将待判断的数据与以合法主调程序的原始访问目的地址作为参考所指定的预定地址范围内所存储的数据进行比较,判断主调程序是否为合法的主调程序。
此外,根据本发明另一方面,判断处理部分从存储器获得存储在预定地址范围内的待判断的数据,所述预定范围是以所获得的访问目的地址为参考指定出的,计算该数据的哈希(hash)值,并通过将待判断的数据与以合法主调程序的原始访问目的地址为参考所指定的预定地址范围内所存储的数据确定的哈希值进行比较,判断主调程序是否为合法的主调程序。
此外,根据本发明另一方面,判断处理部分根据所获得的访问目的地址获得存储主调程序的存储区的起始地址,比较所获得的起始地址与预先登记的合法主调程序的起始地址,如果存在差别则确定差别,根据所述差别校正待判断的数据,并通过比较经过校正的待判断数据与所存储的数据,判断主调程序是否为合法的主调程序。
此外,根据本发明另一方面,访问目的地址为在子进程的一系列处理结束之后,子进程部分将要访问的返回目的地址。
此外,根据本发明另一方面,访问目的地址为主调程序调用子程序时所述主调程序发出的参数所指示的地址。该地址可以为主调程序指定为回调目的的回调地址。
根据本发明一个方面,对于响应于主调程序的调用而执行处理并将处理结果返回主调程序的程序,可加强处理结果的安全性。
附图说明
将基于下面的附图详细描述本发明的实施例,其中:
图1表示一个实施例及第一到第三变型例中信息处理设备的功能框图;
图2为该信息处理设备所具有的硬盘的原理图;
图3为在主存储器中构成的地址空间的示意图;
图4所示的流程图表示在所述实施例中,当主调程序调用子程序时所执行的子程序的过程;
图5所示的流程图表示在第一变型例中,当主调程序调用子程序时子程序的执行过程;
图6所示的流程图表示当子程序检验是否已经执行重新分配时子程序的执行过程;以及
图7所示的流程图表示在第二变型例中,当主调程序调用子程序时子程序的执行过程。
具体实施方式
下面将参照附图描述用于实施本发明的优选实施例(下面称之为实施例)。
图1表示根据该示例性实施例的信息处理设备的功能框图。在图1中,CPU10为对整个信息处理设备进行控制的中央处理部件。硬盘20为辅助存储装置,其保存在信息处理设备上运行的程序。主存储器30为主存储装置,当某一程序在信息处理设备上执行时其临时保存该程序。
当某一程序在按如上所述配置的信息处理设备上执行时,CPU10首先从硬盘20获得指定的程序,并将其加载到主存储器30中。此外,CPU10从主存储器30取出程序中所述的处理命令,并对命令的内容进行解码。从而,信息处理设备能够执行该程序。
在本实施例中,至少主程序22和子程序24被保存在硬盘20中,如图2中所示。
主程序22为在信息处理设备上执行特定处理的主软件,例如,为应用程序。例如,字处理软件,电子制表软件,文档浏览软件,图像编辑软件,数据库软件,演示文稿软件,游戏软件,网络浏览器,电子邮件软件等均可作为该应用程序。公司中使用的会计软件,人事管理软件和存货管理软件也为各种应用程序。
子程序24是独立于主程序22的软件,并且作为允许第三方等随后将其自己的功能增加到主程序22中而不改变主程序22的辅助程序。子程序24由主程序22调用,执行预定的处理并将处理结果返回主程序22。下面将子程序24根据主程序22的调用所执行的一系列处理称作“子进程”。将调用该子程序的主程序称作“主调程序”,将该子程序被称作“被调程序”。
子程序24为例如所谓的插件程序。当主程序22在Windows(注册商标)、一个基本的OS(操作系统)上运行时,常常由DLL(动态链接库)来实现子程序24。
图3示意地表示子程序24在被主程序22调用时主存储器30的地址空间。如图3中所示,主存储器30上构成的地址空间被根据用途分成某些区域。在本实施例中,构成用于存储主程序22的程序数据的主程序区M10,用于存储子程序24的程序数据的子程序区M12和用于存储多个变量数据的堆栈区M14。在堆栈区M14中,存储在本实施例中具有重要作用的“返回目的地址”等。返回目的地址为子程序24执行预定处理之后操作返回主程序22时,执行控制从子程序24移出的地址。该地址是分配给主程序区M10的地址。
用于开发诸如插件程序的子程序的开发工具(SDK:软件开发工具包),常常是公开的,从而可由第三方自由地向主程序添加功能。常常是,诸如插件程序的子程序可由除相应主程序之外的程序调用。在此情形中,可相对较易于创建用于监测或改变主程序与子程序之间交换的数据的模块。尽管诸如插件程序的高度灵活的子程序是非常有用的,不过,当子程序为提供安全功能的模块时,有可能会引发安全问题。
例如,假设子程序为仅当子程序被授权用户调用时才提供对加密内容进行解密以便能够使用该内容的功能。在有些情形中,这种子程序响应于主调程序的调用而执行对用户权利的验证处理,并且如果验证成功,则将用于对内容进行解密的密钥发送给主调程序。或者,存在这样的情形:即,子程序24将关于加密内容的权利信息,诸如“仅浏览”,“可编辑”和“可打印”,发送给主调程序,主调程序基于得到的权利信息对内容进行安全控制。
在由子程序提供上述安全功能的情况下,有可能执行未经授权的访问,诸如未经授权地获取用于对加密内容进行解密的密钥,或者如上所述利用工具监测或改变主程序与子程序之间交换的数据、而纂改关于内容的权利信息。
已知有一种关于验证功能的技术,其中,为了防止发生这种未经授权的访问,主程序通过确认数字签名等来验证其调用的子程序,并且仅当验证成功时才使所调用的子程序继续处理。
不过,即使主程序提供这种验证功能,也不可能保护主程序与子程序之间交换的数据,这是因为子程序无法验证主程序。
因此,在本实施例中,通过确认子程序24是否由正确的主程序22直接调用来保护主程序22与子程序24之间所交换的数据。
现在,将参照图4中所示的流程图针对主调程序调用子程序24时子程序24根据本实施例执行的过程进行描述。
首先,当从主调程序接收到调用时,子程序24从主存储器30的堆栈区M14获得返回目的地址(S100)。
表示返回目的地址存储位置的存储地址,由作为主程序22执行环境的OS或者用于编译主程序22的编译器的技术规范预先指定。例如,在子程序24被调用时,存储地址为堆栈区M14的顶部地址。根据计算机体系结构,返回目的地址可以不保存在堆栈区M14中,而保存在特定寄存器中。
当主程序22调用子程序24时,将表示返回目的地址的数据存储在堆栈区M14的顶部地址处。从而,子程序24可通过访问预定的地址获得返回目的地址。
在获得返回目的地址之后,子程序24获得关于包括返回目的地址的存储区的存储信息(下面称作“主调程序存储区”)(S102)。关于主调程序存储区的就绪状态或主调程序存储区的顶部地址的信息可作为存储信息。例如,在Windows(注册商标)的情形中,可使用VirtualQuery函数获得存储信息。更具体而言,通过将返回目的地址,保存待获取的存储信息的缓冲区的起始地址,以及缓冲区的数据尺寸示出作为VirtualQuery函数的参数,并访问OS,子程序24可从OS获得包括返回目的地址在内的存储区的存储信息。
然后,子程序24通过查阅所获得的存储信息和为存储区设定的标志来判断是否主调程序存储区是可执行的(S104)。作为判断结果,如果判断结果为所述的标志表示不可执行(步骤S104处判断结果为:否“N”),则子程序24判断其有可能被伪装成合法主程序的虚假程序调用,并终止子进程(S106)。
另一方面,如果判断结果为所述的标志表示可执行(步骤S104处判断结果为:是“Y”),则子程序24通过参考所获得的存储信息来获得主调程序存储区的起始地址(S108),然后基于起始地址获得有关主调程序的属性信息(S110)。接下来,子程序24根据所获得的属性信息验证主调程序是否为合法的主程序22(S112)。例如,可通过核实子程序预先具有的与合法主程序22相应的属性信息,与从主调程序获得的属性信息彼此是否一致来进行验证。
属性信息为例如主调程序的文件名。在Windows(注册商标)的情形中,可使用GetModuleFileName函数获得该文件名。更具体而言,子程序24通过以起始地址等作为参数调用GetModuleFileName函数来获得主调程序的文件名。子程序24也可以通过调用GetModuleFileName函数获得指向存储主调程序的位置的文件路径。因而,子程序24可根据文件路径访问文件,并识别出文件的创建者、创建时间以及文件大小。子程序24还可以使用这些信息项作为属性信息。如果合法的主程序24被具有相同文件名和相同路径的虚假程序取代,则例如仅利用基于文件名的验证方法不能执行正确的验证。不过,如果利用如上所述除文件名之外的属性信息来执行验证,则即使发生了这种恶意取代,也会增大实现正确验证的可能性。
在数字签名附加到主程序22的情形中,子程序24可通过访问与主调程序相应的文件,检查数字签名的存在或签名的正确性,来检查主调程序是否为合法的主程序22,这是因为如果主调程序是合法的主程序22,则其附加有数字签名。
作为验证的结果,如果主调程序的验证失败(步骤S114处判断结果为:否“N”),则子程序24终止子进程(S106)。
另一方面,如果主调程序的验证成功(步骤S114处判断结果为:是“Y”),则子程序24继续子进程(S116)。
如上所述,子程序24在响应于调用而执行子进程之前,执行有关主调程序是否为合法主程序22的验证,并且只有当验证成功时才执行子进程。
从而,根据本示例性实施例,可防止发生未经授权的访问,诸如未经授权地获取用于对加密内容进行解密的密钥,或者通过使用用于监测或改变主程序22与子程序24之间交换的数据而篡改有关内容权利的信息。
此外,根据本实施例,如果虚假程序而非合法的主程序22调用了子程序24,则子进程不继续。从而,可防止未经授权地调用子程序24,以及以未经授权的方式从子程序24获得数据。
现在,将描述该实施例的第一变型例。
在第一变型例中,通过核实返回目的地址是否为与合法主程序22相应的返回目的地址来执行关于主调程序是否为合法主程序22的验证。
现在,将参照图5中的流程图,对于第一变型例中主调程序调用子程序24时子程序24的执行过程进行描述。在图5中,由于步骤S100到S106与图4中相同,将省略对其的描述,将从步骤S120开始描述。
如果判断结果为用于主调程序存储器的标志表示可以执行(步骤S104处判断结果为:是“Y”),则子程序24查阅登记了与合法主程序22相应的返回目的地址的地址列表,核实所获得的返回目的地址是否被登记在地址列表中(S120)。
该地址列表可以在子程序的开发阶段被创建。更具体而言,执行合法的主程序22来调用子程序22,并且监视保存在堆栈区M14中的返回目的地址。从而,当合法的主程序22被执行时,保存在堆栈区M14中的返回目的地址是已知的。因而,通过创建登记了返回目的地址的列表,可产生上述地址列表。由于合法的主程序22可多次调用子程序24,同时执行一系列处理,登记在地址列表中的返回目的地址的数量不必局限于一个。
作为地址列表的核实结果,如果判断所获得的返回目的地址没有登记在地址列表中(步骤S122处判断结果为:否“N”),则子程序24确定其没有被合法的主程序22调用,并终止子进程(S106)。
另一方面,如果判断所获得的返回目的地址登记在地址列表中(步骤S122处判断结果为:是“Y”),则子程序24确定其正被合法的主程序22调用,并继续子进程(S124)。
如上所述,在第一变型例中,基于主调程序的返回目的地址来判断主调程序是否为合法的主程序22,之后,仅在主调程序为合法的主程序22时子程序24才继续子进程。
从而,与上述实施例相同,根据第一变型例,可防止通过未经授权地调用子程序24,以一种未经授权的方式从子程序24获得数据。
在上面的描述中,没有考虑在主程序22的程序数据的加载位置处,重新分配(重新定位)主程序区M10的地址的情形。不过,可根据OS的技术规范执行重新分配。在此情形中,即使被合法的主程序22调用,子程序24也有可能不能判断该主调程序是合法的主程序22。
从而,子程序24可以在使用地址列表执行核实之前核实是否进行了重新分配。在此情形中,如果已经进行了重新分配,则子程序24校正所获得的返回目的地址。
现在,将参照图6中所示的流程图,针对在使用地址列表进行核实之前子程序24核实是否已经进行重新分配时所执行的过程进行描述。
首先,子程序24按照与上述实施例相同的方法获得主调程序存储区的起始地址(S200)。然后,子程序24比较预先保存的合法主程序22的起始地址与所获得的起始地址,判断它们是否彼此一致(S202)。
结果,如果判断它们彼此一致(步骤S202处判断结果为:是“Y”),则子程序24确定主调程序的地址没有进行重新分配,并利用所获得的返回目的地址执行图5中所示的处理。
另一方面,如果判断返回目的地址彼此不一致(步骤S202处判断结果为:否“N”),则子程序24确定主调程序的地址已经进行了重新分配,并计算所获得起始地址与所登记的起始地址之间的差值(S204)。然后,子程序24基于这一差值校正所获得的返回目的地址(S206)。之后,子程序24使用经过校正的返回目的地址执行图5中所示的处理。
如上所述,即使对主程序区M10的地址进行了重新分配,子程序24也能正确地核实主调程序是否为合法的主程序22。
根据运行子程序24的OS,即使对存储区的地址进行了重新分配,通过OS一侧进行地址转换等操作,可防止程序侧受地址改变的影响。在此情形中,子程序24可以在不需要考虑上述地址重新分配的条件下验证主调程序。
现在,将描述该实施例的第二变型例。
在第二变型例中,子程序24根据保存在以返回目的地址为参考所指定的预定地址范围内的程序数据,验证主调程序。
此时,将参照图7中所示的流程图,针对第二变型例中主调程序调用子程序24时子程序24的执行过程进行描述。在图7中,由于步骤S100到步骤S106与图4中的处理相同,将省略对其的描述,将从步骤S130开始描述。
如果主调程序存储区的标志表示可执行(步骤S104处判断结果为:是“Y”),则子程序24从主存储器30获得保存在以所获得的返回目的地址为参考所指定的预定地址范围内的程序数据(S130)。所述的预定地址范围可以预先确定,例如,以返回目的地址为参考地址的相对地址。
在此情形中,必须确定保存了能够核实主调程序是否为合法主程序的程序数据的范围,作为预定的地址范围。从而,希望将保存有专用于与其他程序不同的合法主程序的程序数据的地址范围,指定为预定的地址范围。
然后,子程序24根据所获得的程序数据对主调程序执行验证和核实(S132)。
例如,可如下面所述进行核实。子程序24预先保存将要加载到预定地址范围内的合法主程序22的程序数据。然后,子程序24将预先保存的程序数据与从加载主调程序的存储区获得的程序数据彼此进行比较,以核实主调程序是否为合法的主程序22。可以不通过上面所述的通过比较程序数据本身来进行核实,而是例如,通过预先针对合法主程序的程序数据计算诸如哈希(hash)值的特性,并比较所述特性来进行核实。
作为验证的结果,如果对主调程序的验证失败(步骤S134处判断结果为:否“N”),则子程序24确定其没有被合法的主程序22调用,并终止子进程(S106)。
另一方面,如果对主调程序的验证成功(步骤S134处判断结果为:是“Y”),则子程序24确定其正被合法的主程序22调用,并继续子进程(S124)。
如上所述,在第二变型例中,在核实加载在包括主调程序的返回目的地址的预定地址范围内的程序数据是否为合法主程序22的程序数据之后,子程序24只有在主调程序是合法主程序22时才继续子进程。
从而,与上面所述的示例性实施例和第一变型例相同,根据第二变型例,可防止通过对子程序24的未经授权的调用,以未经授权的方式从子程序24获得数据。
包括在程序数据中的处理命令可包括地址信息,诸如JUMP命令的情形。从而,如果对主程序区M10的地址进行了重新分配,则有可能改变程序数据的内容。
从而,在第二变型例中,也必须根据主程序22的技术规范考虑地址的重新分配。
在此情形中,例如,预先从上述的预定地址范围排除可通过正重新分配地址而导致数据内容被重写的地址(下面称作“数据将被重写的地址”)。由此,这种其内容可通过重新分配地址而被改变的数据,可以不包含在将被核实的程序数据中。
因而,即使执行了地址的重新分配,子程序24也能正确地验证主调程序。
例如,通过查阅称作重定位表的表格可确定将被重写的数据的地址,其中所述重定位表登记了可通过重新分配地址而重写数据内容的地址。在主程序22没有提供重定位表的情况下,创建登记有数据将被重写的地址的列表,并将其加载到可由子程序24预先查阅的存储区中。
还可以不通过排除数据将被重写的地址,而是通过校正保存在数据将被重写地址处的程序数据对主调程序进行验证。在此情形中,利用例如图6中所示的方法确定差值,并且基于所述差值校正保存在数据将被重写的地址中的程序数据。即,可基于计算出的差值来校正被加载在数据将被重写的地址处的处理命令中所包含的地址。
在上述实施例和每个变型例中,针对子程序24利用从堆栈区M14等获得的返回目的地址作为分配给主调程序使用的存储区的地址、对主调程序进行验证的示例进行了描述。不过,如果可以对主调程序进行验证,则子程序24还可以使用除返回目的地址之外的地址。
在本示例性实施例的第三变型例中,将针对利用主程序22调用子程序时发送的参数所表示的地址作为地址,而非返回目的地址,对验证主调程序的情形进行描述。
在第三变型例中,使用回调地址作为由参数所表示的地址。此处,回调地址表示存储将要被调用的回调函数的地址。回调函数为主调程序中的一个函数,子程序24响应于主调程序的调用来调用该回调函数。即,子程序24访问由主调程序发送的参数所指示的回调地址,而调用该回调函数。
第三变型例与上述使用从堆栈区M14等获得返回目的地址的实施例的不同之处在于,子程序24使用主调程序发送的参数所指示的回调地址。不过,在其他方面,该过程与上述实施例相同,从而将省略对其的描述。参照上述示例性实施例的描述,同时适当地用回调地址取代返回目的地址。
此外,在第一和第二变型例的过程中,也可以使用回调地址取代返回目的地址。在此情形中,也参照第一和第二变型例的描述,同时适当地用回调地址取代返回目的地址。
在使用回调地址的情形中,必须考虑保存主程序22的存储区的地址的重新分配。在此情形中,与第一和第二变型例相同,子程序24根据图6中所示的过程,判断是否已经进行了地址的重新分配,并且如果进行了重新分配,则确定差值。然后,子程序24根据所述差值,校正保存在所获得的回调地址处或者以所获得的回调地址作为参考所指定的预定地址范围内的程序数据,之后,对主调程序进行验证。
可以在子程序24执行将作为子进程的结果获得的数据返回主调程序的返回处理之前,执行上述实施例和每个变型例中所示的对主调程序进行验证的处理。例如,子程序24可以在接收到调用之后、刚好在调用回调函数之前或者在将作为子进程的结果获得的数据返回主调程序之前,立即执行对主调程序的验证处理。
上述的每个处理可以以程序的形式分发。在此情形中,可通过将程序记录在诸如floppy(注册商标)盘、CD-ROM和DVD的记录介质中来分发程序。或者,可通过使用公共网络等通过传输介质来分发部分或所有程序或文件。在此情形中,收到程序的用户可以利用诸如CD-ROM装置的读出装置(输入/输出部分的一部件),从诸如floppy(注册商标)盘,CD-ROM和DVD的便携式记录介质,将程序拷贝到外部记录部件,或者通过计算机的通信部件将程序从互连网拷贝到外部记录部件。可以利用执行程序的CPU,在用户计算机上实现上述功能。
为了说明和描述的目的提供本发明实施例的上述描述。无意穷举或者将本发明限制为所披露的具体形式。显然,本领域技术人员易于想到多种变型和改变。实施例的选择和描述是为了最好地解释本发明的原理及其实际应用,从而使本领域技术人员能够理解本发明适于具体使用的多个实施例和多种变型。本发明的范围由所附权利要求及其等效范围来限定。
Claims (15)
1、一种信息处理设备,包括:
子进程部分,执行包括响应于主调程序的调用而执行的处理和将所述处理结果返回所述主调程序的返回处理的子进程;
地址获取处理部分,其获取所述子进程部分执行所述子进程时所访问的访问目的地址,所述访问目的地址被指定为所述主调程序的一个存储区;
判断处理部分,其根据所获取的存储信息判断所述主调程序是否合法;以及
终止处理部分,如果判断所述主调程序不合法,则终止所述子进程的执行。
2、根据权利要求1所述的设备,其中:
所述判断处理部分基于所获得的访问目的地址获得有关所述主调程序所使用的所述存储区的存储信息,并根据所述存储信息判断所述主调程序是否合法。
3、根据权利要求1所述的设备,其中:
所述判断处理部分基于所获得的访问目的地址获得有关所述主调程序的属性信息,并根据所获得的所述属性信息和预先登记的合法主调程序的属性信息,判断所述主调程序是否合法。
4、根据权利要求1所述的设备,其中:
所述判断处理部分根据所获得的访问目的地址以及预先登记的合法主调程序的原始访问目的地址,判断所述主调程序是否合法。
5、根据权利要求4所述的设备,其中:
所述判断处理部分通过查阅登记了一组合法主调程序的原始访问目的地址的地址列表,判断所述主调程序是否合法。
6、根据权利要求4所述的设备,其中:
所述判断处理部分根据所获得的访问目的地址,获得保存所述主调程序的所述存储区的起始地址,
如果所获得的起始地址与预先登记的合法主调程序的起始地址不同,则确定差值,
根据所述差值校正所获得的访问目的地址,并且
根据经过校正的访问目的地址判断所述主调程序是否合法。
7、根据权利要求1所述的设备,其中:
所述判断处理部分从存储器获得保存在一定地址范围内的数据,所述范围是基于所获得的访问目的地址指定的;
通过比较所获得的数据与将要保存在合法主调程序的访问目的地址所指定的地址范围内的数据,判断所述主调程序是否合法。
8、根据权利要求7所述的设备,其中:
所述地址范围不包括保存了通过地址重新分配可能改变其内容的数据的地址。
9、根据权利要求7所述的设备,其中:
所述判断处理部分根据所获得的访问目的地址,获得保存了主调程序的存储区的起始地址,
如果所获得的起始地址与预先登记的合法主调程序的起始地址不同,则确定差值,
根据所述差值校正所获得的数据,以及
根据经过校正的数据和待保存的数据,判断所述主调程序是否合法。
10、根据权利要求1所述的设备,其中:
所述判断处理部分从存储器获得保存在一定地址范围内的数据,所述范围是根据所获得的访问目的地址指定的,
计算所获得的数据的哈希值,以及
根据计算出的哈希值和从将要保存在根据预先登记的合法主调程序的访问目的地址所指定的地址范围内的数据中所确定的哈希值,判断所述主调程序是否合法。
11、根据权利要求1所述的设备,其中:
所述访问目的地址为程序的处理结束之后,程序转移执行控制的返回目的地址。
12、根据权利要求1所述的设备,其中:
所述访问目的地址为当程序被所述主调程序调用时主调程序发送出的参数所表示的地址。
13、根据权利要求12所述的设备,其中:
所述地址为所述主调程序指定为回调目的的回调地址。
14、一种保存程序的计算机可读介质,使计算机执行包括响应于主调程序的调用而执行的处理和将处理结果返回所述主调程序的返回处理的子进程,所述子进程包括:
获得被所述程序访问的访问目的地址,所述访问目的地址被分配给所述主调程序的一个存储区;
根据所获得的访问目的地址判断所述主调程序是否合法;以及
如果判断所述主调程序不合法,则终止所述子进程的执行。
15、一种用于执行子程序的程序控制方法,所述子程序执行包括响应于主调程序的调用而执行的处理和将处理结果返回所述主调程序的返回处理的子进程,所述程序控制方法包括:
获得被所述子程序访问的访问目的地址,所述访问目的地址被分配给所述主调程序的一个存储区;
根据所获得的访问目的地址判断所述主调程序是否合法;以及
如果判断所述主调程序不合法则终止所述子进程的执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005345074A JP4844102B2 (ja) | 2005-11-30 | 2005-11-30 | サブプログラム及びそのサブプログラムを実行する情報処理装置 |
JP345074/2005 | 2005-11-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1975678A true CN1975678A (zh) | 2007-06-06 |
Family
ID=38125763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006101635322A Pending CN1975678A (zh) | 2005-11-30 | 2006-11-29 | 执行程序的信息处理设备、计算机可读介质和程序控制方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7962952B2 (zh) |
JP (1) | JP4844102B2 (zh) |
KR (1) | KR100917370B1 (zh) |
CN (1) | CN1975678A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111191203A (zh) * | 2020-01-02 | 2020-05-22 | 北京字节跳动网络技术有限公司 | 身份验证方法及装置 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080301816A1 (en) * | 2007-06-01 | 2008-12-04 | Ting David M T | Method and system for handling keystroke commands |
JP4939382B2 (ja) * | 2007-11-28 | 2012-05-23 | ルネサスエレクトロニクス株式会社 | 情報処理装置及びそのプログラム実行制御方法 |
US8065734B1 (en) | 2008-03-06 | 2011-11-22 | Symantec Corporation | Code module operating system (OS) interactions intercepting system and method |
US8209757B1 (en) * | 2008-03-06 | 2012-06-26 | Symantec Corporation | Direct call into system DLL detection system and method |
JP5377748B2 (ja) * | 2010-02-18 | 2013-12-25 | 株式会社東芝 | プログラム |
KR101212553B1 (ko) * | 2012-05-11 | 2012-12-14 | 주식회사 안랩 | 악성 파일 검사 장치 및 방법 |
US9846717B2 (en) * | 2012-10-23 | 2017-12-19 | Galois, Inc. | Software security via control flow integrity checking |
DE112014000400B4 (de) * | 2014-01-15 | 2018-01-11 | Mitsubishi Electric Corporation | Numerische Steuervorrichtung |
US20160381050A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
US10394556B2 (en) | 2015-12-20 | 2019-08-27 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US10430580B2 (en) | 2016-02-04 | 2019-10-01 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
JP2020098506A (ja) | 2018-12-18 | 2020-06-25 | ルネサスエレクトロニクス株式会社 | マイクロコントローラ及び半導体装置 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2934039B2 (ja) * | 1991-03-20 | 1999-08-16 | 富士通株式会社 | 複数ロードモジュール保護方式 |
JPH0529328A (ja) * | 1991-07-24 | 1993-02-05 | Mitsubishi Electric Corp | 半導体装置及びその製造方法 |
JPH0784786A (ja) * | 1993-09-09 | 1995-03-31 | Casio Comput Co Ltd | プログラム実行制御方法 |
JPH07182239A (ja) * | 1993-12-24 | 1995-07-21 | Nec Corp | セグメント分割管理システム |
JPH1040138A (ja) | 1996-07-22 | 1998-02-13 | Fuji Electric Co Ltd | サブルーチンの運用情報収集方法 |
US5895467A (en) * | 1997-04-11 | 1999-04-20 | Informix Software, Inc. | Selectively switching memory access permission for manipulating data in a database |
AU2686699A (en) * | 1998-02-26 | 1999-09-15 | Sun Microsystems, Inc. | Stack-based security requirements |
US6526571B1 (en) * | 1999-03-16 | 2003-02-25 | International Business Machines Corporation | Method for identifying calls in java packages whose targets are guaranteed to belong to the same package |
DE19944991B4 (de) | 1999-09-20 | 2004-04-29 | Giesecke & Devrient Gmbh | Verfahren zur Sicherung eines Programmablaufs |
US7051200B1 (en) * | 2000-06-27 | 2006-05-23 | Microsoft Corporation | System and method for interfacing a software process to secure repositories |
EP1368737A2 (en) * | 2000-09-08 | 2003-12-10 | International Business Machines Corporation | Software secure authenticated channel |
JP4023654B2 (ja) * | 2001-09-28 | 2007-12-19 | 日立ソフトウエアエンジニアリング株式会社 | アプリケーションの監視方法およびプログラム |
US7000087B2 (en) * | 2001-11-07 | 2006-02-14 | International Business Machines Corporation | Programmatically pre-selecting specific physical memory blocks to allocate to an executing application |
JP2004126854A (ja) * | 2002-10-01 | 2004-04-22 | Mitsubishi Electric Corp | 攻撃対策装置 |
US7203941B2 (en) * | 2002-11-14 | 2007-04-10 | Microsoft Corporation | Associating a native resource with an application |
US7149863B1 (en) * | 2003-10-08 | 2006-12-12 | Sun Microsystems, Inc. | System and method of descriptively specifying memory placement in a computer system |
KR100483700B1 (ko) | 2003-12-03 | 2005-04-19 | 주식회사 잉카인터넷 | 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법 |
US7546587B2 (en) * | 2004-03-01 | 2009-06-09 | Microsoft Corporation | Run-time call stack verification |
US20050235136A1 (en) * | 2004-04-16 | 2005-10-20 | Lucent Technologies Inc. | Methods and systems for thread monitoring |
US7558986B2 (en) * | 2005-05-26 | 2009-07-07 | United Parcel Service Of America, Inc. | Software process monitor |
US8176567B2 (en) * | 2005-12-22 | 2012-05-08 | Pitney Bowes Inc. | Apparatus and method to limit access to selected sub-program in a software system |
-
2005
- 2005-11-30 JP JP2005345074A patent/JP4844102B2/ja not_active Expired - Fee Related
-
2006
- 2006-10-13 US US11/581,109 patent/US7962952B2/en not_active Expired - Fee Related
- 2006-11-03 KR KR1020060108147A patent/KR100917370B1/ko active IP Right Grant
- 2006-11-29 CN CNA2006101635322A patent/CN1975678A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111191203A (zh) * | 2020-01-02 | 2020-05-22 | 北京字节跳动网络技术有限公司 | 身份验证方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20070136728A1 (en) | 2007-06-14 |
KR100917370B1 (ko) | 2009-09-16 |
JP2007148962A (ja) | 2007-06-14 |
US7962952B2 (en) | 2011-06-14 |
KR20070056940A (ko) | 2007-06-04 |
JP4844102B2 (ja) | 2011-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1975678A (zh) | 执行程序的信息处理设备、计算机可读介质和程序控制方法 | |
US8024564B2 (en) | Automating configuration of software applications | |
US7966599B1 (en) | Runtime library including a virtual file system | |
CN1308832C (zh) | 防御恶意代码而对计算机程序和数据进行保护的方法和装置 | |
US7346780B2 (en) | Integrity ordainment and ascertainment of computer-executable instructions | |
US7487495B2 (en) | Generic framework for runtime interception and execution control of interpreted languages | |
JP4769304B2 (ja) | オペレーティングシステム非依存型データ管理 | |
US9589131B2 (en) | Method and computer device to control software file downloads | |
US10528749B2 (en) | Methods and apparatus for containerized secure computing resources | |
US7647629B2 (en) | Hosted code runtime protection | |
Busch et al. | Unearthing the {TrustedCore}: A Critical Review on {Huawei’s} Trusted Execution Environment | |
US7328340B2 (en) | Methods and apparatus to provide secure firmware storage and service access | |
US20180239929A1 (en) | Securely defining operating system composition without multiple authoring | |
US7805601B2 (en) | Computerized apparatus and method for version control and management | |
JP2005527905A (ja) | 実行可能なコードを格納するタンパーエビデントな取り外し可能な媒体 | |
CN110352411B (zh) | 用于控制对安全计算资源的访问的方法和装置 | |
US20230058046A1 (en) | Apparatus and Method for Protecting Shared Objects | |
US11030320B2 (en) | Managing the loading of sensitive modules | |
Bousquet et al. | Mandatory access control for the android dalvik virtual machine | |
US20050010752A1 (en) | Method and system for operating system anti-tampering | |
CN109784073A (zh) | 数据访问方法及装置、存储介质、计算机设备 | |
JP3654165B2 (ja) | コンピュータシステムに適用するライブラリのリンク方法及びそのプログラムを記録した記録媒体 | |
CN109800580A (zh) | 系统进程的权限控制方法及装置、存储介质、计算机设备 | |
Cai et al. | Mimer Trust: Efficient and Secure Data Processing for Trusted Execution Environment in Automotive Systems | |
US11983580B2 (en) | Real-time modification of application programming interface behavior |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20070606 |