CN1722091A - 确认动态可连接可执行镜像的可靠性的系统和方法 - Google Patents

确认动态可连接可执行镜像的可靠性的系统和方法 Download PDF

Info

Publication number
CN1722091A
CN1722091A CNA2005100894378A CN200510089437A CN1722091A CN 1722091 A CN1722091 A CN 1722091A CN A2005100894378 A CNA2005100894378 A CN A2005100894378A CN 200510089437 A CN200510089437 A CN 200510089437A CN 1722091 A CN1722091 A CN 1722091A
Authority
CN
China
Prior art keywords
mirror image
carry out
pointer
program
affirmation program
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.)
Granted
Application number
CNA2005100894378A
Other languages
English (en)
Other versions
CN100394385C (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.)
Rovi Corp
Original Assignee
Macrovision 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 Macrovision Corp filed Critical Macrovision Corp
Publication of CN1722091A publication Critical patent/CN1722091A/zh
Priority to HK06103685A priority Critical patent/HK1083653A1/xx
Application granted granted Critical
Publication of CN100394385C publication Critical patent/CN100394385C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

验证可执行镜像完整性的系统和方法。该系统包括实时确认程序,它使用除去需要由程序装载程序修补的可执行段的数字签名的内容,确定参考数字签名。在装载可执行镜像之后,实时确认程序确定真实数字签名的完整性来验证可执行镜像没有被不正确地修改。而且,实时确认程序确保在可执行镜像中的每个指针没有被不正确地重定向。

Description

