CN106250124A - 功能模块跨平台运行的实现方法和装置 - Google Patents
功能模块跨平台运行的实现方法和装置 Download PDFInfo
- Publication number
- CN106250124A CN106250124A CN201610593862.9A CN201610593862A CN106250124A CN 106250124 A CN106250124 A CN 106250124A CN 201610593862 A CN201610593862 A CN 201610593862A CN 106250124 A CN106250124 A CN 106250124A
- Authority
- CN
- China
- Prior art keywords
- file destination
- functional module
- module
- described file
- function
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 230000008569 process Effects 0.000 claims abstract description 30
- 238000003860 storage Methods 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 67
- 230000007246 mechanism Effects 0.000 claims description 9
- 238000009826 distribution Methods 0.000 claims description 5
- 239000000284 extract Substances 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 3
- 238000002955 isolation Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 11
- 239000000203 mixture Substances 0.000 description 7
- 244000035744 Hura crepitans Species 0.000 description 4
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000005242 forging Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 241000196324 Embryophyta Species 0.000 description 1
- 238000012369 In process control Methods 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010965 in-process control Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000001629 sign test Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- 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/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/54—Interprogram communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/302—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3249—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/72—Signcrypting, i.e. digital signing and encrypting simultaneously
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提出了一种功能模块跨平台运行的实现方法,所述方法包括:获取功能模块的源代码,所述功能模块的源代码为标准C代码,将所述源代码进行编译生成多个中间文件,对所述多个中间文件进行链接处理,生成目标文件,加载所述目标文件,为所述目标文件中的字节码分配内存空间,并将所述字节码分为在所述内存空间中运行的代码段和数据段。该方法整个过程中实现了功能模块与平台之间的隔离,不需要对功能模块进行任何的修改就可以实现功能模块跨平台的运行,操作简便。此外,还提出了一种功能模块跨平台运行的实现装置。
Description
技术领域
本发明涉及计算机处理领域,特别是涉及一种功能模块跨平台的实现方法和装置。
背景技术
POS终端系统中的普遍存在对交易过程中卡类数据处理的功能模块,这类功能模块通常遵循统一的协议标准,从应用逻辑和算法处理上均与系统平台和编程语言无关联,例如接触式卡和非接触式卡的支付协议模块等,但目前这类模块在不同的终端系统平台中却需要专门针对系统进行编程开发以实现相同的功能或协议标准,且需要分别提交认证,过程非常麻烦。
发明内容
基于此,有必要针对上述问题,提供一种操作简便的功能模块跨平台运行的实现方法和装置。
一种功能模块跨平台运行的实现方法,所述方法包括以下步骤:获取功能模块的源代码,所述功能模块的源代码为标准C代码;将所述源代码进行编译生成多个中间文件;对所述多个中间文件进行链接处理,生成目标文件;加载所述目标文件;为所述目标文件中的字节码分配内存空间,并将所述字节码分为在所述内存空间中运行的代码段和数据段。
在其中一个实施例中,在所述为所述目标文件中的字节码分配内存空间,并将所述字节码分为在所述内存空间中运行的代码段和数据段的步骤之后还包括:接收调用所述目标文件中的API函数的命令;通过解释器解析所述命令,并通过所述解释器调用所述目标文件中的API函数执行所述命令;当所述目标文件需要调用主机系统中的函数时,通过虚拟机的系统调用机制间接调用所述主机系统中的函数。
在其中一个实施例中,在加载所述目标文件的步骤之前还包括:提取所述目标文件中的文件标识;根据所述文件标识验证所述目标文件是否合法,若是,则进入加载所述目标文件的步骤。
在其中一个实施例中,在所述对所述多个中间文件进行连接生成目标文件的步骤之后还包括:采用RSA加密算法对所述目标文件进行加密处理,所述RSA加密算法包括公钥和私钥,其中,使用RSA中的私钥对所述目标文件进行签名,使用RSA中的公钥对所述目标文件的签名进行验证。
在其中一个实施例中,所述方法还包括:控制所述目标文件访问主机系统中函数的权限,使所述目标文件只能通过虚拟机访问主机系统中开放的函数。
一种功能模块跨平台运行的实现装置,所述装置包括:获取模块,用于获取功能模块的源代码,所述功能模块的源代码为标准C代码;编译模块,用于将所述源代码进行编译生成多个中间文件;链接模块,用于对所述多个中间文件进行链接处理,生成目标文件;加载模块,用于加载所述目标文件;分配模块,用于为所述目标文件中的字节码分配内存空间,并将所述字节码分为在所述内存空间中运行的代码段和数据段。
在其中一个实施例中,所述装置还包括:接收模块,用于接收调用所述目标文件中的API函数的命令;执行模块,用于通过解释器解析所述命令,并通过所述解释器调用所述目标文件中的API函数执行所述命令;调用模块,用于当所述目标文件需要调用主机系统中的函数时,通过虚拟机的系统调用机制间接调用所述主机系统中的函数。
在其中一个实施例中,所述装置还包括:提取模块,用于提取所述目标文件中的文件标识;验证模块,用于根据所述文件标识验证所述目标文件是否合法,若是,通知所述加载模块加载所述目标文件。
在其中一个实施例中,所述装置还包括:加密模块,用于采用RSA加密算法对所述目标文件进行加密处理,所述RSA加密算法包括公钥和私钥,其中,使用RSA中的私钥对所述目标文件进行签名,使用RSA中的公钥对所述目标文件的签名进行验证。
在其中一个实施例中,所述装置还包括:控制模块,用于控制所述目标文件访问主机系统中函数的权限,使所述目标文件只能通过虚拟机访问主机系统中开放的函数。
上述功能模块跨平台运行的实现方法和装置,通过获取功能模块的源代码,该功能模块的源代码为标准C代码,将该源代码进行编译生成多个中间文件,然后对多个中间文件进行链接处理生成目标文件,进而加载该目标文件,为该目标文件中的字节码分配内存空间,并将该字节码分为在内存空间中运行的代码段和数据段。该方法整个过程中实现了功能模块与平台之间的隔离,不需要对功能模块进行任何的修改就可以实现功能模块跨平台的运行,操作简便。
附图说明
图1为一个实施例中终端的内部结构示意图;
图2为一个实施例中功能模块跨平台运行的实现方法流程图;
图3为一个实施例中对源代码进行编译连接生成目标文件的示意图;
图4为一个实施例中通过虚拟机实现功能模块跨平台运行的流程示意图;
图5为另一个实施例中功能模块跨平台运行的实现方法流程图;
图6为又一个实施例中功能模块跨平台运行的实现方法流程图;
图7为一个实施例中虚拟机中的解释器工作过程的示意图;
图8为再一个实施例中功能模块跨平台运行的实现方法流程图;
图9为一个实施例中功能模块跨平台运行的实现装置结构框图;
图10为另一个实施例中功能模块跨平台运行的实现装置结构框图;
图11为又一个实施例中功能模块跨平台运行的实现装置结构框图;
图12为再一个实施例中功能模块跨平台运行的实现装置结构框图;
图13为还一个实施例中功能模块跨平台运行的实现装置结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,终端100的内部结构如图1所示,包括通过系统总线连接的处理器、内存储器、非易失性存储介质、网络接口、显示屏和输入装置。其中,该终端100的非易失性存储介质存储有操作系统,还包括一种功能模块跨平台运行的实现装置,该功能模块跨平台运行的实现装置用于实现一种功能模块跨平台运行的实现方法。该处理器用于提供计算和控制能力,支撑整个终端的运行。终端中的内存储器为非易失性存储介质中的功能模块跨平台运行的实现装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种功能模块跨平台运行的实现方法。网络接口用于连接到网络进行通信,比如将获取的银行卡信息发送到银行服务器等。终端的显示屏可以是液晶显示屏或者电子墨水显示屏等,输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、插卡槽、轨迹球或触控板,也可以是外接的键盘、触控板或鼠标等。该终端可以是POS机、手机、平板电脑或者个人数字助理或穿戴式设备等。本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
如图2所示,在一个实施例中,提出了一种功能模块跨平台运行的实现方法,该方法包括以下步骤:
步骤202,获取功能模块的源代码,功能模块的源代码为标准C代码。
在本实施例中,为了实现功能模块的跨平台,采用C语言开发了一个实现功能模块跨平台的虚拟机,其中,功能模块使用标准C编程,即该功能模块的源代码为标准C代码。首先,使用与该C语言虚拟机配套的编译器获取该功能模块的源代码,并对该源代码进行编译。
步骤204,将源代码进行编译生成多个中间文件。
在本实施例中,使用与C语言虚拟机配套的编译器对源代码进行编译,生成多个中间文件。其中,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。具体的,使用编译器将C代码编译为多个后缀为.obj中间代码文件,将功能模块的源代码进行编译后还需要使用链接器将多个.obj中间代码文件进行链接处理,最终生成一个后缀为.pvm文件。
步骤206,对多个中间文件进行链接处理,生成目标文件。
在本实施例中,使用与C语言虚拟机配套的链接器对中间文件进行链接处理,生成一个目标文件。其中,链接器是一个程序,用于将一个或多个由编译器或汇编器生成的文件进行链接。具体的,使用链接器将经过编译器编译生成的中间文件进行链接,生成一个.pvm文件,其中.pvm文件由虚拟机可识别的字节码组成,不是可执行的文件,,应用程序不能直接调用该.pvm文件进行执行。如图3所示,为一个实施例中,对源代码进行编译链接最终生成目标文件的示意图,具体的,首先对标准C代码进行编译生成后缀为.obj的中间代码文件,然后对多个中间代码文件进行链接,生成了一个后缀为.pvm的目标文件。
步骤208,加载目标文件。
在本实施例中,使用与虚拟机配套的编译器和链接器将功能模块的源代码编译链接生成一个目标文件后,使用C语言开发的虚拟机加载该目标文件。在一个实施例中,虚拟机加载该目标文件,首先需要提取该目标文件的文件标识,文件标识用于标识该目标文件是通过与虚拟机配套的编译器和链接器生成的,防止恶意伪造.pvm文件,也就是说不是任何一个文件后缀改成.pvm文件就是可以跨平台的功能模块。具体的,该文件标识是由一个MAGIC值表示的,由编译器生成,后续由虚拟机中的解释器对该文件标识进行验证。
步骤110,为目标文件中的字节码分配内存空间,并将字节码分为在内存空间中运行的代码段和数据段。
在本实施例中,程序运行的原理为:一个代码程序编译成二进制后运行在任何操作系统中,操作系统需要分配一段进程(内存)空间给该程序,然后将这些二进制字节码分为代码段和数据段分配在进程控件中才能运行。其中,数据段是指用来存放程序中已初始化的全局变量的一块内存区域,属于静态内存分配;代码段是指用来存放程序执行代码的一块内存区域。也就是说,代码段相当于指令,数据段相当于数据信息。
在本实施例中,虚拟机加载目标文件后,首先对该目标文件进行预解析处理,在虚拟机运行的内存空间中虚拟出目标文件运行的数据段和代码段。具体的,使用虚拟机中的解释器对目标文件进行预解析处理,即在虚拟机的进程中为目标文件中的字节码分配内存空间,并将字节码分为在内存空间中运行的代码段和数据段。这样,当终端中的应用程序想要调用功能模块(目标文件)中的API(Application Programming Interface)函数时,就可以通过虚拟机对外的接口发起调用,虚拟机中的解释器接收到调用命令后,就会解析该命令,然后去执行调用功能模块中对应的API函数,解释器调用功能模块中对应的API函数的过程就是对代码段进行分派解释和数据计算的过程。同时,当功能模块需要调用主机系统的函数时,可以通过虚拟机的system-call(系统调用)机制间接的调用主机系统中的函数。
在本实施例中,通过获取功能模块的源代码,该功能模块的源代码为标准C代码,将该源代码进行编译生成多个中间文件,然后对多个中间文件进行链接处理生成目标文件,进而加载该目标文件,为该目标文件中的字节码分配内存空间,并将该字节码分为在内存空间中运行的代码段和数据段。该方法整个过程中实现了功能模块与平台之间的隔离,不需要对功能模块进行任何的修改就可以实现功能模块跨平台的运行,操作简便。进一步的,由于C语言属于比较基础和原始的编程语言,可以直接操作硬件,生成机器码的效率高,C语言通过对指针的使用可以直接访问内存,使用C语言开发的虚拟机相对一些高级编程语言开发的虚拟机(比如,Java虚拟机)少了很多中间层的调度,执行效率更高。
如图4所示,在一个实施例中,展示了一种使用C语言开发的虚拟机实现功能模块跨平台的流程示意图。具体的,实现将功能模块跨平台运行,主要分为两个部分,一个是目标文件生成的过程,一个是在虚拟机空间中为目标文件虚拟出代码段和数字段的过程。
如图5所示,在一个实施例中,在为目标文件中的字节码分配内存空间,并将字节码分为在内存空间中运行的代码段和数据段的步骤之后还包括:
步骤212,接收调用目标文件中的API函数的命令。
具体的,终端中的应用程序发起调用目标文件API函数的命令,使用C语言开发的虚拟机通过对外的接口接收到该命令,虚拟机中的解释器接收到调用命令后,就会解析该命令,然后去执行调用功能模块中对应的API函数。其中,API函数:操作系统除了协调应用程序的执行、内存分配、系统资源管理外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮助应用程序达到开启视窗、描绘图形、使用周边设备的目的,由于这些函数服务的对象是应用程序,所以称之为ApplicationProgramming Interface,简称API函数。
步骤214,通过解释器解析命令,并通过解释器调用目标文件中的API函数执行命令。
在本实施例中,使用C语言开发的虚拟机接收到调用目标文件的API函数后,通过该虚拟机中的解释器解析该命令,并通过解释器调用目标文件中的API函数。其中,解释器是一种程序,能够把高级编程语言一行一行直接转译运行,也就是说,解释器像是一个“中间人”,每次运行程序时都要先转换成另一种语言再运行。具体的,应用程序调用功能模块中的API函数的过程就是通过解释器对目标文件中的代码段进行分派解释和数据计算的过程。
步骤216,当目标文件需要调用主机系统中的函数时,通过虚拟机的系统调用机制间接调用所述主机系统中的函数。
在本实施例中,当目标文件执行应用程序的调用指令时,有的时候需要目标文件进一步调用主机系统中的函数才能完成应用程序的调用命令。当目标文件需要调用主机系统中的函数时,需要通过虚拟机的系统调用机制来间接的调用主机系统中的函数。这是因为需要将功能模块与平台隔离,所以就不能再直接调用主机系统中的函数,需要由虚拟机来做一层封装,而虚拟机中的系统调用机制就是封装的手段。凡是在虚拟机可适配的主机系统平台,应用程序均可通过虚拟机调用功能模块中的函数,即实现了功能模块与平台的隔离。
如图6所示,在一个实施例中,在加载目标文件的步骤之前还包括:
步骤218,提取目标文件中的文件标识。
具体的,文件标识是编译器对源代码进行编译时生成的特殊的MAGIC值,相当于一个防伪码,用于标识该目标文件是由该特定的编译器编译生成的。虚拟机加载该目标文件之前首先需要提取该目标文件中的文件标识,然后对该文件标识进行验证,防止恶意伪造目标文件。
步骤219,根据文件标识验证目标文件是否合法,若是,则进入步骤108,若否,则结束。
具体的,虚拟机中的解释器对提取的文件标识进行验证,即对MAGIC值进行校验。校验通过,说明该目标文件是合法的文件,加载该目标文件。若校验不通过,说明是伪造的PVM文件,虚拟机不对该文件进行加载。通过文件标识对目标文件进行验证,可以有效的防止恶意伪造PVM文件。
在一个实施例中,在对多个中间文件进行连接生成目标文件的步骤之后还包括:采用RSA加密算法对目标文件进行加密处理,RSA加密算法包括公钥和私钥,其中,使用RSA中的私钥对所述目标文件进行签名,使用RSA中的公钥对所述目标文件的签名进行验证。
在本实施例中,为了防篡改,在生成目标文件之后,采用RSA加密算法对该目标文件进行加密处理,使用RSA算法中的私钥对目标文件进行签名,虚拟机加载目标文件时,使用RSA算法中的公钥进行验签。
在一个实施例中,所述方法还包括:设置所述目标文件访问主机系统中函数的权限,使所述目标文件通过虚拟机只能访问主机系统中开放的函数,构成沙盒环境。。
在本实施例中,沙盒环境是指在受限的安全环境中运行应用程序的一种做法,这种做法是要限制授予应用程序的代码访问权限。在沙盒环境中的所有改动对操作系统不会造成任何损失,是一种安全的环境。在本实施例中,为了营造一个安全的环境,通过设置访问权限使目标文件只能访问主机系统中对外开放的函数,不允许访问其他函数,从而构成了安全的沙盒环境。
在一个实施例中,为了防止反汇编,对虚拟机的指令码进行乱序。具体的,虚拟机的指令枚举本来是从0开始的顺序数列,这样容易被反汇编。在本实施例中,在编译器编译源代码的过程中通过改变枚举过程中的算法对枚举指令进行乱序,同时在解释器中对指令的枚举值进行相同的打乱,以使指令枚举没有任何规律,达到防止反汇编的目的。
如图7所示,在一个实施例中,展示了虚拟机中的解释器工作过程的示意图。首先,解释器对生成的目标文件(.pvm文件)进行预解析,在虚拟机内存空间中为目标文件分配内存空间,并将目标文件的字节码分为代码段和数据段。其次,应用程序APP对目标文件进行API调用的过程实际上是解释器对代码段进行分派解释,数据计算的过程。最后,目标文件(功能模块)调用主机操作系统也是通过解释器对OS(Operating System,操作系统)的开放函数来进行调用的。如图8所示,在一个实施例中,提出了一种具体的功能模块跨平台运行的实现方法,该方法包括:
步骤802,编译器获取功能模块的源代码,对功能模块的源代码进行编译生成多个中间文件,功能模块的源代码为标准C代码。
步骤804,链接器对多个中间文件进行链接处理,生成目标文件。
步骤806,虚拟机提取目标文件中的文件标识,根据文件标识验证目标文件是否合法,若是,则加载目标文件,为目标文件中的字节码分配内存空间,将字节码分为在内存空间中运行的代码段和数据段。
步骤808,终端中的应用程序发起调用目标文件中的API函数的命令。
步骤810,虚拟机中的解释器接收到命令后,解析命令,并通过该解释器调用目标文件中的API函数。
上述中的虚拟机是指使用C语言开发的虚拟机,其中,编译器和链接器分别是与该C语言虚拟机配套的编译器和链接器。
如图9所示,在一个实施例中,提出了一种功能模块跨平台运行的实现装置,该装置包括:
获取模块902,用于获取功能模块的源代码,功能模块的源代码为标准C代码。
编译模块904,用于将源代码进行编译生成多个中间文件。
链接模块906,用于对多个中间文件进行链接处理,生成目标文件。
加载模块908,用于加载目标文件。
分配模块910,用于为目标文件中的字节码分配内存空间,并将字节码分为在内存空间中运行的代码段和数据段。
如图10所示,在一个实施例中,上述功能模块跨平台运行的实现装置还包括:
接收模块912,用于接收调用目标文件中的API函数的命令。
执行模块914,用于通过解释器解析命令,并通过解释器调用目标文件中的API函数执行命令。
调用模块916,用于当目标文件需要调用主机系统中的函数时,通过虚拟机的系统调用机制间接调用主机系统中的函数。
如图11所示,在一个实施例中,上述功能模块跨平台运行的实现装置还包括:
提取模块918,用于提取目标文件中的文件标识。
验证模块919,用于根据文件标识验证目标文件是否合法,若是,通知加载模块加载目标文件。
如图12所示,在一个实施例中,上述功能模块跨平台运行的实现装置还包括:
加密模块907,用于采用RSA加密算法对目标文件进行加密处理,RSA加密算法包括公钥和私钥,其中,使用RSA中的私钥对目标文件进行签名,使用RSA中的公钥对目标文件的签名进行验证。
如图13所示,在一个实施例中,上述功能模块跨平台运行的实现装置还包括:
控制模块901,用于控制目标文件访问主机系统中函数的权限,使目标文件只能通过虚拟机访问主机系统中开放的函数。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种功能模块跨平台运行的实现方法,所述方法包括以下步骤:
获取功能模块的源代码,所述功能模块的源代码为标准C代码;
将所述源代码进行编译生成多个中间文件;
对所述多个中间文件进行链接处理,生成目标文件;
加载所述目标文件;
为所述目标文件中的字节码分配内存空间,并将所述字节码分为在所述内存空间中运行的代码段和数据段。
2.根据权利要求1所述的方法,其特征在于,在所述为所述目标文件中的字节码分配内存空间,并将所述字节码分为在所述内存空间中运行的代码段和数据段的步骤之后还包括:
接收调用所述目标文件中的API函数的命令;
通过解释器解析所述命令,并通过所述解释器调用所述目标文件中的API函数执行所述命令;
当所述目标文件需要调用主机系统中的函数时,通过虚拟机的系统调用机制间接调用所述主机系统中的函数。
3.根据权利要求1所述的方法,其特征在于,在加载所述目标文件的步骤之前还包括:
提取所述目标文件中的文件标识;
根据所述文件标识验证所述目标文件是否合法,若是,则进入加载所述目标文件的步骤。
4.根据权利要求1所述的方法,其特征在于,在所述对所述多个中间文件进行连接生成目标文件的步骤之后还包括:
采用RSA加密算法对所述目标文件进行加密处理,所述RSA加密算法包括公钥和私钥,其中,使用RSA中的私钥对所述目标文件进行签名,使用RSA中的公钥对所述目标文件的签名进行验证。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
控制所述目标文件访问主机系统中函数的权限,使所述目标文件只能通过虚拟机访问主机系统中开放的函数。
6.一种功能模块跨平台运行的实现装置,所述装置包括:
获取模块,用于获取功能模块的源代码,所述功能模块的源代码为标准C代码;
编译模块,用于将所述源代码进行编译生成多个中间文件;
链接模块,用于对所述多个中间文件进行链接处理,生成目标文件;
加载模块,用于加载所述目标文件;
分配模块,用于为所述目标文件中的字节码分配内存空间,并将所述字节码分为在所述内存空间中运行的代码段和数据段。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收调用所述目标文件中的API函数的命令;
执行模块,用于通过解释器解析所述命令,并通过所述解释器调用所述目标文件中的API函数执行所述命令;
调用模块,用于当所述目标文件需要调用主机系统中的函数时,通过虚拟机的系统调用机制间接调用所述主机系统中的函数。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
提取模块,用于提取所述目标文件中的文件标识;
验证模块,用于根据所述文件标识验证所述目标文件是否合法,若是,通知所述加载模块加载所述目标文件。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
加密模块,用于采用RSA加密算法对所述目标文件进行加密处理,所述RSA加密算法包括公钥和私钥,其中,使用RSA中的私钥对所述目标文件进行签名,使用RSA中的公钥对所述目标文件的签名进行验证。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
控制模块,用于控制所述目标文件访问主机系统中函数的权限,使所述目标文件只能通过虚拟机访问主机系统中开放的函数。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610593862.9A CN106250124B (zh) | 2016-07-25 | 2016-07-25 | 功能模块跨平台运行的实现方法和装置 |
US15/551,840 US20180239621A1 (en) | 2016-07-25 | 2016-11-17 | Method and device of operating functional module cross platforms |
PCT/CN2016/106260 WO2018018797A1 (zh) | 2016-07-25 | 2016-11-17 | 功能模块跨平台运行的实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610593862.9A CN106250124B (zh) | 2016-07-25 | 2016-07-25 | 功能模块跨平台运行的实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106250124A true CN106250124A (zh) | 2016-12-21 |
CN106250124B CN106250124B (zh) | 2020-01-21 |
Family
ID=57603587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610593862.9A Active CN106250124B (zh) | 2016-07-25 | 2016-07-25 | 功能模块跨平台运行的实现方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20180239621A1 (zh) |
CN (1) | CN106250124B (zh) |
WO (1) | WO2018018797A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656726A (zh) * | 2017-10-10 | 2018-02-02 | 北京元比特科技有限责任公司 | 一种互联网信息及技术共享平台及方法 |
CN108121285A (zh) * | 2017-12-20 | 2018-06-05 | 中国铁道科学研究院 | 基于连续功能图的应用软件协同编译方法及装置 |
CN108334325A (zh) * | 2017-12-26 | 2018-07-27 | 努比亚技术有限公司 | 一种编译方法、计算机及计算机可读存储介质 |
CN109739508A (zh) * | 2018-12-28 | 2019-05-10 | 龙芯中科技术有限公司 | 源代码编译方法、装置、系统及存储介质 |
WO2021109717A1 (zh) * | 2019-12-05 | 2021-06-10 | 上海御渡半导体科技有限公司 | 一种Pattern静态编译链接的方法 |
CN113347171A (zh) * | 2021-05-28 | 2021-09-03 | 杭州萤石软件有限公司 | 物联网设备处置方法及物联网设备中设备资源的设置方法 |
CN113778451A (zh) * | 2020-11-17 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 文件加载方法、装置、计算机系统和计算机可读存储介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11431727B2 (en) * | 2017-03-03 | 2022-08-30 | Microsoft Technology Licensing, Llc | Security of code between code generator and compiler |
CN110245468B (zh) * | 2019-05-24 | 2023-06-16 | 创新先进技术有限公司 | 一种编译方法、装置、设备及系统 |
CN112148313B (zh) * | 2020-09-21 | 2022-05-20 | 厦门芯鸽信息科技有限公司 | 一种在沙箱中同时运行多个同名应用的方法、介质和设备 |
CN113703779B (zh) * | 2021-09-06 | 2024-04-16 | 王喆 | 一种跨平台的多语言编译方法和超轻量物联网虚拟机 |
CN117453548B (zh) * | 2023-10-26 | 2024-05-24 | 上海合芯数字科技有限公司 | 代码模块信息确定方法、装置、计算机设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000555A (zh) * | 2006-01-13 | 2007-07-18 | 北京金远见电脑技术有限公司 | 手持终端系统 |
CN101751258A (zh) * | 2009-12-30 | 2010-06-23 | 大唐微电子技术有限公司 | 智能卡与智能卡应用的开发方法、开发系统及部署方法 |
CN101944042A (zh) * | 2010-09-01 | 2011-01-12 | 深圳市拜特科技股份有限公司 | 一种Java程序的运行方法及电子终端 |
CN103413075A (zh) * | 2013-07-10 | 2013-11-27 | 北京深思数盾科技有限公司 | 一种通过虚拟机保护java可执行程序的方法及设备 |
CN103514027A (zh) * | 2013-11-12 | 2014-01-15 | 北京深思数盾科技有限公司 | 一种增强软件保护易用性的方法 |
CN104392151A (zh) * | 2014-11-27 | 2015-03-04 | 北京深思数盾科技有限公司 | 一种软件保护方法及系统 |
CN104751048A (zh) * | 2015-01-29 | 2015-07-01 | 中国科学院信息工程研究所 | 一种预链接机制下的动态链接库完整性度量方法 |
CN105612527A (zh) * | 2013-08-22 | 2016-05-25 | Inka安特沃客有限公司 | 为基于通用中间语言的程序提供安全性的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100772867B1 (ko) * | 2006-02-23 | 2007-11-02 | 삼성전자주식회사 | 복수의 애플리케이션에 대해 부분적으로 분리된 수행환경을 제공하는 방법 및 이를 이용한 디지털 정보 기기 |
CN100507843C (zh) * | 2007-04-05 | 2009-07-01 | 杨力祥 | 一种动态编程方法 |
CN103336707A (zh) * | 2013-07-10 | 2013-10-02 | 深圳市开立科技有限公司 | 在安卓系统下运行标准c程序的方法和装置 |
-
2016
- 2016-07-25 CN CN201610593862.9A patent/CN106250124B/zh active Active
- 2016-11-17 US US15/551,840 patent/US20180239621A1/en not_active Abandoned
- 2016-11-17 WO PCT/CN2016/106260 patent/WO2018018797A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000555A (zh) * | 2006-01-13 | 2007-07-18 | 北京金远见电脑技术有限公司 | 手持终端系统 |
CN101751258A (zh) * | 2009-12-30 | 2010-06-23 | 大唐微电子技术有限公司 | 智能卡与智能卡应用的开发方法、开发系统及部署方法 |
CN101944042A (zh) * | 2010-09-01 | 2011-01-12 | 深圳市拜特科技股份有限公司 | 一种Java程序的运行方法及电子终端 |
CN103413075A (zh) * | 2013-07-10 | 2013-11-27 | 北京深思数盾科技有限公司 | 一种通过虚拟机保护java可执行程序的方法及设备 |
CN105612527A (zh) * | 2013-08-22 | 2016-05-25 | Inka安特沃客有限公司 | 为基于通用中间语言的程序提供安全性的方法 |
CN103514027A (zh) * | 2013-11-12 | 2014-01-15 | 北京深思数盾科技有限公司 | 一种增强软件保护易用性的方法 |
CN104392151A (zh) * | 2014-11-27 | 2015-03-04 | 北京深思数盾科技有限公司 | 一种软件保护方法及系统 |
CN104751048A (zh) * | 2015-01-29 | 2015-07-01 | 中国科学院信息工程研究所 | 一种预链接机制下的动态链接库完整性度量方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656726A (zh) * | 2017-10-10 | 2018-02-02 | 北京元比特科技有限责任公司 | 一种互联网信息及技术共享平台及方法 |
CN108121285A (zh) * | 2017-12-20 | 2018-06-05 | 中国铁道科学研究院 | 基于连续功能图的应用软件协同编译方法及装置 |
CN108334325A (zh) * | 2017-12-26 | 2018-07-27 | 努比亚技术有限公司 | 一种编译方法、计算机及计算机可读存储介质 |
CN109739508A (zh) * | 2018-12-28 | 2019-05-10 | 龙芯中科技术有限公司 | 源代码编译方法、装置、系统及存储介质 |
CN109739508B (zh) * | 2018-12-28 | 2022-07-22 | 龙芯中科技术股份有限公司 | 源代码编译方法、装置、系统及存储介质 |
WO2021109717A1 (zh) * | 2019-12-05 | 2021-06-10 | 上海御渡半导体科技有限公司 | 一种Pattern静态编译链接的方法 |
CN113778451A (zh) * | 2020-11-17 | 2021-12-10 | 北京沃东天骏信息技术有限公司 | 文件加载方法、装置、计算机系统和计算机可读存储介质 |
CN113778451B (zh) * | 2020-11-17 | 2024-06-18 | 北京沃东天骏信息技术有限公司 | 文件加载方法、装置、计算机系统和计算机可读存储介质 |
CN113347171A (zh) * | 2021-05-28 | 2021-09-03 | 杭州萤石软件有限公司 | 物联网设备处置方法及物联网设备中设备资源的设置方法 |
CN113347171B (zh) * | 2021-05-28 | 2022-07-05 | 杭州萤石软件有限公司 | 物联网设备处置方法及物联网设备中设备资源的设置方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106250124B (zh) | 2020-01-21 |
US20180239621A1 (en) | 2018-08-23 |
WO2018018797A1 (zh) | 2018-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106250124A (zh) | 功能模块跨平台运行的实现方法和装置 | |
CN111770206B (zh) | 一种部署智能合约的方法、区块链节点和存储介质 | |
CN1997955B (zh) | 提供可信平台模块的安全虚拟化的方法和装置 | |
CN103748594B (zh) | 针对arm*trustzonetm实现的基于固件的可信平台模块 | |
CN105683990B (zh) | 用于保护动态库的方法和装置 | |
CN105391840A (zh) | 自动创建目标应用程序 | |
CN103329139B (zh) | 在具有随机分配的存储范围的安全系统中支持jit的系统和方法 | |
CN109766722A (zh) | 一种区块链中构建智能合约的方法及其系统 | |
CN103413073B (zh) | 一种保护java可执行程序的方法及设备 | |
CN105022630B (zh) | 一种组件管理系统及组件管理方法 | |
CN105612527A (zh) | 为基于通用中间语言的程序提供安全性的方法 | |
CN101226569A (zh) | 在虚拟机中验证代码模块的方法及装置 | |
CN103914637B (zh) | 一种安卓平台的可执行程序加密方法 | |
CN102656561A (zh) | 信息处理装置、虚拟机生成方法及应用发布系统 | |
CN103713902B (zh) | 一种基于Android系统的BOA编译方法和系统 | |
CN105446713A (zh) | 安全存储方法及设备 | |
CN110032392A (zh) | 服务治理方法及装置、存储介质和电子设备 | |
CN105976177A (zh) | 一种面向nfc的云端支付方法 | |
CN107463407A (zh) | 指纹芯片初始化方法及装置 | |
CN105868639A (zh) | 内核漏洞修复方法和装置 | |
CN108021798A (zh) | 一种基于USBkey的可信操作系统 | |
US20150195083A1 (en) | Homomorphic cryptography modeling in support of privacy policies | |
Dietrich | An integrated architecture for trusted computing for java enabled embedded devices | |
CN110888674B (zh) | 在Python虚拟机中执行安全计算的方法及装置 | |
CN102375956B (zh) | 基于Unix系统调用重定向的机制构建Unix可信平台的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |