CN101243412A - 用于安全检查模块中的可执行应用程序的系统、方法和计算机程序产品 - Google Patents
用于安全检查模块中的可执行应用程序的系统、方法和计算机程序产品 Download PDFInfo
- Publication number
- CN101243412A CN101243412A CNA2006800296894A CN200680029689A CN101243412A CN 101243412 A CN101243412 A CN 101243412A CN A2006800296894 A CNA2006800296894 A CN A2006800296894A CN 200680029689 A CN200680029689 A CN 200680029689A CN 101243412 A CN101243412 A CN 101243412A
- Authority
- CN
- China
- Prior art keywords
- code
- computer module
- executable
- computer
- processing unit
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- 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
- G06F21/54—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 by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
为计算机模块的中央处理单元开发应用程序。编写和调试应用的源代码。应用程序的源代码接着被编译和汇编,以提供可执行应用程序。可执行应用程序被加载到计算机模块中。安全检查可执行代码被插入在加载到计算机模块的可执行应用程序中,以防止可执行应用程序在计算机模块的指定存储区域之外的读取、写入和跳转。将其中插入安全检查代码的可执行应用程序存储在计算机模块中。
Description
技术领域
本发明涉及数据处理系统、方法和计算机程序产品,并且更特别地涉及用于为计算机模块的中央处理单元开发和执行应用程序的系统、方法和计算机程序产品。
背景技术
计算机模块广泛用于许多消费者和工业应用中。如这里所使用的,计算机模块包括配置为执行计算机程序的中央处理单元(CPU)、可以包括一类或多类存储设备并配置为存储计算机程序和/或数据的存储器、和一个或多个外围设备,比如输入/输出(I/O)设备和/或射频设备,它们可用于执行想要的计算机模块功能。计算机模块可以展现大范围的物理尺寸和/或复杂性。
相对紧凑的计算机模块的一个例子是由本申请的受让人索尼爱立信移动通信公司推出的GR47/GR48模块。如在名为“Sony EricssonGR47/GR48 Increased Flexibility Simplified ApplicationDevelopment”的初级数据表中所描述的,Sony Ericsson GR47/GR48是非常先进的无线电设备,其在紧凑的单元(仅仅50×33×7.2mm)中满载有GSM/GPRS语音和数据特征的范围。对机器到机器(M2M)通信进行优化,GR47/GR48特征在于能够使开发者有效利用GPRS的固有TCP/IP协议栈。GR47/GR48可配置为使得能够最佳利用所提供的输入/输出引脚的扩展范围,使得能容易地适应于开发者的M2M解决方案。嵌入式控制器对于诸如警报的区域中的作战应用、仪表读数和出售应用是可访问的。
如也在该初级数据表中提到的,GR47/GR48可以用作为单独的产品或利用M2mpower包与M2mpower商业解决方案相结合。M2mpowef包提供使开发者能够开发应用并直接将应用嵌入到GR47/GR48中的支持环境。将应用嵌入到GR47/GR48允许开发者使开发成流水线,缩短上市时间并降低总的方案成本。M2mpower包包括开发者工具、文档、培训和支持。M2mpower包在名为“Sony Ericsson M2mpower Package A TotalSolution For Rapid,Cost-Effective Application Development”的小册子中描述。
以上描述的M2mpower包是为计算机模块定制的集成开发环境(IDE)的例子,该计算机模块允许第三方开发者开发可以在计算机模块上运行的应用。可以为给定的计算机模块提供定制的集成开发环境,比如M2mpower包。不幸的是,开发和维护定制的集成开发环境成本可能会很高。而且,程序的存储空间可能限制于计算机模块。因此,期望提供这样的集成开发环境,该集成开发环境可以降低或最小化模块上由它使用的存储。
发明内容
本发明的示例实施例提供了用于为计算机模块的中央处理单元开发应用程序的方法。编写和调试应用的源代码。应用程序的源代码接着被编译和汇编,以提供可执行应用程序。可执行应用程序被加载到计算机模块中。安全检查可执行代码被插入在加载到计算机模块的可执行应用程序中,以控制可执行应用程序在计算机模块的指定存储区域之外的读取、写入和/或跳转。在一些实施例中,安全检查可执行代码防止可执行应用程序在计算机模块的指定存储区域之外进行读取、写入和/或跳转。其中插入有安全检查代码的可执行应用程序被存储在计算机模块中。
在一些实施例中,当编译和汇编时,源代码链接到应用程序可用的计算机模块的固有函数的映象。而且,在一些实施例中,当插入安全检查可执行代码时,其中插入有安全检查代码的可执行应用程序可以被重新链接。并且,在一些实施例中,在存储了其中插入有安全检查代码的可执行应用程序之后,可以在计算机模块的中央处理单元上执行其中插入有安全检查代码的可执行应用程序。
在一些实施例中,通过在计算机模块中提供机器代码安全保障工具来执行插入安全检查可执行代码,其中机器代码安全保障工具被配置为将安全检查可执行代码插入到被加载到计算机模块的程序中。机器代码安全保障工具处理加载到计算机模块中的可执行应用程序,以便将安全检查可执行代码插入到被加载到计算机模块的可执行应用程序中。
在一些实施例中,计算机模块可以包括易失性存储器和非易失性存储器。安全检查可执行代码可以控制和/或防止可执行应用在易失性存储器的指定存储区域之外的读取和/或写入,和/或在非易失性存储器的指定区域之外的跳转。而且,在一些实施例,计算机模块可以包括由中央处理单元控制的射频部分,并且应用程序可配置为提供射频部分的功能。
本发明的其它实施例允许机器代码应用程序在计算机模块的中央处理单元上直接执行,这是通过在机器代码应用程序在中央处理单元上直接执行时对它进行读取、写入和/或跳转检查而实现的,以控制机器代码应用程序在计算机模块的指定存储区域之外的读取、写入和/或跳转。当在执行期间执行读取、写入和/或跳转检查之前,根据前述的任何实施例可将安全检查可执行代码插入可执行应用程序中。
本领域技术人员将会理解,上面结合开发应用程序和/或执行应用程序的方法已经描述了本发明的实施例。但是,还可以根据本发明的各种实施例来提供类似系统,比如集成开发环境,以及类似的计算机程序产品。
根据本发明的一些实施例的计算机模块包括中央处理单元、配置为存储在中央处理单元上执行的程序的存储器、和在存储器中配置为在中央处理单元上直接执行的机器代码应用程序。这些实施例还可包括在存储器中配置为在中央处理单元上直接执行并且控制和/或防止机器代码应用程序在存储器的指定区域之外进行读取、写入和/或跳转的机器代码安全保障工具。
根据本发明的其它实施例的计算机模块可以包括在存储器中配置为在中央处理单元上直接执行并且将安全检查可执行代码插入到应用程序中的机器代码安全保障工具,以便控制和/或防止应用程序在计算机模块的指定存储区域之外进行读取、写入和/或跳转。在存储器中的至少一个应用程序被配置为在中央处理单元上直接执行,并且在其中包含安全检查可执行代码。还可以提供类似的方法和计算机程序产品。
附图说明
图1是根据本发明的示例实施例的计算机模块的框图。
图2是根据本发明的示例实施例用于执行应用程序的操作的流程图。
图3是根据本发明的示例实施例用于当应用程序执行时对它进行读取、写入和跳转检查的操作的流程图。
图4是根据本发明的示例实施例为应用开发所执行的操作的流程图。
图5是根据本发明的示例实施例被执行用来插入安全检查可执行代码的操作的流程图。
图6是根据本发明的示例实施例的应用程序开发环境的功能框图。
具体实施方式
之后参考附图来更全面地描述本发明,在附图中示出了本发明的说明性实施例。但是,本发明还以许多不同的形式体现并且不应当理解为限制于这里叙述的实施例。相反,这些实施例被提供以便本公开充分和完整,并且将本发明的范围完全传递给本领域技术人员。
将会理解的是,当元件被称之为“耦合到”、“连接到”或“响应于”另一个元件时,它可能直接耦合到、连接到或响应于其它元件,或者中间元件也可以存在。相比之下,当元件被称之为“直接耦合到”、“直接连接到”或“直接响应于”另一个元件时,不存在中间元件。相同的编号通篇是指相同的元件。如这里所使用的,术语“和/或”包括一个或多个关联的所列出项的任何和所有组合并且可以用“/”来缩写。
还将理解的是,尽管术语第一、第二等可以在这里用来描述各种元件,但这些元件不应当被这些术语限制。这些术语只用来区别一个元件与另一个元件。
这里所使用的术语只用于描述特定实施例的目的而不试图限制本发明。如这里所使用的,单数形式“一”、“一个”和“该”旨在也包括多数形式,除非上下文清楚指明不是这样。将进一步理解,术语“包括”和“包含”当在这里使用时规定了所阐明特征、步骤、操作、元素和/或部件的存在,但是不排除一个或多个其它特征、步骤、操作、元素、部件和/或其组合的存在或添加。
除非相反定义,这里使用的所有术语(包括技术和科学术语)具有与本发明所属技术领域的普通技术人员通常理解的相同的含义。将进一步理解,诸如在常用词典里所定义的术语应当被解释为具有与其在相关领域的上下文中的意思相一致的意思,并且将不按照理想化的或非常正式意思来解释,除非特意在这里这样定义。
参考根据本发明的实施例的方法、系统和计算机程序产品的框图和流程图来在下面的部分描述本发明。将会理解,框图或流程图的方框以及框图或流程图中方框的组合可以至少部分地由计算机程序指令来实现。这些计算机程序指令可以被提供给一个或多个企业、应用、个人、普遍和/或嵌入式计算机系统,使得经由计算机系统执行的该指令创建用于实现方框图的一个或多个方框中规定的功能/动作的装置、模块、设备、方法。也可以在其它实施例中使用通用计算机系统和/或专用硬件的组合。
这些计算机程序指令还可存储在计算机系统的存储器中,以命令计算机系统以特定的方式工作,使得存储在存储器中的指令产生包括实现一个或多个方框中规定的功能/动作的计算机可读程序代码的制造物品。计算机程序指令还可以加载到计算机系统中以使一系列操作步骤由计算机系统执行,从而产生计算机实现的进程,使得在处理器上执行的指令提供用于实现一个或多个方框中规定的功能/动作的步骤。由此,框图和/或流程图的给定的一个或多个方框为方法、计算机程序产品和/或系统提供(结构的和/或装置加功能的)支持。
还应当注意,在一些替换实施方式中,在流程图中标注的功能/动作可能不是按流程图标注的顺序发生的。例如接连示出的两个方框可以事实上基本并发地执行,或者这些方框有时以相反的顺序执行,这取决于所涉及的功能/动作。最后,一个或多个方框的功能可以是单独的或与其它方框的功能组合。
图1是根据本发明的示例实施例的计算机模块的框图。如图1所示,计算机模块100包括中央处理单元(CPU)110和配置为存储在CPU110上执行的程序的存储器120。存储器120可以是单个类型的存储设备,或可以表示分层存储设备,包括易失性、非易失性、固态、磁和/或光存储设备。
一个或多个机器代码应用程序124驻留在存储器120中。机器代码应用程序124被配置为在CPU110上直接执行。机器代码安全保障工具122也驻留在存储器120中,并且配置为在CPU110上直接执行并控制机器代码应用程序124在存储器120的指定区域之外的读取、写入和/或跳转。将会理解,该指定区域可以是连续的存储器区域和/或多个不连续的区域。在一些实施例中,机器代码安全保障工具122配置为将安全检查可执行代码插入到应用程序124,以防止可执行应用程序124在计算机模块的指定存储区域之外进行读取、写入和/或跳转。在这些实施例中,应用程序124可以在其中包含安全检查可执行代码126。
仍参考图1,其它硬件130还可以包括在模块100中以例如提供人机接口、机器到机器(M2M)接口、射频(RF)部分和/或其它传统硬件部件。在一些实施例中,应用程序124配置为提供和/或补充其它硬件130的功能。
本发明的一些实施例可以允许传统编译器和汇编器被用来生成应用程序,但是可以通过将安全检查可执行代码插入到可执行应用程序中来降低或防止应用程序干扰计算机模块的操作。而且,通过允许可执行应用程序被加载到计算机模块中,由计算机模块上的集成开发环境占用的空间可以被降低或最小化。
而且,本发明的一些实施例允许第三方为嵌入式计算机模块提供应用程序。尤其,本发明的一些实施例允许第三方用户生成应用程序,该应用程序在嵌入式计算机模块上运行而不会产生不适当的安全关注。在具有开放操作系统的传统个人计算机上,依靠用户来确保应用程序不产生安全关注或引起个人计算机崩溃。作为比较,在嵌入式模块中,模块提供商可能需要确保模块持续地正常工作而不考虑第三方开发者加载到模块上的应用程序。
图2是根据本发明的示例实施例用于在计算机模块上执行一个或多个应用程序的操作的流程图。通过机器代码安全保障工具122和/或安全检查可执行代码126对图1的应用程序124执行这些操作。
特别地,如图2所示,在方框200,机器代码应用程序124可以在计算机模块100的CPU110上直接执行,这是通过在机器代码应用程序124在CPU110上直接执行时对它进行读取、写入和/或跳转检查而实现的,以控制机器代码应用程序124在计算机模块110的指定存储区域之外的读取、写入和/或跳转。在一些实施例中,可以防止指定存储区域之外的读取、写入和/或跳转。
图3是根据本发明的各种实施例被执行用于读取、写入和/或跳转检查的操作的流程图,其可对应于图2的方框200。特别地,如图3所示,在方框310,一个或多个机器代码应用程序124被加载到计算机模块100。将会理解,机器代码应用程序124的加载可完全发生在后续操作开始之前、可分段发生在后续操作开始之前、和/或可以结合后续操作逐行被执行。
参考方框320,诸如图1的安全检查可执行代码126的安全检查可执行代码被插入到在方框310至少部分加载到计算机模块100的应用程序124中,以控制和/或防止应用程序在计算机模块100的指定区域之外进行读取、写入和/或跳转。在一些实施例中,计算机模块100可以包括诸如随机访问存储器(RAM)的易失性存储器和诸如闪速存储器的非易失性存储器。安全检查可执行代码126可以控制和/或防止可执行应用程序124在RAM的指定区域之外的读取和/或写入,和/或在闪速存储器的指定区域之外的跳转。
仍然参考图3,在方框330,所期望的是重新链接应用程序124,因为在方框320在其中插入了添加的安全检查可执行代码126。最后,在方框340,在CPU上执行其中插入有安全检查可执行代码126的应用程序124。在开发期间和/或在实际的现场使用期间进行该执行。
图4是根据本发明的一些实施例为计算机模块的中央处理单元开发应用程序所执行的操作的流程图,比如为图1的计算机模块100的中央处理单元110开发应用程序124。这些操作可根据本发明的一些实施例提供集成开发环境。如图4中所示,在方框410,编写和调试应用程序的源代码。在一些实施例中,传统源代码语言,比如C,可以与传统源代码编写和调试工具一起使用。不必使用专有和/或定制的源代码语言和/或工具。本领域技术人员还将理解,也可使用C之外的源代码语言。这些源代码语言应当包括编译器,该编译器将源代码转换为可在中央处理单元110上执行的本地机器指令。因此,例如,Basic、Java、ADA、Pascal、汇编语言等可以在一些实施例中使用。
因此,在方框420,源代码可以被编译和汇编以提供可执行应用程序。在一些实施例中,可以使用传统编译器/汇编器,比如免费软件GNU编译器集合(GCC)。不需要提供或维护定制的编译器和/或汇编器。在方框310,可执行应用程序接着被加载到计算机模块中,如已经结合图3描述的,并且在方框320,安全检查可执行代码被插入在可执行应用程序中,如已经结合图3描述的。接着,在方框430,可执行应用程序以及插入其中的安全检查代码被存储在模块中。最后,在方框340,包括安全检查代码的可执行应用程序接着在开发环境和/或操作环境中执行,如上面已经结合图3描述的。
图5是被执行用来插入安全检查可执行代码的操作的流程图,其可对应于图3和/或4的方框320。如图5所示,在方框510,机器代码安全保障工具,比如图1的机器代码安全保障工具122被加载到计算机模块100中。机器代码安全保障工具配置为将安全检查可执行代码插入到被加载到计算机模块的程序中。接着,在方框520,由机器代码安全保障工具处理加载到计算机模块的可执行应用程序,以由此将安全检查可执行代码,比如安全检查可执行代码126插入到被加载到计算机模块100的机器代码应用程序124
现在将提供图3-5的操作的附加讨论。特别地,再次参考方框420,在编译和汇编期间,源代码被链接到应用程序可用的计算机模块100的固有函数的映象。包含开发者可用的固有函数的映象文件的例子在表1中说明。映象文件通过告诉链接器当应用程序调用给定函数时跳转到何处来允许开发者的应用程序成功链接。如表1所示,用于打印、发送、拨号、回答、挂断、短消息服务(SMS)和/或引脚激活的函数可以在一些实施例中提供。
表1
intrinsic_function_map | |
*(.text).text | |
0×020000000×020000040×020000080×0200000c0×020000100×020000140×020000180×0200001c0×020000200×020000240×020000280×0200002C | _m2m_printf_m2m_sendAT_m2m_dial_m2m_answer_m2m_hangup_m2m_sms_send_m2m_sms_read_m2m_sms_delete_m2m_pinl_m2m_pin2_m2m_pin3_m2m_pin4 |
而且,在方框320,当插入安全检查可执行代码时,插入有安全检查代码的可执行程序可以被重现链接以补偿插入的所添加的安全检查代码。
现在将提供本发明的各种实施例的附加讨论。特别地,比如上述的Sony Ericsson GR47/GR48的计算机模块的许多用户可能不具有设计并构建他们自己的模块/控制器硬件的资源。由此,诸如GR47/GR48的模块可能允许开发者编写一个或多个在模块上直接运行的嵌入式应用,使得可以不需要使用单独的硬件控制器。不幸的是,嵌入式应用可作为被解释的语言来运行,这可能导致了相对慢的执行。嵌入式应用还可上载到模块中作为文本源代码,这可能消耗过多的存储器或可能为了不包括例如注释的正确简洁源代码而给开发者带来增加的负担。源代码还可以用定制语言编写,比如可以是“类C”的,但是可能缺乏真实C的丰富性并且可能需要被维护。最后,可能需要设计和维护定制的集成开发环境。
商业可替换方式,比如Java可能不实际,因为即使Java虚拟机被减小到小的尺寸,但是它仍然可能消耗模块的存储器中过多的资源。而且,到诸如Java的商业可替换方式的转换可能对现在的开发者来说是不期望的,这些开发者已经用专有的“类C”语言来编码了。
本发明的一些实施例可以允许传统编辑器、汇编器和编译器与传统语言一起用来编译能在模块上直接加载的机器代码应用。根据本发明的一些实施例的安全保障工具可以为加载的应用程序提供安全。
图6功能上说明了根据本发明的各种实施例的应用程序开发环境。开发者使用传统C编辑器编写C代码源文件610。可以提供固有库跳转表630的映象,如上面结合表1描述的。固有库跳转表630可允许开发者使用传统的集成开发环境,比如GNU编译器、GNU汇编器和GNU链接器620,来编译代码,并且单步调试本机上的代码以调试代码。商业集成开发环境的所有能力对于开发者可用。计算机模块的特性不需要指向要使用集成开发环境的开发者,并且定制的集成开发环境不需要被维护或支持。
为了编译,开发者可以运行GNU编译器620来产生编译的可执行代码。编译器620可包含GNU免费软件编译器、汇编器和链接器,链接到固有函数跳转表630的链接器映象文件,以及由编译器用来生成编译的可执行代码的配置信息。映象文件630可以包含表示固有库函数的静态闪速跳转表的存储地址。用户可能不知道没有在映象630中提供的其它函数调用,使得用户可能不能链接到其它函数调用。
由于编译器620的操作,产生了可执行代码。但是,这个可执行代码潜在的为不安全的可执行代码640,因为它可以在指定的存储区域之外读取、写入和/或跳转并且由此可能破坏模块的其它操作。
加载器工具650接着被用于将不安全的可执行代码640的映像上载到模块100′上。如上面结合方框310所述的,映像可以完全、分段或逐行地被加载。模块100′接着运行安全保障工具122′以使可执行代码安全以作为本地代码运行,并由此产生了安全的可执行代码124′,其对应于具有图1的安全检查可执行代码126的应用程序124。如方框660所示,安全的可执行代码124′可存储在闪速存储器中。
现在将提供根据本发明的一些实施例的机器代码安全保障工具122、122′的附加讨论。特别地,所期望的是确保任何嵌入式应用是安全的,意味着它不能逃离其资源“沙盒”。嵌入式应用可以提供给闪速存储器的专用段,嵌入式应用将驻留其中。嵌入式应用将从该闪速存储单元起执行。嵌入式应用还可能提供给RAM的专用段,其可以用于程序变量。嵌入式应用还可以提供给专用任务,并且该任务的寄存器栈可能也驻留在该RAM空间中。
在本发明的一些实施例中,安全保障工具122、122′采用开发者的不安全的可执行机器代码640并且插入对读取检查、写入检查和分支检查例程的调用。所有读取、存储和分支指令可以由此被修改以确保它们在分配的空间中运行。例如,确保了所有存储(写入)指令指向所分配的RAM空间中的存储器。而且,可以验证所有分支和跳转指令指向闪速空间中的存储器。
现在想根据本发明的各种实施例来提供潜在不安全的可执行代码640以及机器代码安全保障工具122/122′如何能够防止不安全代码操作的例子。将描述不安全存储或写入指令的例子。但是,类似例子可以应用于读取和跳转指令。下面的例子将被当作仅仅是说明性的且不应当理解为限制本发明。
特别地,随后的C代码可能被认为是不安全的,因为它能潜在地破坏外部的存储器:
char*ptr=0x00080000;//指向EA空间的边缘
*(ptr+0x10000)=0xBB;//破坏外部的存储器
这个C代码可以包含在图6的C源文件610中。编译器/汇编器/链接器620可以将源代码编译成随后的汇编代码:
LDRr0,0xBB//用要写入的值加载r0
LDRr2,0x00080000//R2指向存储空间的边缘
STRr0,[r2+#10000]//存储到r2+10000的地址
在一些实施例中,安全保障工具122/122′会用以下代码来替换上面的STR(存储)指令:
LDRr0,0xBB//用要写入的值加载r0
LDRr12,[r2+#10000]//将地址[r2+#10000]放到r12中
BRwrite_check//调用write_check函数
STRr0,r12//如果函数返回,则向地址写入
其中write_check函数可以是如下:
CMPr12,write_ea_start
BLE write_exception//如果r12是下有效范围,则退出
CMPr12,write_ea_end
BGEwrite_exception//如果r12是上有效范围,则退出
如所看到的,write_check函数将写入地址与有效起始写入地址和有效结束写入地址进行比较,并且如果写入地址超出范围,则产生异常。因此,如果write_check子例程检测到超出范围指针,则可以挂起应用任务,和/或可以报告出错消息。可以为读取和跳转指令提供类似函数。将会理解的是,因为安全检查,嵌入式应用可能操作稍微有些慢,但是速度可能仍然比使用解释器的情况快很多。
如结合方框330一般描述的,安全保障工具122、122′能对二进制可执行代码进行操作,使得由于它插入安全检查代码,因此它还需要修改分支和跳转指令以反映目标的新存储地址。这个重新链接通过创建一个表来实现,该表包含原始代码地址和新的偏移量。当重新链接到达分支指令时接着对每个分支指令执行偏移量运算。例如,表2的分支偏移量表可以提供为:
表2
原始地址 | 偏移量 |
0x000800000x000800100x000800240x0008003C | 0x000x080x100x18 |
当安全保障工具12 2、122′遇到以下这一行时:
BR0x00080018,
工具会查找表2并确定从地址0x00080010到0x00080024的所有代码已经移动了8个字节。因此,分支指令可以用以下指令来替换:
BR0x00080020
在运行时,模块100、100′可以执行C语言启动过程,其可包括将所有RAM清零,将所有静态和恒定变量复制到它们的正确RAM地址,和初始化栈和堆的指针。模块100、100′可以接着开始专用的、低优先权的嵌入式应用任务,将它指向嵌入式应用主函数并允许嵌入式应用执行。第二任务可以监控嵌入式应用任务,对足够的栈空间和其它潜在问题进行检查。问题可以被报告给用户。
本发明的一些实施例可以允许应用更大,因为应用可以存储在模块上作为机器代码,这通常比解释的源代码更紧凑。因此,应用可以更大且仍然适合于分配的存储空间。而且,应用可以作为本地代码运行,并且因此可以比使用解释的脚本运行得更快。开发者还可以产生更强大的应用,因为开发者可以访问完整的C和/或其它语言,和/或可以访问商业集成开发环境。代码编写还可以变得更容易,因为可以使用商业集成设备环境的代码编写特征。而且,定制的语言和集成开发活动可能不需要得到模块销售商的支持。
在附图和说明书中,已经公开了本发明的实施例,并且尽管应用了特定的术语,但是它们只以通用和描述性的意义上使用而不是为了限制的目的,本发明的范围在随后的权利要求中叙述。
Claims (26)
1.一种用于为计算机模块的中央处理单元开发应用程序的方法,包括:
将编译和汇编的可执行应用程序加载到计算机模块中;
将安全检查可执行代码插入在加载到计算机模块的可执行应用程序中,以控制可执行应用程序在计算机模块的指定存储区域之外的读取、写入和/或跳转;和
将其中插入安全检查代码的可执行应用程序存储在计算机模块中。
2.根据权利要求1的方法,其中将编译和汇编的可执行应用程序加载到计算机模块中是通过以下步骤进行的:
编写和调试应用程序的源代码;并且
编译和汇编应用程序的源代码,以提供编译和汇编的可执行应用程序。
3.根据权利要求2的方法,其中编译和汇编还包括将源代码链接到应用程序可用的计算机模块的固有函数的映象。
4.根据权利要求3的方法,其中插入安全检查可执行代码还包括将可执行应用程序与插入其中的安全检查代码重新链接。
5.根据权利要求1的方法,其中在存储其中插入安全检查代码的可执行应用程序之后执行随后的步骤:
在中央处理单元上执行其中插入安全检查代码的可执行应用程序。
6.根据权利要求1的方法,其中插入安全检查可执行代码包括将安全检查可执行代码插入到被加载到计算机模块的可执行应用程序中,以防止可执行应用程序在计算机模块的指定存储区域之外进行读取、写入和/或跳转。
7.根据权利要求1的方法,其中插入安全检查可执行代码包括:
在计算机模块中提供机器代码安全保障工具,该机器代码安全保障工具被配置为将安全检查可执行代码插入到被加载到计算机模块的程序中;并且
使用机器代码安全保障工具来处理加载到计算机模块中的可执行应用程序,以便将安全检查可执行代码插入到被加载到计算机模块的可执行应用程序中。
8.根据权利要求1的方法,其中计算机模块包括易失性存储器和非易失性存储器,并且其中插入安全检查可执行代码包括将安全检查可执行代码插入到被加载到计算机模块的可执行应用程序中,以控制可执行应用程序在易失性存储器的指定存储区域之外的读取和/或写入,和/或在非易失性存储器的指定存储区域之外的跳转。
9.根据权利要求1的方法,其中计算机模块包括由中央处理单元控制的射频部分,并且其中可执行应用程序被配置为提供射频部分的功能。
10.一种用于为计算机模块的中央处理单元开发应用程序的计算机程序产品,该计算机程序产品包括在计算机可读介质中体现的计算机程序代码,该计算机程序代码配置为执行权利要求1的方法。
11.一种应用开发环境,配置为执行权利要求1的方法。
12.一种用于在计算机模块的中央处理单元上直接执行机器代码应用程序的方法,包括:
当机器代码应用程序在中央处理单元上直接执行时对它进行读取、写入和/或跳转检查,以控制机器代码应用程序在计算机模块的指定存储区域之外的读取、写入或跳转。
13.根据权利要求12的方法,其中读取、写入和/或跳转检查是通过加载计算机模块上的机器代码应用程序而进行的,并且其中读取、写入和/或跳转检查包括将安全检查可执行代码插入到被加载到计算机模块的机器代码应用程序中,以控制机器代码应用程序在计算机模块的指定存储区域之外的读取、写入和/或跳转。
14.根据权利要求13的方法,其中插入安全检查可执行代码还包括将机器代码应用程序与插入其中的安全检查代码重新链接。
15.根据权利要求12的方法,其中计算机模块包括易失性存储器和非易失性存储器,并且其中读取、写入和/或跳转检查包括当机器代码应用程序在中央处理单元上直接执行时对它进行读取、写入和/或跳转检查,从而控制可执行应用程序在易失性存储器的指定存储区域之外的读取和/或写入,和/或在非易失性存储器的指定存储区域之外的跳转。
16.根据权利要求12的方法,其中计算机模块包括由中央处理单元控制的射频部分,并且其中机器代码程序被配置为提供射频部分的功能。
17.一种用于为计算机模块的中央处理单元开发应用程序的计算机程序产品,该计算机程序产品包括在计算机可读介质中体现的计算机程序代码,该计算机程序代码配置为执行权利要求12的方法。
18.一种计算机模块,配置为执行权利要求12的方法。
19.一种计算机模块,包括:
中央处理单元;
存储器,配置为存储在中央处理单元上执行的程序;
在存储器中的机器代码应用程序,配置为在中央处理单元上直接执行;和
在存储器中的机器代码安全保障工具,配置为在中央处理单元上直接执行并且控制机器代码应用程序在存储器的指定区域之外的读取、写入和/或跳转。
20.根据权利要求19的计算机模块,其中存储器包括易失性存储器和非易失性存储器,并且其中机器代码安全保障工具配置为将安全检查可执行代码插入到机器代码应用程序中,以控制可执行应用程序在易失性存储器的指定存储区域之外的读取和/或写入,和/或在非易失性存储器的指定存储区域之外的跳转。
21.根据权利要求19的计算机模块,还包括由中央处理单元控制的射频部分,并且其中应用程序被配置为提供射频部分的功能。
22.一种用于为计算机模块的中央处理单元开发应用程序的计算机程序产品,该计算机程序产品包括在计算机可读介质中体现的计算机程序代码,该计算机程序代码配置为提供权利要求17的机器代码安全保障工具。
23.一种计算机模块,包括:
中央处理单元;
存储器,配置为存储在中央处理单元上执行的程序;
在存储器中的机器代码安全保障工具,配置为在中央处理单元上直接执行并且将安全检查可执行代码插入到应用程序中,以控制应用程序在计算机模块的指定存储区域之外的读取、写入和/或跳转;和
在存储器中的至少一个应用程序,配置为在中央处理单元上直接执行并且在其中包含安全检查可执行代码。
24.根据权利要求23的计算机模块,其中存储器包括易失性存储器和非易失性存储器,并且其中机器代码安全保障工具配置为将安全检查可执行代码插入到应用程序中,以控制可执行应用程序在易失性存储器的指定存储区域之外的读取和/或写入,和/或在非易失性存储器的指定存储区域之外的跳转。
25.根据权利要求23的计算机模块,还包括由中央处理单元控制的射频部分,并且其中应用程序被配置为提供射频部分的功能。
26.一种用于为计算机模块的中央处理单元开发应用程序的计算机程序产品,该计算机程序产品包括在计算机可读介质中体现的计算机程序代码,该计算机程序代码配置为提供权利要求23的机器代码安全保障工具。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/203,689 | 2005-08-15 | ||
US11/203,689 US8381198B2 (en) | 2005-08-15 | 2005-08-15 | Systems, methods and computer program products for safety checking executable application programs in a module |
PCT/US2006/011440 WO2007021320A2 (en) | 2005-08-15 | 2006-03-29 | Systems, methods and computer program products for safety checking executable application programs in a module |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101243412A true CN101243412A (zh) | 2008-08-13 |
CN101243412B CN101243412B (zh) | 2012-05-16 |
Family
ID=37654868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800296894A Expired - Fee Related CN101243412B (zh) | 2005-08-15 | 2006-03-29 | 用于安全检查模块中的可执行应用程序的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8381198B2 (zh) |
EP (1) | EP1915692A2 (zh) |
JP (1) | JP2009505275A (zh) |
CN (1) | CN101243412B (zh) |
WO (1) | WO2007021320A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023884A (zh) * | 2010-11-25 | 2011-04-20 | 深圳市科陆电子科技股份有限公司 | 一种嵌入式系统开发程序校验码自动生成的方法 |
CN111766797A (zh) * | 2019-04-02 | 2020-10-13 | 海盗船存储器公司 | 微控制器、存储模块及用于更新微控制器的韧件的方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7561930B2 (en) * | 2006-10-02 | 2009-07-14 | Fisher-Rosemount Systems, Inc. | Dynamic modifier function blocks for use in a process control system |
US8495607B2 (en) * | 2010-03-01 | 2013-07-23 | International Business Machines Corporation | Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations |
CN102750157A (zh) * | 2011-04-20 | 2012-10-24 | 中兴通讯股份有限公司 | 一种应用程序加载的方法及装置 |
KR101438979B1 (ko) * | 2012-12-31 | 2014-09-11 | 현대자동차주식회사 | 소프트웨어 검사 방법 및 시스템 |
JP6642114B2 (ja) * | 2015-03-05 | 2020-02-05 | 富士通株式会社 | 未知のバイナリプログラムに対する有効入力シーケンスの判定 |
US10671038B2 (en) | 2016-07-15 | 2020-06-02 | Fisher-Rosemount Systems, Inc. | Architecture-independent process control |
US10628167B2 (en) | 2018-02-21 | 2020-04-21 | International Business Machines Corporation | Runtime detection of code modification |
CN110941552B (zh) * | 2019-11-20 | 2023-07-07 | 广州大学 | 一种基于动态污点分析的内存分析方法及装置 |
JP7436848B2 (ja) * | 2020-09-23 | 2024-02-22 | 東芝情報システム株式会社 | Ffu検査装置及びffu検査用プログラム |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08147155A (ja) * | 1994-11-22 | 1996-06-07 | Sumitomo Metal Ind Ltd | オブジェクトプログラムの命令の変更/挿入方法及びシステム |
US6021272A (en) * | 1995-10-04 | 2000-02-01 | Platinum Technology, Inc. | Transforming and manipulating program object code |
US6151618A (en) * | 1995-12-04 | 2000-11-21 | Microsoft Corporation | Safe general purpose virtual machine computing system |
US6149318A (en) | 1997-04-15 | 2000-11-21 | Samuel C. Kendall | Link-time and run-time error detection, and program instrumentation |
US6275938B1 (en) * | 1997-08-28 | 2001-08-14 | Microsoft Corporation | Security enhancement for untrusted executable code |
US6014513A (en) * | 1997-12-23 | 2000-01-11 | University Of Washington | Discovering code and data in a binary executable program |
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6470493B1 (en) * | 1999-09-30 | 2002-10-22 | Compaq Information Technologies Group, L.P. | Computer method and apparatus for safe instrumentation of reverse executable program modules |
JP2002041170A (ja) * | 2000-07-27 | 2002-02-08 | Matsushita Electric Ind Co Ltd | プログラム実行制御装置 |
JP2004013556A (ja) | 2002-06-07 | 2004-01-15 | Matsushita Electric Ind Co Ltd | プロセッサ装置、コンパイル装置及びその方法 |
JP2004258728A (ja) * | 2003-02-24 | 2004-09-16 | Nippon Telegr & Teleph Corp <Ntt> | プログラム実行時間測定方法 |
-
2005
- 2005-08-15 US US11/203,689 patent/US8381198B2/en not_active Expired - Fee Related
-
2006
- 2006-03-29 CN CN2006800296894A patent/CN101243412B/zh not_active Expired - Fee Related
- 2006-03-29 JP JP2008526922A patent/JP2009505275A/ja active Pending
- 2006-03-29 WO PCT/US2006/011440 patent/WO2007021320A2/en active Application Filing
- 2006-03-29 EP EP06739911A patent/EP1915692A2/en not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023884A (zh) * | 2010-11-25 | 2011-04-20 | 深圳市科陆电子科技股份有限公司 | 一种嵌入式系统开发程序校验码自动生成的方法 |
CN111766797A (zh) * | 2019-04-02 | 2020-10-13 | 海盗船存储器公司 | 微控制器、存储模块及用于更新微控制器的韧件的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2007021320A2 (en) | 2007-02-22 |
WO2007021320A3 (en) | 2007-05-10 |
US20070038975A1 (en) | 2007-02-15 |
EP1915692A2 (en) | 2008-04-30 |
CN101243412B (zh) | 2012-05-16 |
JP2009505275A (ja) | 2009-02-05 |
US8381198B2 (en) | 2013-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101243412B (zh) | 用于安全检查模块中的可执行应用程序的系统和方法 | |
EP3906488B1 (en) | Method and contract rewriting framework system for supporting smart contracts in a blockchain network | |
CN111770113B (zh) | 一种执行智能合约的方法、区块链节点和节点设备 | |
CA2313721C (en) | Aspect-oriented programming | |
Dunkels et al. | Run-time dynamic linking for reprogramming wireless sensor networks | |
CN105808266B (zh) | 代码运行方法及装置 | |
AU2008343555B2 (en) | Contract programming for code error reduction | |
US20040230958A1 (en) | Compiler and software product for compiling intermediate language bytecodes into Java bytecodes | |
CN107526625B (zh) | 一种基于字节码检查的Java智能合约安全检测方法 | |
US8549502B2 (en) | Compiler with user-defined type inference rules | |
CN110335041B (zh) | 智能合约调用的一致性检测方法、装置、设备及存储介质 | |
CN101957766B (zh) | 一种字节码织入方法、装置及系统 | |
CN101782868A (zh) | 一种用于对本地方法调用进行性能测试的方法和装置 | |
CN100492387C (zh) | 基于Keil C51的软件保护开发的方法和系统 | |
CN105975816A (zh) | 移动终端下基于虚拟技术的代码保护方法及系统 | |
CN110825386A (zh) | 代码的编译方法和装置、存储介质 | |
CN105404794A (zh) | Java应用软件的保护方法和装置 | |
CN113312046A (zh) | 子应用页面处理方法、装置和计算机设备 | |
CN111770205A (zh) | 一种执行智能合约的方法、区块链节点、系统和存储介质 | |
WO2024169933A1 (zh) | 一种程序异常向量空间优化系统、方法、设备及介质 | |
US20100083238A1 (en) | Binary manipulation of intermediate-language code | |
JP4754635B2 (ja) | 制御フロー保護機構 | |
CN111435312A (zh) | 应用程序管理方法、装置及电子设备 | |
Cingolani et al. | Dealing with reversibility of shared libraries in PDES | |
CN103235745B (zh) | 一种地址冲突检测方法及装置 |
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 |
Granted publication date: 20120516 Termination date: 20180329 |
|
CF01 | Termination of patent right due to non-payment of annual fee |