CN106371826A - 应用程序跨系统运行的方法和装置 - Google Patents

应用程序跨系统运行的方法和装置 Download PDF

Info

Publication number
CN106371826A
CN106371826A CN201610710638.3A CN201610710638A CN106371826A CN 106371826 A CN106371826 A CN 106371826A CN 201610710638 A CN201610710638 A CN 201610710638A CN 106371826 A CN106371826 A CN 106371826A
Authority
CN
China
Prior art keywords
instruction
destination application
application
address
current operation
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
CN201610710638.3A
Other languages
English (en)
Other versions
CN106371826B (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.)
PAX Computer Technology Shenzhen Co Ltd
Original Assignee
PAX Computer Technology Shenzhen Co Ltd
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 PAX Computer Technology Shenzhen Co Ltd filed Critical PAX Computer Technology Shenzhen Co Ltd
Priority to CN201610710638.3A priority Critical patent/CN106371826B/zh
Priority to PCT/CN2016/106221 priority patent/WO2018036000A1/zh
Priority to US15/552,034 priority patent/US10303491B2/en
Publication of CN106371826A publication Critical patent/CN106371826A/zh
Application granted granted Critical
Publication of CN106371826B publication Critical patent/CN106371826B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • 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
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提出了一种应用程序跨系统运行的方法,所述方法包括:加载目标应用程序;为所述目标应用程序在当前操作系统上申请内存空间;根据申请到的内存空间地址对所述目标应用程序中的全局变量地址和绝对跳转指令地址进行修改,以适配到当前操作系统的内存空间;获取所述目标应用程序的SWI指令;将所述SWI指令重定向为调用当前操作系统的指令。上述方法该方法不需要修改目标应用程序的源代码,就可以实现目标应用程序的跨系统运行,大大简化了应用程序跨系统运行的操作。此外,还提出了一种应用程序跨系统运行的装置。

Description

应用程序跨系统运行的方法和装置
技术领域
本发明涉及计算机处理领域,特别是涉及一种应用程序跨系统运行的方法和装置。
背景技术
随着互联网的发展,为了满足不同的操作需求,在不同的终端中可能会应用不同的操作系统,比如,为了满足不同客户的需求,在不同的POS终端上可能需要安装不同的操作系统。而应用程序的开发是基于操作系统的,由于不同的操作系统API接口往往不同,也就意味着基于某个操作系统开发的应用程序不能直接在别的操作系统上运行。需要对原有的应用程序的代码进行修改才能在别的操作系统上运行,操作过程非常麻烦。
发明内容
基于此,有必要针对上述问题,提供一种操作简便的应用程序跨系统运行的方法和装置。
一种应用程序跨系统运行的方法,所述方法包括:加载目标应用程序;为所述目标应用程序在当前操作系统上申请内存空间;根据申请到的内存空间地址对所述目标应用程序中的全局变量地址和绝对跳转指令地址进行修改,以适配到当前操作系统的内存空间;获取所述目标应用程序的SWI指令;将所述SWI指令重定向为调用当前操作系统的指令。
在其中一个实施例中,在所述加载目标应用程序的步骤之后还包括:采用二进制翻译的方式对所述目标应用程序中的指令进行翻译。
在其中一个实施例中,所述根据申请到的所述内存空间地址对所述目标应用程序中的全局变量地址和跳转指令地址进行修改,以适配到当前操作系统的内存空间的步骤之前还包括:获取所述目标应用程序的二进制数据;通过对所述二进制数据进行分析找出所述目标应用程序中的全局变量和绝对跳转指令。
在其中一个实施例中,所述通过对所述二进制数据进行分析找出所述目标应用程序中的全局变量和绝对跳转指令的步骤包括:通过对所述目标应用程序的二进制数据进行分析,定位出所述目标应用程序中全局变量和绝对跳转指令对应的绝对地址;根据定位出的所述绝对地址提取所述目标应用程序中的全局变量和绝对跳转指令。
在其中一个实施例中,在所述将所述SWI指令重定向为调用当前操作系统的指令的步骤之后还包括:接收所述目标应用程序发起的调用API函数的请求;响应所述请求根据重定向的SWI指令调用当前操作系统中对应的API函数。
一种应用程序跨系统运行的装置,所述装置包括:加载模块,用于加载目标应用程序;申请模块,用于为所述目标应用程序在当前操作系统上申请内存空间;修改模块,用于根据申请到的内存空间地址对所述目标应用程序中的全局变量地址和绝对跳转指令地址进行修改,以适配到当前操作系统的内存空间;指令获取模块,用于获取所述目标应用程序的SWI指令;重定向模块,用于将所述SWI指令重定向为调用当前操作系统的指令。
在其中一个实施例中,所述装置还包括:翻译模块,用于采用二进制翻译的方式对所述目标应用程序中的指令进行翻译。
在其中一个实施例中,所述装置还包括:数据获取模块,用于获取所述目标应用程序的二进制数据;分析模块,用于通过对所述二进制数据进行分析找出所述目标应用程序中的全局变量和绝对跳转指令。
在其中一个实施例中,所述分析模块包括:定位模块,用于通过对所述目标应用程序的二进制数据进行分析,定位出所述目标应用程序中全局变量和绝对跳转指令对应的绝对地址;提取模块,用于根据定位出的所述绝对地址提取所述目标应用程序中的全局变量和绝对跳转指令。
在其中一个实施例中,所述装置还包括:接收模块,用于接收所述目标应用程序发起的调用API函数的请求;调用模块,用于响应所述请求根据重定向的SWI指令调用当前操作系统中对应的API函数。
上述应用程序跨系统运行的方法和装置,通过加载目标应用程序,为该目标应用程序在当前操作系统上申请内存空间,根据申请到的内存空间地址对目标应用程序中的全局变量地址和绝对跳转指令地址进行修改,以适配到当前操作系统的内存空间,获取目标应用程序的SWI指令,将该SWI指令重定向为调用当前操作系统的指令。上述方法通过对目标应用程序中的全局变量地址和绝对跳转指令地址进行修改以及将目标应用程序的原有SWI指令重定向为调用当前操作系统的指令,实现将其他系统的应用程序在当前操作系统上运行,该方法不需要修改目标应用程序的源代码,大大简化了应用程序跨系统运行的操作。
附图说明
图1为一个实施例中终端的内部结构图;
图2为一个实施例中应用程序跨系统运行的方法流程图;
图3为另一个实施例中应用程序跨系统运行的方法流程图;
图4为一个实施例中对二进制数据进行分析找出全局变量和绝对跳转指令的方法流程图;
图5为又一个实施例中应用程序跨系统运行的方法流程图;
图6为一个实施例中应用程序跨系统运行的装置结构框图;
图7为另一个实施例中应用程序跨系统运行的装置结构框图;
图8为又一个实施例中应用程序跨系统运行的装置结构框图;
图9为一个实施例中分析模块的结构框图;
图10为再一个实施例中应用程序跨系统运行的装置结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,终端100的内部结构如图1所示,包括通过系统总线连接的处理器、内存储器、非易失性存储介质、网络接口、显示屏和输入装置。其中,该终端100的非易失性存储介质存储有操作系统,还包括一种应用程序跨系统运行的装置,该应用程序跨系统运行的装置用于实现一种应用程序跨系统运行的方法。该处理器用于提供计算和控制能力,支撑整个终端的运行。终端中的内存储器为非易失性存储介质中的应用程序跨系统运行的装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种应用程序跨系统运行的方法。网络接口用于连接到网络进行通信。终端的显示屏可以是液晶显示屏或者电子墨水显示屏等,输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、插卡槽、轨迹球或触控板,也可以是外接的键盘、触控板或鼠标等。该终端可以是POS机、手机、平板电脑或者个人数字助理或穿戴式设备等。本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
如图2所示,在一个实施例中,提出了一种应用程序跨系统运行的方法,该方法包括:
步骤202,加载目标应用程序。
具体的,目标应用程序是指不能直接在当前操作系统上运行的基于其他操作系统开发的应用程序。为了使目标应用程序能够实现跨系统运行,提出了一种进程虚拟机,通过该进程虚拟机来实现目标应用程序的跨系统运行。首先,启动该进程虚拟机加载目标应用程序。其中,进程虚拟机只需要为应用程序提供一个可运行的环境,不涉及到具体硬件,进程虚拟机运行在操作系统的上层,为应用程序的执行和终止提供相应的支持。
步骤204,为目标应用程序在当前操作系统上申请内存空间。
在本实施例中,虚拟机加载目标应用程序后,为该目标应用程序在当前操作系统上申请内存空间,以便在当前操作系统上能够运行。具体的,虚拟机启动的时候会为目标应用程序在当前操作系统上申请和与该目标应用程序绝对地址一样的虚拟地址空间,然后把目标应用程序拷贝到这个地址上,根据段地址找出全局变量。
步骤206,根据申请到的内存空间地址对目标应用程序中的全局变量地址和绝对跳转指令地址进行修改,以适配到当前操作系统的内存空间。
在本实施例中,根据申请到的内存空间地址对目标应用程序中的全局变量地址和绝对跳转指令地址进行修改,以适配到当前操作系统的内存空间。其中,全局变量是可以被本应用程序所有对象或函数引用的变量,绝对跳转指令是跳转的目的地址是一个绝对地址的跳转指令。具体的,获取目标应用程序的二进制数据,通过对二进制数据进行分析找出目标应用程序中的全局变量和绝对跳转指令,然后根据申请到的当前系统的地址对目标应用程序中的全局变量地址和绝对跳转指令地址进行修改,以适配到当前操作系统的内存空间。
步骤208,获取目标应用程序的SWI指令。
具体的,SWI(Software Interrupt,软中断)指令是应用程序用来访问操作系统的指令。应用程序是不能直接对操作系统进行操作的,必须通过调用操作系统提供的API(Application Program Interface,应用程序接口)接口才可以,而操作系统API接口是根据SWI指令切换到内核态的,然后才能对硬件进行操作。这是因为操作系统是将硬件的操作权限交给内核来管理的,应用程序是不能随意使用硬件的,使用硬件时要先向操作系统发出请求,操作系统内核帮助应用程序实现其操作。操作系统提供给应用程序一些具备预定功能的内核函数,即系统调用的接口API。系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需要的处理,然后将处理结果返回给应用程序。
步骤210,将SWI指令重定向为调用当前操作系统的指令。
在本实施例中,如果目标应用程序需要调用操作系统,一定会通过SWI指令来调用,由于目标应用程序中原有的SWI指令是指向调用原有操作系统的指令,所以当把目标应用程序的数据适配到申请的内存空间后,找到目标应用程序中的SWI指令,具体的,SWI指令是有一定构成格式的(包括24位有效立即数),根据这个构成格式就可以找出SWI指令。然后将原有的SWI指令修改为触发当前操作系统的指令,这样就进入了当前系统封装的系统调用中,从而实现了将目标应用程序运行在当前操作系统中。
在本实施例中,虚拟机通过加载目标应用程序,为该目标应用程序在当前操作系统上申请内存空间,根据申请到的内存空间地址对目标应用程序中的全局变量地址和绝对跳转指令地址进行修改,以适配到当前操作系统的内存空间,获取目标应用程序的SWI指令,将该SWI指令重定向为调用当前操作系统的指令。上述方法通过对目标应用程序中的全局变量地址和绝对跳转指令地址进行修改以及将目标应用程序的原有SWI指令重定向为调用当前操作系统的指令,实现将其他系统的应用程序在当前操作系统上运行,该方法不需要修改目标应用程序的源代码,大大简化了应用程序跨系统运行的操作。
在一个实施例中,在所述加载目标应用程序的步骤之后还包括:采用二进制翻译的方式对目标应用程序中的指令进行翻译。
在本实施例中,在加载目标应用程序时,进程虚拟机对目标应用程序进行分析,将需要修改位置的相关指令和SWI指令采用二进制进行翻译,以便运行该目标应用程序。二进制翻译相对于传统的解释执行的方式,占用的内存资源少,可以有效的提高进程虚拟机运行的速度。这是因为解释执行的过程需要较多的计算,也需要较多的资源来存储中间数据和结果。二进制翻译方式把代码翻译之后,就可以直接在CPU上运行,不需要经过解释的过程。
如图3所示,在一个实施例中,根据申请到的内存空间地址对目标应用程序中的全局变量地址和跳转指令地址进行修改,以适配到当前操作系统的内存空间的步骤之前还包括:
步骤212,获取目标应用程序的二进制数据。
具体的,虚拟机加载目标应用程序,获取该目标应用程序的二进制数据,二进制数据是计算机系统采用的数据表示方法,因为计算机系统只识别0和1。
步骤214,通过对二进制数据进行分析找出目标应用程序中的全局变量和绝对跳转指令。
在本实施例中,虚拟机通过对目标应用程序的二进制数据进行分析找出目标应用程序中的全局变量和绝对跳转指令。具体的,首先,通过对目标应用程序的二进制数据进行分析找出该目标应用程序的绝对地址定位,然后根据目标应用程序的绝对地址定位找出全局变量和绝对跳转指令。
如图4所示,在一个实施例中,通过对二进制数据进行分析找出目标应用程序中的全局变量和绝对跳转指令的步骤包括:
步骤214A,通过对目标应用程序的二进制数据进行分析,定位出目标应用程序中全局变量和绝对跳转指令对应的绝对地址。
具体的,绝对地址是指独立地址,即实实在在的物理存储地址。通过对目标应用程序的二进制数据进行分析,可以定位出目标应用程序中的全局变量和绝对跳转指令对应的绝对地址,然后根据该绝对地址就可以找到全局变化和绝对跳转指令。
步骤214B,根据定位出的绝对地址提取目标应用程序中的全局变量和绝对跳转指令。
具体的,全局变量是可以被本应用程序所有对象或函数引用的变量,绝对跳转指令是跳转的目的地址是一个绝对地址的跳转指令。通过定位出的绝对地址来提取目标应用程序中的全局变量和绝对跳转指令,以便将该全局变量和绝对跳转指令拷贝到当前操作系统的内存空间中,从而适配到当前操作系统。
如图5所示,在一个实施例中,上述应用程序跨系统运行的方法还包括:
步骤214,接收目标应用程序发起的调用API函数的请求。
在本实施例中,将目标应用程序运行在当前系统后,如果目标应用程序需要调用当前系统,那么需要经过虚拟机来进行调用。具体的,虚拟机接收目标应用程序发起的调用API函数的请求。
步骤216,响应请求根据重定向的SWI指令调用当前操作系统中对应的API函数。
在本实施例中,由于已经将目标应用程序中的SWI指令重定向为了调用当前系统的指令,所以虚拟机接收到目标应用程序发起的调用API函数的请求后,直接可以根据重定向后的SWI指令调用当前系统中对应的API函数。
在一个具体的实施例中,Monitor和Prolin是POS终端的两套操作系统,其中,Monitor操作系统资源消耗少,功能简单,编程方便,基于Monitor系统开发的应用程序多。Prolin操作系统资源消耗多,但对多任务、视频播放、多媒体支持有先天的优势,基于Prolin系统开发的应用程序相对比较少。一般基于不同的客户需求,在不同的POS终端上分别运行Monitor系统和Prolin系统。Monitor和Prolin的各有自己的优势,两者属于相互补充的关系。所以如果能实现将Monitor的应用程序能够运行在Prolin操作系统上,就能够实现满足各种客户的需求。但是由于两者API接口完全不一样,所以基于Monitor开发的应用不能直接在Prolin系统上运行。传统的方法一般是采用QEMU(虚拟操作系统模拟器)来实现一个系统虚拟机,QEMU为基于Montior开发的应用程序模拟一个和真实芯片相似的环境,包括处理器,内存环境,各种外设(定时器,中断,串口等)。但是这种方法需要占用的内存大,由于需要模拟硬件设备,并且指令运行也只能采用解释的方法运行,虚拟机的运行速度会大大降低。本实施例中通过开发一个进程虚拟机实现让Monitor的应用能够直接在Prolin上运行,可以采用解释执行和二进制翻译运行的方式,相比与解释执行,二进制把代码翻译之后,可以直接在CPU上运行。在本实施例中,能够采用二进制翻译的方式进行翻译,由于二进制翻译不需要解释的过程,所以需要的资源更少,速度更快。
如图6所示,在一个实施例中,提出了一种应用程序跨系统运行的装置,该装置包括:
加载模块602,用于加载目标应用程序。
申请模块604,用于为所述目标应用程序在当前操作系统上申请内存空间。
修改模块606,用于根据申请到的内存空间地址对所述目标应用程序中的全局变量地址和绝对跳转指令地址进行修改,以适配到当前操作系统的内存空间。
指令获取模块608,用于获取所述目标应用程序的SWI指令。
重定向模块610,用于将所述SWI指令重定向为调用当前操作系统的指令。
如图7所示,在一个实施例中,上述应用程序跨系统运行的装置还包括:
翻译模块603,用于采用二进制翻译的方式对所述目标应用程序中的指令进行翻译。
如图8所示,在一个实施例中,上述应用程序跨系统运行的装置还包括:
数据获取模块612,用于获取所述目标应用程序的二进制数据。
分析模块614,用于通过对所述二进制数据进行分析找出所述目标应用程序中的全局变量和绝对跳转指令。
如图9所示,在一个实施例中,分析模块614包括:
定位模块614A,用于通过对所述目标应用程序的二进制数据进行分析,定位出所述目标应用程序中全局变量和绝对跳转指令对应的绝对地址;
提取模块614B,用于根据定位出的所述绝对地址提取所述目标应用程序的全局变量和绝对跳转指令。
如图10所示,在一个实施例中,上述应用程序跨系统运行的装置还包括:
接收模块616,用于接收所述目标应用程序发起的调用API函数的请求;
调用模块618,用于响应所述请求根据重定向的SWI指令调用当前操作系统中对应的API函数。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种应用程序跨系统运行的方法,所述方法包括:
加载目标应用程序;
为所述目标应用程序在当前操作系统上申请内存空间;
根据申请到的内存空间地址对所述目标应用程序中的全局变量地址和绝对跳转指令地址进行修改,以适配到当前操作系统的内存空间;
获取所述目标应用程序的SWI指令;
将所述SWI指令重定向为调用当前操作系统的指令。
2.根据权利要求1所述的方法,其特征在于,在所述加载目标应用程序的步骤之后还包括:采用二进制翻译的方式对所述目标应用程序中的指令进行翻译。
3.根据权利要求1所述的方法,其特征在于,所述根据申请到的所述内存空间地址对所述目标应用程序中的全局变量地址和跳转指令地址进行修改,以适配到当前操作系统的内存空间的步骤之前还包括:
获取所述目标应用程序的二进制数据;
通过对所述二进制数据进行分析找出所述目标应用程序中的全局变量和绝对跳转指令。
4.根据权利要求3所述的方法,其特征在于,所述通过对所述二进制数据进行分析找出所述目标应用程序中的全局变量和绝对跳转指令的步骤包括:
通过对所述目标应用程序的二进制数据进行分析,定位出所述目标应用程序中全局变量和绝对跳转指令对应的绝对地址;
根据定位出的所述绝对地址提取所述目标应用程序中的全局变量和绝对跳转指令。
5.根据权利要求1所述的方法,其特征在于,在所述将所述SWI指令重定向为调用当前操作系统的指令的步骤之后还包括:
接收所述目标应用程序发起的调用API函数的请求;
响应所述请求根据重定向的SWI指令调用当前操作系统中对应的API函数。
6.一种应用程序跨系统运行的装置,其特征在于,所述装置包括:
加载模块,用于加载目标应用程序;
申请模块,用于为所述目标应用程序在当前操作系统上申请内存空间;
修改模块,用于根据申请到的内存空间地址对所述目标应用程序中的全局变量地址和绝对跳转指令地址进行修改,以适配到当前操作系统的内存空间;
指令获取模块,用于获取所述目标应用程序的SWI指令;
重定向模块,用于将所述SWI指令重定向为调用当前操作系统的指令。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
翻译模块,用于采用二进制翻译的方式对所述目标应用程序中的指令进行翻译。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
数据获取模块,用于获取所述目标应用程序的二进制数据;
分析模块,用于通过对所述二进制数据进行分析找出所述目标应用程序中的全局变量和绝对跳转指令。
9.根据权利要求8所述的装置,其特征在于,所述分析模块包括:
定位模块,用于通过对所述目标应用程序的二进制数据进行分析,定位出所述目标应用程序中全局变量和绝对跳转指令对应的绝对地址;
提取模块,用于根据定位出的所述绝对地址提取所述目标应用程序中的全局变量和绝对跳转指令。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收所述目标应用程序发起的调用API函数的请求;
调用模块,用于响应所述请求根据重定向的SWI指令调用当前操作系统中对应的API函数。
CN201610710638.3A 2016-08-23 2016-08-23 应用程序跨系统运行的方法和装置 Active CN106371826B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201610710638.3A CN106371826B (zh) 2016-08-23 2016-08-23 应用程序跨系统运行的方法和装置
PCT/CN2016/106221 WO2018036000A1 (zh) 2016-08-23 2016-11-17 应用程序跨系统运行的方法和装置
US15/552,034 US10303491B2 (en) 2016-08-23 2016-11-17 Method and device of running application program across systems

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610710638.3A CN106371826B (zh) 2016-08-23 2016-08-23 应用程序跨系统运行的方法和装置

Publications (2)

Publication Number Publication Date
CN106371826A true CN106371826A (zh) 2017-02-01
CN106371826B CN106371826B (zh) 2019-11-29

Family

ID=57878909

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610710638.3A Active CN106371826B (zh) 2016-08-23 2016-08-23 应用程序跨系统运行的方法和装置

Country Status (3)

Country Link
US (1) US10303491B2 (zh)
CN (1) CN106371826B (zh)
WO (1) WO2018036000A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484428A (zh) * 2016-10-20 2017-03-08 百度在线网络技术(北京)有限公司 应用构建方法和装置
CN109144575A (zh) * 2017-06-16 2019-01-04 北京海誉动想科技股份有限公司 跨操作系统运行应用的装置、方法、电子设备和存储器
CN111142939A (zh) * 2019-12-11 2020-05-12 北京小米移动软件有限公司 应用程序处理方法及装置
CN112040025A (zh) * 2020-09-03 2020-12-04 北京文香信息技术有限公司 一种服务器地址切换的方法、系统及终端设备
CN112559920A (zh) * 2020-12-23 2021-03-26 苏州三六零智能安全科技有限公司 基于跳转指令的hook方法、装置、设备及存储介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11113095B2 (en) 2019-04-30 2021-09-07 Automation Anywhere, Inc. Robotic process automation system with separate platform, bot and command class loaders
US11243803B2 (en) * 2019-04-30 2022-02-08 Automation Anywhere, Inc. Platform agnostic robotic process automation
US11481304B1 (en) 2019-12-22 2022-10-25 Automation Anywhere, Inc. User action generated process discovery
CN111209056B (zh) * 2020-01-02 2021-02-19 北京东土科技股份有限公司 功能函数的加载方法、装置、可读存储介质及电子设备
US11182178B1 (en) 2020-02-21 2021-11-23 Automation Anywhere, Inc. Detection of user interface controls via invariance guided sub-control learning
CN112468611B (zh) * 2020-11-27 2023-04-21 深圳市欢太科技有限公司 应用程序启动方法、终端设备及计算机存储介质
US11968182B2 (en) 2021-07-29 2024-04-23 Automation Anywhere, Inc. Authentication of software robots with gateway proxy for access to cloud-based services

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541567A (zh) * 2012-01-05 2012-07-04 深圳市天拓立方通讯科技有限公司 一种2d手机游戏引擎及兼容手机操作系统的方法
CN102541491A (zh) * 2010-12-14 2012-07-04 北京新媒传信科技有限公司 移动终端界面切换方法及系统
US20120324338A1 (en) * 2010-06-18 2012-12-20 Sweetlabs, Inc. System and Methods for Integration of an Application Runtime Environment Into a User Computing Environment
CN103116544A (zh) * 2013-01-25 2013-05-22 浪潮电子信息产业股份有限公司 一种自动化的跨平台多服务器多应用测试方法
CN103327117A (zh) * 2013-07-05 2013-09-25 百度在线网络技术(北京)有限公司 应用程序的跨系统运行方法和装置
CN104821954A (zh) * 2015-03-27 2015-08-05 中国海洋大学 一种跨平台远程过程调用方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1371053A (zh) * 2001-02-22 2002-09-25 英业达集团(南京)电子技术有限公司 在电子通信装置的编译系统平台上下载应用程序的方法
US7150006B2 (en) 2003-11-03 2006-12-12 Microsoft Corporation Techniques for managed code debugging
US7444625B2 (en) 2004-10-12 2008-10-28 Picsel (Research) Limited Concurrent code loading mechanism
WO2010004245A1 (en) * 2008-07-10 2010-01-14 Cambridge Consultants Limited Processor with push instruction
CN103631971B (zh) * 2013-12-20 2017-12-08 北京奇虎科技有限公司 一种可移植的执行体文件的重组方法和装置
CN105786525B (zh) * 2016-03-23 2019-01-25 鼎点视讯科技有限公司 一种进程模型向线程模型移植代码的方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120324338A1 (en) * 2010-06-18 2012-12-20 Sweetlabs, Inc. System and Methods for Integration of an Application Runtime Environment Into a User Computing Environment
CN102541491A (zh) * 2010-12-14 2012-07-04 北京新媒传信科技有限公司 移动终端界面切换方法及系统
CN102541567A (zh) * 2012-01-05 2012-07-04 深圳市天拓立方通讯科技有限公司 一种2d手机游戏引擎及兼容手机操作系统的方法
CN103116544A (zh) * 2013-01-25 2013-05-22 浪潮电子信息产业股份有限公司 一种自动化的跨平台多服务器多应用测试方法
CN103327117A (zh) * 2013-07-05 2013-09-25 百度在线网络技术(北京)有限公司 应用程序的跨系统运行方法和装置
CN104821954A (zh) * 2015-03-27 2015-08-05 中国海洋大学 一种跨平台远程过程调用方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
J. E. SMITH等: "An Overview of Virtual Machine Architectures", 《ELSEVIER SCIENCE》 *
MR_RAPTOR: "系统调用与软件中断SWI的实现", 《CSDN博客》 *
孔长生: "操作系统地址重定位", 《CSDN博客》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484428A (zh) * 2016-10-20 2017-03-08 百度在线网络技术(北京)有限公司 应用构建方法和装置
CN109144575A (zh) * 2017-06-16 2019-01-04 北京海誉动想科技股份有限公司 跨操作系统运行应用的装置、方法、电子设备和存储器
CN109144575B (zh) * 2017-06-16 2021-07-16 北京海誉动想科技股份有限公司 跨操作系统运行应用的装置、方法、电子设备和存储器
CN111142939A (zh) * 2019-12-11 2020-05-12 北京小米移动软件有限公司 应用程序处理方法及装置
US11269699B2 (en) 2019-12-11 2022-03-08 Beijing Xiaomi Mobile Software Co., Ltd. Method and device for processing an application
CN112040025A (zh) * 2020-09-03 2020-12-04 北京文香信息技术有限公司 一种服务器地址切换的方法、系统及终端设备
CN112040025B (zh) * 2020-09-03 2023-03-24 安徽文香科技有限公司 一种服务器地址切换的方法、系统及终端设备
CN112559920A (zh) * 2020-12-23 2021-03-26 苏州三六零智能安全科技有限公司 基于跳转指令的hook方法、装置、设备及存储介质
CN112559920B (zh) * 2020-12-23 2022-11-04 苏州三六零智能安全科技有限公司 基于跳转指令的hook方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN106371826B (zh) 2019-11-29
US10303491B2 (en) 2019-05-28
WO2018036000A1 (zh) 2018-03-01
US20180321955A1 (en) 2018-11-08