确认动态可连接可执行镜像的可靠性的系统和方法
本申请是申请日为2000年7月25日,申请号为00819775.X,发明名称为“确认动态可连接可执行镜像的可靠性的系统和方法”的发明专利申请的分案申请。
技术领域
本发明涉及计算机系统。特别是涉及一种验证动态的、可连接的、可执行的镜像(image)的可靠性的系统和方法。
背景技术
目前,新的对象模型保证在运行期间的应用软件的动态完整性。例如,Windows,由Microsoft Inc.授权的一种操作系统,在应用软件执行期间,使用动态链接库来维护应用软件的完整性。当用户要求执行应用软件时,程序装载程序从磁盘存储器复制应用程序的“磁盘镜像”到主存储器来创建“过程镜像”。磁盘镜像是指装载前的可执行镜像,而过程镜像是指在被装载入存储器后的可执行镜像。磁盘镜像和过程镜像一般都包括修补(fixed-up)部分,用于指明在运行期间软件的哪些需要修补的部分引用动态链接库。
值得注意的是,在装载之后,过程镜像与磁盘镜像不同。因此,即使过程镜像没有被不正确地篡改过,作出的关于磁盘镜像的检查和将不再与过程镜像的检查和匹配。
因而,这里需要一种系统,能够确定在动态装载环境下的应用软件的标识。特别地,系统应当能够确定在执行应用软件之后,被动态地连接到其它的数据对象的应用软件是否被篡改。
发明内容
本发明的一个实施例包括一种用于确定可执行镜像的可靠性的系统,该系统包括:具有一个或多个指针的可执行镜像,和确认程序(validator),能够根据除去每个指针的可执行镜像的所选的内容,在第一时间点上生成参考数字签名,其中,确认程序根据除去每个指针的可执行镜像的所选的内容,在第二时间点上生成真实数字签名。其中,确认程序确定参考数字签名是否与真实(authenticity)数字签名相匹配。
本发明的另一实施例,包括一种用于确定可执行镜像的可靠性的系统,该系统包括:具有一个或多个指针的可执行镜像,其中,可执行镜像包括表明每个指针是否引用可执行镜像之内的位置的信息,和能够确定每个指针是否引用可执行镜像之内的各自位置的确认程序。
本发明的另一实施例,包括一种用于确定可执行镜像的可靠性的系统,该系统包括:第一可执行镜像、包括引用第一可执行镜像内位置的指针的第二可执行镜像、和能够确定指针是否引用第一可执行镜像之内位置的确认程序。
本发明的另一实施例,包括一种能够确认可执行镜像的可靠性的系统,该系统包括:第一可执行镜像,可装载到存储器;第二可执行镜像,可装载到存储器,所述第二可执行镜像包括导入表和代码段,所述导入表具有第一可执行镜像的标识和一个或多个外部指针,每个外部指针引用一个在第一可执行镜像内的位置,所述代码段包含机器码和一个或多个导入指针,每个导入指针引用在导入表内的位置;和计算机,包含确认程序,所述确认程序能够根据可执行镜像的所选的内容在第一时间点上生成参考数字签名,其中所选的内容除去每个导入指针和外部指针,其中,确认程序根据除去一个或多个指针的每一个指针的可执行镜像的所选的内容,在第二时间点上生成真实数字签名,其中,确认程序确定参考数字签名是否匹配真实数字签名,并且其中,确认程序确定每个导入指针所指的位置是否在第一可执行镜像之内。
附图说明
图1是表示本发明的、用于从一个或多个源接收可执行镜像的计算机的总体方块图。
图2是表示能够确定一个或多个位于图1中的计算机上的可执行镜像的可靠性的确认程序的方块图。
图3是表示图2中的可执行镜像的内部结构的方块图。
图4是表示在装载过程之后,图2的两个可执行镜像被连接的方块图。
图5是表示在如图2所示的一个可执行镜像的可靠性检查期间,由图2的确认程序执行的一个过程的流程图。
图6是表示在如图2所示的一个可执行镜像的可靠性检查期间,由图2的确认程序执行的另一个过程的流程图。
具体实施方式
下面的详细描述贯注于本发明的某个特定的实施例。然而,本发明可以如权利要求定义和覆盖的那样,以在许多不同的方式实现。
系统总览
图1是描述计算机90的总体方框图。计算机90启动对一个或更多在计算机90上执行的可执行镜像的可靠性检查。
计算机90使用常规的通用单片或多片微处理器,如Pentium处理器、PentiumPro处理器、8051处理器、MPS处理器、Power PC处理器、或ALPHA处理器,而且,计算机90可以使用常规的专用微处理器,例如数字信号处理器或图象处理器。
计算机90包括操作系统95和存储器108。操作系统可以由任何一个操作系统厂商提供,其可以包括:UNIX、LINUX、DOS、OS/2、Windows 3.x、Windows 95、Windows 98和Windows NT。为了便于描述,在下面本发明的实施例将采用Windows 95。
计算机90与一个或多个给计算机90提供可执行镜像100的可执行镜像源107相连,如图1所示,典型的可执行镜像提供者包括:服务器110、因特网114、数据库118、网络122、硬件设备126、和/或移动存储设备130。
可执行镜像100是一个可由自己或与其它可执行镜像,一个或多个应用软件定义的数据对象。应用软件可以包括,例如:文字处理器、数据库、数字产权管理系统、个人财务工具、图形工具、因特网浏览器、计算机游戏、通信程序、权限程序、电子钱包、多媒体播放器或合同管理。而且,可执行镜像100与其它可执行镜像是动态可连接的。例如,本发明的实施例是在Windows95环境下开发的,可执行镜像是一个动态链接库(DLL)。
因特网114包括不同网络类型,如公用因特网、专用因特网、保密因特网、专用网络、公用网络、附加值网络、企业内部网等类似网络。
网络122可以包括任何电连接的计算机组的类型,网络包括:例如,下列网络:企业内部网、局域网(LAN)、广域网(WAN)。而且,与网络的连接,可以是,例如,远程调制解调器、以太网(IEEE 802.3)、令牌环网(IEEE802.5)、光纤分布式数据接口(FDDI)或异步传输模式(ATM)。需要注意注意的是,计算设备可以是台式机、服务器、便携机、手持设备、机顶盒、或其它要求的类型的配置。硬件设备126可以是逻辑芯片、ROM、RAM、智能卡、或中央处理单元。可移动媒介存储器130可以是软盘、压缩盘、硬盘、磁带驱动器、ROM、或其它持久存储介质。
图2是描述确认程序204的方块图。在本发明的一个实施例中,确认程序204是可执行镜像,与可执行镜像100的格式相同。在本发明的另一个实施例中,确认程序204与可执行镜像100集成在一起。在本发明的另一个实施例中,确认程序204与程序装载程序208集成在一起。程序装载程序208的一个功能是从存储设备105(图1)中把可执行镜像100复制到存储器108,并在执行可执行镜像100之前,将代码和数据指针绑定到的合适地址。为了便于描述,下面的描述假定确认程序204是与可执行镜像100和程序装载程序208区不同的独立程序。
确认程序204在下面进一步详细叙述的选择条件下,确认可执行镜像100的可靠性。可以被本领域的技术人员接受的是,确认程序204和程序装载程序208包括不同的子程序、过程、定义声明、和宏,它们一般被分开编译并连接到单个可执行程序。因而,下面的描述可以方便地用于描述这些对象的功能。
确认程序204和程序装载程序208(图1)可以使用任意的编程语言编写,例如,C、C++、BASIC、Pascal、Java、和FORTRAN。C、C++、BASIC、Pascal、Java、和FORTRAN是工业标准编程语言,对于每种语言,有许多商业版本编译器和解释器可以用来创建可执行代码。
图2是描述在被连接到可执行镜像200后的可执行镜像100。应当注意的是,可执行镜像200可以包括与上面描述的可执行镜像100有关的相同类型的数据对象。确认程序204的一个功能是在可执行镜像被装入存储器108之后,确认可执行镜像,例如可执行镜像100和可执行镜像200的可靠性。
用于确认可执行镜像的可靠性的过程将在下面参照图5和图6详细给出。然而,简短地说,确认程序204在可执行镜像100装入存储器108之前,分析可执行镜像100,并生成与可执行镜像100相关的参考数字签名。在可执行镜像100被装载之后,确认程序204生成真实数字签名,以保证可执行镜像100没有被篡改过。而且,确认程序204检查可执行镜像100和可执行镜像200之间的绑定,以保证在可执行镜像100之间的绑定没有被不正确地重定向到其它的可执行镜像。
图3是详细描述可执行镜像100的实施例的内部结构的方块图,其中可执行镜像被创建成动态链接库,并存储在存储单元105中(图1)。
可执行镜像100包括许多段,如头段300、代码段304、数据段308、导入表312、再定位表316、和导出表320。应当注意的是可执行镜像100包括许多指针,它们将在下面进一步详细说明。然而,总得来说,指针是标识在存储器108中关于存储器108(图1)的绝对地址或其它位置的相对地址位置的参考值。
头段300标识在可执行镜像100中其它段和/或表的相对位置。代码段304包括可执行镜像100的编译的机器码。例如,代码段304包括计算机90(图1)的机器指令。如图3所示,代码段304包括引用在可执行镜像100内部或不在其外部的其它段的指令。如方块320所示,代码段304包括用于将全局变量“i”赋值“2”的指令,然而,由于可执行镜像100还没有装入存储器108,如存储在存储设备105中,变量“i”的实际地址在存储器108中没有定义。而且,代码段304包括调用函数foo()的指令,对过程foo()的调用包括引用导入表312中的位置的导入指针。
数据段308用于存储在代码段304中标识的所有全局变量。导入表312包括信息的不同数据项(item)来帮助程序装载程序208将可执行镜像100与其它可执行镜像连接起来。导入表312包括:标识符,例如由其它可执行镜像维护的每个过程的名称、可执行镜像的名称、和一个或多个引用外部维护的过程的地址的外部指针。导入表312,如存储设备105(图1)存储的那样,不引用过程foo()的存储器地址。
再定位表316在装载可执行镜像100时,标识需要修补的代码段304的每个段的位置。术语fixing-up用在这里,表示在存储器中修改可执行镜像,以便任何未分析的指针引用合适的数据和/或代码位置的过程。在指针被程序装载程序208修补之后,被称为绑定一个可选地址。
导出表320指明每个可以被可执行镜像100公开使用的过程。应当注意的是可执行镜像100可以包括其它信息,如调试信息或其它帮助装载和/或连接过程的表。
当可执行镜像100存储在存储设备105中时,确认程序204(图2)确定与它相关的参考数字签名。用于生成数字签名的过程将参考图6详细描述。在本发明的一个实施例中,确认程序204确定除去需要程序装载程序208(图2)修补的指针的整个可执行镜像的参考数字签名。在本发明的另一个实施例中,确认程序204确定关于选择的段,如除去需要程序装载程序208修补的地址的可执行镜像100的代码段304和/或导入表312的参考数字签名。
图4是描述与可执行镜像200有关的,在可执行镜像100被修补之后的可执行镜像100的方块图,由图4可以看到,变量“i”的数据指针根据再定位表316包含的修改信息绑定到数据段308的一个地址。更进一步,导入表312中的外部指针被绑定到可执行镜像200中的导出表。在第二可执行镜像200的导出表中的参考地址上的外部指针被绑定到可执行镜像200中的过程foo()的实际位置上。
在修补之后,确认程序204(图2)执行各种与可执行镜像100有关的可靠性检查。每个可靠性检查将参照图5和图6详细描述,然而,简短地说,确认程序204执行了下面描述功能。
首先,确认程序204确定与用来生成参考数字签名相同的地址的真实数字签名。如果真实数字签名与参考数字签名不同,确认程序204(图2)假定可执行镜像100已被篡改。
其次,确认程序204检查导入表312中的每个绑定来确保被导入表引用的地址没有被篡改。如果导入表312被不正确地修改,对选择的函数的过程调用可能被重定向到不可靠的程序,而不是可执行镜像100的提供者希望的程序,这样的不可靠的程序随机或故意返回错误或其它有害的数据给可执行镜像。
图5是描述用于确认可执行镜像100的可靠性的过程的流程图。从状态600开始,确认程序204(图2)接收用于确认可执行镜像100(图1)的可靠性的请求。在本发明的一个实施例中,请求是由程序装载程序208生成的。在本发明的另一个实施例中,请求是由操作系统95(图1)生成的,仍然在本发明的另一个实施例中,请求是由在计算机90(图1)上执行的可执行镜像(未示出)生成的,仍然在本发明的另一个实施例中,请求是由确认程序204中的程序生成的。
继续到状态604,确认程序204(图2)标识在可执行镜像100中需要修补的每个指针。在本发明的一个实施例中,如果在可执行镜像100中只确定选择的段的可靠性,确认程序204只标识落在可执行镜像100中的选择的段中的指针。例如,确认程序204可以被配置成仅仅标识落在代码段304中或导入表312(图3)中的那些指针。
在本发明的一个实施例中,确认程序204分析再定位表316来标识这些指针中的每一个(图3)。如上面参考图3的描述,再定位表316标识相对于可执行镜像100的基址的地址的位置。通过检查再定位表316,确认程序204可以标识在装载过程中,被程序装载程序208修改的位于代码段304中的部分。
继续到状态608,确认程序204(图2)生成可执行镜像100的参考数字签名。这里使用的数字签名被定义为包括任何用于标识选择的组数据的内容的方法。在它的最简单的形式中,数字签名可以包括对要被标记的选择的组数据的一个完全的拷贝。然而,数字签名还可以包括对选择的组数据采用哈希(hashing)函数的结果。此外,数字签名可以是数字证书(certificate)。可以被本领域的技术人员接受的是,众多标准哈希函数中的任何一个都可以被用来生成参考数字签名。
仍然在本发明的一个实施例中的参考状态608,确认程序根据除去需要程序装载程序208(图2)修补的地址的整个可执行镜像100的内容,确定参考数字签名。在本发明的另一个实施例中,确认程序204根据所选的段,例如除去需要程序装载程序208修补的地址的代码段304和/或导入表312的内容来确定参考数字签名。
前进到状态612,确认程序204(图2)为后面的检索存储参考数字签名。在本发明实施例中,确认程序204在存储装置105存储参考数字签名。在本发明的另一个实施例中,确认程序204在可执行镜像100的选择段,如资源表(未示出)存储参考数字签名。仍然在本发明的另一实施例中,参考数字签名接在可执行镜像100的后面,仍然在本发明的另一实施例中,数字签名储存在数据库中、web服务器、或在网络122(图1)上。仍然在本发明的另一实施例中,参考数字签名在可执行镜像100在被提供给计算机90之前被创建。在这个实施例中,参考数字签名可以以上述任一种方式生成。
接着,在状态614,确认程序204(图2)在可执行镜像100由程序装载程序装入存储器108(图2)之前或之后,确定可执行镜像的真实签名。在这一步,确认程序204再次使用在状态608中确认程序204采用的哈希函数。确认程序204可以被配置成根据选择的一个或多个条件的发生,例如,定时器的超时、可执行镜像的可靠性自测、计算机90(图1)的空闲时间、或根据可执行镜像的请求来确定真实数字签名。
继续到判定状态618,确认程序204(图2)确定参考数字签名(在状态608生成)是否匹配真实数字签名(在状态614生成)。如果参考数字签名不匹配真实数字签名,确认程序204前进到状态622,其中,确认程序204启动一个安全告警。在状态622,确认程序204可以执行多个功能,例如:卸载可执行镜像100,从存储器105(图1)装载可执行镜像100的新拷贝到存储器108(图1),从网络122装载一个新版本的可执行镜像100,从存储器105中删除可执行镜像100,显示告警给位于计算机90(图1)的用户,通过网络122发送错误消息到远程计算机(未示出),或取消一个或多个由可执行镜像100执行的动作。
再参考判定状态618,如果确认程序204(图2)确定参考数字签名匹配真实数字签名,确认程序204前进到结束状态624。根据实施例,确认程序(图2)可以返回到状态614,根据选择条件的发生重新确定真实数字签名。
图6是描述当在如图2所示的可执行镜像的可靠性检查期间,由图2中的确认程序执行的另一个过程的流程图。由图6执行的过程与由图5执行的过程不同,它可以独立执行,也可联合图5执行的过程。特别地,图6描述了用于确定绑定于正确位置的可执行镜像中的每个指针的过程。下面文字描述了与可执行镜像100的代码段304中的导入指针和导入表312中的导出指针相关的可靠性检查过程。然而,可以为本领域的技术人员接受的是,相同的过程可以用于可执行镜像中的其它类型指针。
从状态700开始,确认程序204(图2)接收来自请求器的、用于确认可执行镜像100(图1)的可靠性的请求。在本发明的实施例中,请求器是程序装载程序208(图2)。在本发明的另一实施例中,请求器是操作系统95(图1)。仍然在本发明的另一实施例中,请求器是一个在计算机90(图1)上执行的可执行镜像(未示出)。仍然在本发明的另一实施例中,请求器是确认程序204中的一个子程序。而且,请求器可以根据一个或多个选择的条件的发生启动请求,其中这些条件包括:定时器的超时、关于计算机90(图1)的空闲时间的检测、和/或在临界(critical)操作之前,如银行交易。
继续到状态704,确认程序204(图2)标识在代码段304中的每个导入指针。在本发明的一个实施例中,确认程序204分析再定位表316以确定每个导入指针(图3)。
接着,在状态708,确认程序204(图2)检查在代码段320中每个导入指针,确定是否每个导入指针是否绑定在导入表312之中的位置。在该状态下,在本发明的一个实施例中,确认程序204读取头300,确定导入表312的开始和结束地址。
如果每个导入指针没有绑定到在导入表312(图3)中的位置,确认程序204(图2)前进到状态714,其中,确认程序204启动安全告警。在状态714,确认程序204可以执行多个功能,例如:卸载可执行镜像100,从存储器105(图1)装载可执行镜像100的新拷贝到存储器108(图1),装载可执行镜像的新拷贝,从存储器105删除可执行镜像100,显示告警消息给位于计算机90(图1)的用户,通过网络122发送错误消息到远程计算机(未示出),或取消由可执行镜像100执行的一个或多个动作。过程流程前进到结束状态715,结束过程。
再参考判定结果状态712,如果确认程序204(图2)确定代码段304中每个导入指针绑定到导入表312(图3),确认程序204前进到状态716,在状态716,确认程序204标识导入表312中的每个外部指针。
前进到状态720,确认程序204(图2)确定在导入表312(图2)中的外部指针的绑定的位置。在本发明的另一实施例中,确认程序204在由确认程序204维护的外部指针表(未示出)中存储绑定的位置。
继续到判定状态722,确认程序204确定外部指针的绑定的位置是否位于由导入表312(图2)确定的一个可执行镜像中。为了方便描述,由导入表312标识的可执行镜像被称为导出可执行镜像。
在本发明的一个实施例中,确认程序204调用操作系统95(图1)确定在存储器108(图1)中的导出可执行镜像的位置。例如,Windows95提供一个名为“GetModuleHandle()”的过程调用,它返回给出可执行镜像的名称的可执行镜像的基址。使用基址,确认程序204能够标识头并导出可执行镜像的其它段的位置。
仍然参考状态722,如果确认程序204确定每个外部指针没有被绑定到导出可执行镜像,确认程序204前进到在上面详细描述的状态714。然而,如果确认程序204确定每个外部指针绑定到导出可执行镜像,确认程序204前进到结束状态715,并结束。
很有利的是,本发明允许静态、动态、和运行期间可执行镜像的可靠性的确认,并不需要修改可执行镜像的源或对象码。本发明确保了一个可执行镜像是可靠的,并且在它被装载之后没有被篡改。在参考数字签名被确定后,确认程序204能够随后生成真实数字签名以确保数据对象没有被修改。而且,确认程序204能够确定可执行镜像中的每个指针是否绑定到正确的位置。
例如,对于代码段304的数据指针,确认程序204可以检查再定位表316以确保数据指针引用数据段308中的位置。而且,例如,对于导入表312的外部指针,确认程序204能够确定外部指针引用可靠的可执行镜像,其中它的名字包含在导入表312中。由于可执行镜像的名称没有被程序装载程序208(图2)修改,确认程序204可以确保可靠的可执行镜像的名称不会由于使用参考数字签名和真实数字签名而被修改。
虽然,采用各种不同的实施例,上面详细地展示、描述、指出本发明的新颖创新特征,但是本领域的技术人员应当理解,在不脱离本发明的精神,可以对描述的过程和设备的形式和细节做不同的省略、替换、改变。本发明的范围是由所附权利要求表明,而不是前面的描述表明。所有在权利要求的条款的范围和含义之内的改变,都包含在它们的范围中。

Claims (15)

1、一种用于确定可执行镜像的可靠性的系统,该系统包括:
具有一个或多个指针的可执行镜像,其中可执行镜像包括表明每个指针是否引用在可执行镜像之中位置的信息;及
确认程序,能够确定每个指针引用的各自位置是否在可执行镜像之中。
2、如权利要求1所述的系统,其中,指针引用在可执行镜像中的导入表。
3、如权利要求1所述的系统,其中,确认程序根据指针不引用可执行镜像内的位置的判定结果生成告警。
4、如权利要求1所述的系统,其中,确认程序根据指针不引用可执行镜像内的位置的判定结果生成告警给可执行镜像的源。
5、一种用于确定可执行镜像的可靠性的系统,该系统包括:
第一可执行镜像;
第二可执行镜像,包括引用第一可执行镜像内位置的指针;及
确认程序,能够确定指针是否引用第一可执行镜像内的位置。
6、如权利要求5所述的系统,其中,确认程序根据指针不引用第一可执行镜像内的位置的判定结果生成告警。
7、如权利要求5所述的系统,其中,确认程序根据指针不引用第一可执行镜像内的位置的判定结果生成告警给可执行镜像的提供者。
8、如权利要求5所述的系统,其中,确认程序通过下列步骤确定指针是否引用第一可执行镜像内的位置:
从操作系统请求第一可执行镜像的基址;
读位于第一可执行镜像开始位置的预先定义的头,头表明第一可执行镜像的开始和结束地址;及
确定指针是否如预先定义的头所表明的那样引用在第一可执行镜像内的位置。
9、一种能够确定可执行镜像的可靠性的系统,该系统包括:
第一可执行镜像,可装载到存储器;
第二可执行镜像,可装载到存储器,所述第二可执行镜像包括:
导入表,具有第一可执行镜像的标识和一个或多个外部指针,其中每个外部指针引用第一可执行镜像内的位置;及
代码段,包含机器码和一个或多个导入指针,每个导入指针引用导入表中的位置;及
计算机,含有确认程序,所述确认程序能够根据除去每个导入指针和外部指针的可执行镜像的所选的内容,在第一时间点生成参考数字签名,其中,确认程序根据除去一个或多个指针之中的每一个的可执行镜像的所选的内容生成真实数字签名,其中,确认程序确定参考数字签名是否匹配真实数字签名,并且,其中,确认程序确定每个导入指针是否引用第一可执行镜像内的位置。
10、一种用于确定可执行镜像的可靠性的方法,该方法包括:
标识已经装载到存储器中的可执行镜像的一个或多个位置,每个标识位置具有通过程序装载程序绑定到存储器中选择的地址的指针;及
确定每个在被标识的位置的指针是否引用由可执行镜像表明的目的地址。
11、如权利要求10所述的方法,其中,目的地址是位于可执行镜像的导入表中的地址。
12、如权利要求10所述的方法,其中,目的地址是另一个可执行镜像中的地址。
13、一种用于确定可执行镜像的可靠性的系统,该系统包括:
用于标识已经装载到存储器中的可执行镜像的一个或多个位置的装置,每个标识的位置具有通过程序装载程序绑定到存储器中的选定地址的指针;及
用于确定每个在标识位置的指针是否引用由可执行镜像表明的目的地址。
14、如权利要求13所述的系统,其中,目的地址是位于可执行镜像的导入表中的地址。
15、如权利要求13所述的系统,其中,目的地址是其它可执行镜像中的地址。
CNB2005100894378A 2000-07-25 2000-07-25 确认动态可连接可执行镜像的可靠性的系统和方法 Expired - Fee Related CN100394385C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
HK06103685A HK1083653A1 (en) 2000-07-25 2006-03-24 System and method of verifying the authenticity ofdynamically connectable executable images

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2000/020182 WO2002008873A1 (en) 2000-07-25 2000-07-25 System and method of verifying the authenticity of dynamically connectable executable images

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB00819775XA Division CN1222854C (zh) 2000-07-25 2000-07-25 确认动态可连接可执行镜像的可靠性的方法

Publications (2)

Publication Number Publication Date
CN1722091A true CN1722091A (zh) 2006-01-18
CN100394385C CN100394385C (zh) 2008-06-11

Family

ID=21741611

Family Applications (2)

Application Number Title Priority Date Filing Date
CNB2005100894378A Expired - Fee Related CN100394385C (zh) 2000-07-25 2000-07-25 确认动态可连接可执行镜像的可靠性的系统和方法
CNB00819775XA Expired - Fee Related CN1222854C (zh) 2000-07-25 2000-07-25 确认动态可连接可执行镜像的可靠性的方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNB00819775XA Expired - Fee Related CN1222854C (zh) 2000-07-25 2000-07-25 确认动态可连接可执行镜像的可靠性的方法

Country Status (10)

Country Link
EP (1) EP1303802B1 (zh)
JP (1) JP4698925B2 (zh)
KR (1) KR100752067B1 (zh)
CN (2) CN100394385C (zh)
AU (2) AU6371500A (zh)
BR (1) BRPI0017287B1 (zh)
CA (1) CA2416304C (zh)
HK (2) HK1057115A1 (zh)
MX (1) MX237690B (zh)
WO (1) WO2002008873A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2391965B (en) * 2002-08-14 2005-11-30 Messagelabs Ltd Method of, and system for, heuristically detecting viruses in executable code
US8037515B2 (en) 2003-10-29 2011-10-11 Qualcomm Incorporated Methods and apparatus for providing application credentials
WO2005074397A2 (en) 2004-02-05 2005-08-18 Kings Information & Network Computer security apparatus and method using security input device driver
US7584509B2 (en) * 2004-06-12 2009-09-01 Microsoft Corporation Inhibiting software tampering
EP1757047B1 (en) * 2004-06-29 2019-11-06 Nokia Technologies Oy Method and apparatus for transmitting/receiving control message related to packet call service in an ip multimedia subsystem
US8156488B2 (en) 2004-10-20 2012-04-10 Nokia Corporation Terminal, method and computer program product for validating a software application
EP1877947A4 (en) * 2005-05-05 2009-11-25 Certicom Corp AUTHENTICATION OF RETROINSTALLATION ON A MICROLOGICIEL
KR100938672B1 (ko) * 2007-11-20 2010-01-25 한국전자통신연구원 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법
JP5740573B2 (ja) * 2010-05-13 2015-06-24 パナソニックIpマネジメント株式会社 情報処理装置および情報処理方法
US8543841B2 (en) * 2011-06-30 2013-09-24 Oracle International Corporation Secure hosted execution architecture
KR101630214B1 (ko) 2015-01-19 2016-06-14 김종근 전지의 기능검사용 클램핑 장치
US11244054B2 (en) 2017-11-03 2022-02-08 Nokia Technologies Oy Method and apparatus for trusted computing
US11055105B2 (en) * 2018-08-31 2021-07-06 Micron Technology, Inc. Concurrent image measurement and execution
JP7262269B2 (ja) * 2019-03-27 2023-04-21 キヤノン株式会社 情報処理装置、及び情報処理装置の制御方法、プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2102883A1 (en) * 1993-02-26 1994-08-27 James W. Arendt System and method for lazy loading of shared libraries
US5559884A (en) * 1994-06-30 1996-09-24 Microsoft Corporation Method and system for generating and auditing a signature for a computer program
US5692047A (en) * 1995-12-08 1997-11-25 Sun Microsystems, Inc. System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources
DE19840029C1 (de) * 1998-09-02 2000-04-20 Siemens Ag Verfahren zum Linken von in einen Arbeitsspeicher eines Prozessors nachgeladenen Programmodulen auf einer Chipkarte
JP4166437B2 (ja) * 2001-01-31 2008-10-15 株式会社日立製作所 真正性出力方法及びその実施装置並びにその処理プログラム

Also Published As

Publication number Publication date
MXPA03000727A (es) 2004-03-26
CN1454338A (zh) 2003-11-05
HK1057115A1 (en) 2004-03-12
CN100394385C (zh) 2008-06-11
BR0017287A (pt) 2003-06-24
CA2416304C (en) 2010-11-30
KR20030045015A (ko) 2003-06-09
EP1303802A1 (en) 2003-04-23
CA2416304A1 (en) 2002-01-31
AU2000263715B2 (en) 2004-11-04
HK1083653A1 (en) 2006-07-07
JP2004505343A (ja) 2004-02-19
MX237690B (es) 2006-06-12
JP4698925B2 (ja) 2011-06-08
BRPI0017287B1 (pt) 2016-11-01
WO2002008873A1 (en) 2002-01-31
KR100752067B1 (ko) 2007-08-28
EP1303802B1 (en) 2013-01-16
CN1222854C (zh) 2005-10-12
AU6371500A (en) 2002-02-05

Similar Documents

Publication Publication Date Title
CN1222854C (zh) 确认动态可连接可执行镜像的可靠性的方法
US6681348B1 (en) Creation of mini dump files from full dump files
US6802006B1 (en) System and method of verifying the authenticity of dynamically connectable executable images
US7278059B2 (en) Method for testing operating system components
US8930884B2 (en) Efficient extraction of software dependencies from program code
EP0632377B1 (en) Method for testing a message-driven operating system
US7823006B2 (en) Analyzing problem signatures
US20040054988A1 (en) Certification test suite
US6735719B2 (en) Method and system for performing load testings on software applications
US8214809B2 (en) Grid-enabled ANT compatible with both stand-alone and grid-based computing systems
US7650504B2 (en) System and method of verifying the authenticity of dynamically connectable executable images
US20060265646A1 (en) System, method, and computer program product for detection of potentially-problematic terminology in documents
CN1940927A (zh) 捕获和传送文件系统的密集诊断数据的方法和装置
TW434478B (en) Method for testing the integrity of software pre-installed in a computer hard disk
US20080022263A1 (en) Identifying The Origin Of Application Resources
US20050086633A1 (en) Content layers
US6438714B1 (en) Method and apparatus for testing large arrays of storage devices
US20040054989A1 (en) Method for determining scope and cause of memory corruption
US20050229162A1 (en) Systems and methods for providing multi-environment test automation
US6421827B1 (en) System and method for detecting and reordering loading patterns
US20050278687A1 (en) System and method for facilitating computer software features requested by end users
US6775822B1 (en) Method and apparatus for passing null references between software components through legacy framework
US20030204525A1 (en) Application control method, and implementation device and processing program for the same
JP7385105B2 (ja) 情報処理プログラム、情報処理装置および情報処理方法
US6782523B2 (en) Parallel configurable IP design methodology

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1083653

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1083653

Country of ref document: HK

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: 20080611

Termination date: 20170725