Similar Documents

Publication Publication Date Title
CN106371826A (zh) 应用程序跨系统运行的方法和装置
CN101930366B (zh) 一种基于浏览器的手机运行时系统
US9602347B2 (en) Method, system and program for browser to switch IE kernel
CN103443763B (zh) 包含对重写虚拟函数的调用的支持的isa桥接
CN104951326B (zh) 网页访问方法及装置
CN103809857B (zh) 一种信息处理方法及电子设备
CN110389936B (zh) 一种启动小程序的方法、设备和计算机存储介质
CN103970563B (zh) 动态加载安卓类的方法
CN107085580B (zh) 客户端展示页面的方法及客户端
WO2007144695A2 (en) Unified mobile platform
CN107704157B (zh) 一种多屏界面操作方法、装置及存储介质
CN103885814A (zh) 在x86架构上运行ARM APK的模拟器装置和方法
CN106970946A (zh) 一种页面显示方法及装置
CN106502717A (zh) 应用程序运行方法及装置
JP2015503804A (ja) 入力ポインタの遅滞
US8924987B2 (en) Flat or extended architecture using an integrated application and operating system component for computing systems and environments
CN103530180B (zh) 应用程序的存储空间切换方法及装置
US10289219B2 (en) Communicating with an unsupported input device
CN112015309B (zh) 显示切换方法、装置及移动终端
CN104572303A (zh) 应用资源管理及调用装置、方法及应用资源管理系统
US20210026913A1 (en) Web browser control feature
CN106569829B (zh) 触摸屏工作模式切换实现方法、触摸屏装置和头戴式设备
CN107436802B (zh) 用于应用程序的控制方法、系统、介质和计算设备
CN112905072B (zh) 应用程序的处理方法、装置及电子设备
CN111382076B (zh) 应用程序的测试方法、装置、电子设备及计算机存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant