CN108334404A - 应用程序的运行方法和装置 - Google Patents
应用程序的运行方法和装置 Download PDFInfo
- Publication number
- CN108334404A CN108334404A CN201710051080.7A CN201710051080A CN108334404A CN 108334404 A CN108334404 A CN 108334404A CN 201710051080 A CN201710051080 A CN 201710051080A CN 108334404 A CN108334404 A CN 108334404A
- Authority
- CN
- China
- Prior art keywords
- application program
- code
- run
- data
- instruction
- 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
Classifications
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种应用程序的运行方法和装置。其中,该方法包括:在第一应用程序运行的过程中检测是否接收到请求在第一应用程序中加载第二应用程序的第一指令,其中,第一应用程序是通过第一进程运行的;接收第一指令,创建第二进程,其中,第二进程用于加载第二应用程序的代码、第一应用程序的加载程序框架代码和资源文件,第二进程是区别于第一进程的新建的进程;利用第二进程运行第二应用程序,其中,在第二进程运行的过程中,第一进程持续运行。本发明解决了现有技术中无法在保证主程序安全运行的前提下不损失第三方应用程序性能的技术问题。
Description
技术领域
本发明涉及应用程序领域,具体而言,涉及一种应用程序的运行方法和装置。
背景技术
目前像微信、应用宝、360手机助手之类的平台型应用除了自身的业务逻辑,都具备了加载第三方业务的能力。
现有技术中,Host通过加载web页面的方式加载第三方业务。第三方使用web语言编写网页;Host加载web页,以web语言底层的接口封装来隔离第三方程序,web语言无法获取Host的代码/内存数据/缓存文件,从而保证了Host的安全。现有技术中web语言底层封装的接口虽然保证了Host的安全,但同时也限制了很多功能,也影响了性能,导致web页面不能像Host一样功能完备和流畅。
如果像加载Host代码一样直接加载第三方程序,就可以保证第三方程序像Host代码一样功能强大,而且不损失性能。但是这会造成一个很严重的问题:第三方业务可以利用Host潜在的接口影响Host本身业务逻辑,甚至读取到Host核心数据,对Host的安全运行造成威胁。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种应用程序的运行方法和装置,以至少解决现有技术中无法在保证主程序安全运行的前提下不损失第三方应用程序性能的技术问题。
根据本发明实施例的一个方面,提供了一种应用程序的运行方法,包括:在第一应用程序运行的过程中检测是否接收到请求在所述第一应用程序中加载第二应用程序的第一指令,其中,所述第一应用程序是通过第一进程运行的;接收所述第一指令,创建第二进程,其中,所述第二进程用于加载所述第二应用程序的代码、所述第一应用程序的加载程序框架代码和资源文件,所述第二进程是区别于所述第一进程的新建的进程;利用所述第二进程运行所述第二应用程序,其中,在所述第二进程运行的过程中,所述第一进程持续运行。
根据本发明实施例的另一方面,还提供了一种应用程序的运行装置,包括:第一检测单元,用于在第一应用程序运行的过程中检测是否接收到请求在所述第一应用程序中加载第二应用程序的第一指令,其中,所述第一应用程序是通过第一进程运行的;第一创建单元,用于接收所述第一指令,创建第二进程,其中,所述第二进程用于加载所述第二应用程序的代码、所述第一应用程序的加载程序框架代码和资源文件,所述第二进程是区别于所述第一进程的新建的进程;运行单元,利用所述第二进程运行所述第二应用程序,其中,在所述第二进程运行的过程中,所述第一进程持续运行。
在本发明实施例中,如果接收到请求在第一应用程序中加载第二应用程序的指令,则创建新的进程(第二进程),使用新的进程运行第二应用程序,新的进程加载第一应用程序的加载程序框架代码,不加载第一应用程序的其他代码,第一进程与第二进程为不同的进程,不共享内存,因此,第一进程无法读取到第二进程的内存数据,第二进程也无法读取到第一进程的内存数据,这就达到了数据隔离的效果,保证了第一应用程序运行的安全性,而且,由于使用了新的进程直接加载第三方应用程序,保证了第三方应用程序像主程序一样功能强大,而且不损失性能,达到了在保证主程序安全运行的前提下不损失第三方应用程序性能的技术效果,进而解决了现有技术中无法在保证主程序安全运行的前提下不损失第三方应用程序性能的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的应用程序的运行方法的流程图;
图2是根据本发明实施例的应用程序的运行方法安全隔离的示意图;
图3是根据本发明实施例的终端界面的示意图;
图4是根据本发明实施例的运行应用宝之后终端界面的示意图;
图5是根据本发明实施例的正常的应用宝自身进程的示意图;
图6是根据本发明实施例的应用宝自身进程内容的示意图;
图7是根据本发明实施例的启动第三方程序的示意图;
图8是根据本发明实施例的新起plugin进程的示意图;
图9是根据本发明实施例的新起plugin进程内容的示意图;
图10是根据本发明实施例的提示关闭新进程的示意图;
图11是根据本发明实施例的一种应用程序的运行装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
技术术语解释:
Host:加载第三方程序的主程序。
第三方程序:其他开发者按照一定的格式开发,可以被特定Host加载并运行的程序。
进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。不同的进程有不同的进程空间,不共享内存。
本地:和网络相对,用户直接控制之下的存储数据设备。
内存数据:进程中的缓存在内存中的数据,该数据会随着进程生命结束或者断电而消失,读写速度快。
缓存数据:特指保存在磁盘上的数据,一般以文件的形式存在,进程消失、断电后该数据还会存在,读写速度慢。
子进程:假如进程A直接启动进程B,则B是A的子进程,A是B的父进程。
根据本发明实施例,提供了一种应用程序的运行方法的实施例。
根据本发明实施例,提供了一种应用程序的运行方法,如图1所示,该方法包括以下步骤:
步骤S102,在第一应用程序运行的过程中检测是否接收到请求在第一应用程序中加载第二应用程序的第一指令,其中,第一应用程序是通过第一进程运行的。
步骤S104,接收第一指令,创建第二进程,其中,第二进程用于加载第二应用程序的代码、第一应用程序的加载程序框架代码和资源文件,第二进程是区别于第一进程的新建的进程。
步骤S106,利用第二进程运行第二应用程序,其中,在第二进程运行的过程中,第一进程持续运行。
第一应用程序即主程序,也是上文中提到的Host程序。
第二应用程序为第三方应用程序。
在本发明实施例中,如果接收到请求在第一应用程序中加载第二应用程序的指令,则创建新的进程(第二进程),使用新的进程运行第二应用程序,新的进程加载第一应用程序的加载程序框架代码,不加载第一应用程序的其他代码,第一进程与第二进程为不同的进程,不共享内存,因此,第一进程无法读取到第二进程的内存数据,第二进程也无法读取到第一进程的内存数据,这就达到了数据隔离的效果,保证了第一应用程序运行的安全性,而且,由于使用了新的进程直接加载第三方应用程序,保证了第三方应用程序像主程序一样功能强大,而且不损失性能,解决了现有技术中无法在保证主程序安全运行的前提下不损失第三方应用程序性能的技术问题,达到了在保证主程序安全运行的前提下不损失第三方应用程序性能的技术效果。
可选地,在创建第二进程之后,方法还包括:判断第一应用程序的目标代码是否被第二进程加载并运行,其中,目标代码是除加载程序框架代码以外的关键代码;在第一应用程序的目标代码被第二进程加载并运行的情况下,停止运行第二进程。
第一应用程序中的关键、重要的代码即为目标代码。
第一进程是父进程,第二进程是子进程。子进程可以加载父进程的代码文件。
为了避免第二进程恶意访问第一进程中隐藏的接口从而影响第一进程自身的业务逻辑,第一进程的关键代码在运行的时候都需要判断运行所在的进程,如果发现是在第二进程中运行,则需要抛出异常,停止第二进程运行,保证第一进程的安全。可选地,在停止运行第二进程之后,释放第二进程占用的内存空间。
可选地,判断第一应用程序的目标代码是否被第二进程加载并运行包括:在目标代码被加载并运行的情况下,获取加载并运行目标代码的进程的标识信息;将获取到的标识信息与第二进程的标识信息进行匹配;在匹配成功的情况下,确定第一应用程序的目标代码被第二进程加载并运行。
系统在生成进程的时候,会为生成的进程分配标识信息,例如,标识信息可以是名字。通过进程的标识信息能够知道是哪一个进程。
在第一应用程序的目标代码被加载并运行的情况下,获取加载并运行目标代码的进程的标识信息,将获取到的标识信息与第二进程的标识信息进行比较,如果获取到的标识信息与第二进程的标识信息不相同(匹配不成功),则确定第一应用程序的目标代码没有被第二进程加载并运行。如果获取到的标识信息与第二进程的标识信息相同(匹配成功),确定第一应用程序的目标代码被第二进程加载并运行,此时,停止运行第二进程,以保证第一进程的安全,并且释放第二进程占用的内存空间。
第一进程和第二进程无法读取对方的内存数据,但是能够读取对方的缓存数据。为了保证第一进程和第二进程中缓存数据的安全性,需要对第一进程和第二进程中的一些重要的缓存数据进行加密。
在创建第二进程之前,判断第一应用程序是否已经以加密的方式缓存第一数据,其中,第一数据是第一进程中的关键数据;在第一应用程序没有以加密的方式缓存第一数据的情况下,发出第一控制指令,其中,第一控制指令用于控制第一应用程序以加密的方式缓存第一数据。
在创建第二进程之后,判断第二应用程序是否已经以加密的方式缓存第二数据,其中,第二数据是第二进程中的关键数据;在第二应用程序没有以加密的方式缓存第二数据的情况下,发出第二控制指令,其中,第二控制指令用于控制第二应用程序以加密的方式缓存第二数据。
由于第二进程会继承第一进程的所有文件读写权限,所以第二进程能访问所有第一进程缓存在本地的文件。第一应用程序和第二应用程序(第三方应用程序)都以加密的方式缓存关键数据,第一进程与第二进程之间虽然可以相互访问数据但是无法解读数据含义,避免泄漏关键数据,既保证了第一进程的安全运行,又保证了第二进程的安全运行。
可选地,在创建第二进程之后,在利用第二进程运行第二应用程序的过程中,检测是否接收到请求在第一应用程序中加载第三应用程序的第二指令,其中,第三应用程序与第二应用程序不同;在接收到第二指令之后停止运行第二进程;创建第三进程,其中,第三进程用于加载第三应用程序的代码、第一应用程序的加载程序框架代码和资源文件。
第一应用程序每次只能加载运行一个第三方应用程序,假设,在利用第二进程运行第二应用程序的过程中,接收到请求在第一应用程序中加载第三应用程序的第二指令,并且第三应用程序是不同于第二应用程序的第三方应用程序,则关闭第二进程,释放第二进程占用的内存空间。创建第三进程,通过第三进程加载第三应用程序的代码、第一应用程序的加载程序框架代码和资源文件,并利用第三进程运行第三应用程序。
启动不同的第三方应用程序时,先清理前一个第三方应用程序的进程空间之后再启动下一个第三方应用程序,保证了第三方应用程序之间的内存数据安全隔离。
作为一种可选的实施例,在利用第二进程运行第二应用程序的过程中,检测是否接收到请求在第一应用程序中加载第三应用程序的第二指令,其中,第三应用程序与第二应用程序不同;在接收到第二指令之后也可以继续运行第二进程;创建第三进程,其中,第三进程用于加载第三应用程序的代码、第一应用程序的加载程序框架代码和资源文件。使用不同的进程来运行不同的第三方应用程序,也可以达到将多个第三方应用程序所在的进程进行隔离的技术效果。
作为一种可选的实施例,在利用第二进程运行第二应用程序的过程中,如果检测到用于指示回到第一进程的指令,则对第二进程进行关闭操作,回到第一进程。
作为一种可选的实施例,在利用第二进程运行第二应用程序的过程中,如果检测到用于指示关闭第一进程的指令,则关闭第一进程,此时第二进程成为新的第一进程。例如,假设第一应用程序为微信,运行微信的进程为第一进程,在微信运行的过程中检测到请求在微信中加载QQ的第一指令,则第二应用程序为QQ,创建第二进程,其中,第二进程用于加载QQ的代码、微信的加载程序框架代码和资源文件,第二进程是区别于第一进程的新建的进程。利用第二进程运行QQ,其中,在第二进程运行的过程中,第一进程持续运行。在利用第二进程运行QQ的过程中,如果检测到用于指示关闭第一进程的指令,则关闭第一进程,此时第二进程成为新的第一进程,即运行QQ的进程成为新的第一进程。
本发明实施例提供的应用程序的运行方法,通过新起进程加载第三方业务,通过进程隔离对内存数据进行隔离;通过区别新旧进程对关键代码进行隔离,防止第三方业务利用Host潜在的接口影响Host本身业务逻辑,保证Host自身代码不被第三方程序调用,保证Host自身的安全;通过文本加密对关键数据信息进行隔离,保证Host自身的缓存数据无法被第三方程序解读,实现了安全加载第三方业务。并且,Host每次只能运行加载一个第三方程序,在启动新的第三方程序时必须先杀死旧的第三方程序所在的进程,保证了各个第三方程序之间相互安全隔离。
本发明实施例提供的应用程序的运行方法适用于所有加载第三方程序的应用,在保证第三方程序的性能和功能完整的同时,也解决了Host和第三方程序之间的安全问题,让Host加载第三方程序运行的同时也让Host程序被第三方程序影响降到最低。
图2是根据本发明实施例的应用程序的运行方法安全隔离的示意图。
如图2所示,在运行第三方应用程序的过程中可能出现的安全问题如下:
Case A:第三方程序访问Host内存数据。
Case B:第三方程序访问Host缓存文件数据。
Case C:第三方程序访问Host代码。
对于Case A,由于一个进程无法访问另一个进程的内存数据,因此,本发明实施例所提供的应用程序的运行方法在执行的过程中,通过新建进程,使得第三方程序无法访问Host内存数据。
对于Case B,本发明实施例所提供的应用程序的运行方法通过对第一进程中的关键数据、第二进程中的关键数据分别加密,使得不同进程之间虽然可以读取缓存数据,但是无法得知其含义。
对于Case C,本发明实施例所提供的应用程序的运行方法在Host除加载程序框架代码以外的关键代码被第二进程加载并运行的情况下,停止运行第二进程,达到了代码安全隔离的技术效果。
以应用宝为例对本发明实施例提供的应用程序的运行方法进行详细说明:
应用宝自身为第一应用程序,也是Host应用程序,也是主程序。
1.启动Host应用程序,自身进程启动。
点击图3中的“应用宝”的图标,终端展示图4所示的界面。
图5示出了正常的应用宝自身进程(第一进程,也是主进程、旧进程、父进程)。
图6示出了应用宝自身进程内容。
2.点击运行第三方程序,如图7所示。
图8示出了新起plugin进程(第二进程,也是第三方程序进程、新进程、子进程)。
图9示出了新起plugin进程内容。
应用宝运行第三方程序的时候,通过新起plugin进程加载第三方程序代码和资源文件;该新进程A只加载了Host中的加载程序框架模块和第三方程序模块,以及资源文件。
3.如何安全保护Host业务,防止第三方程序入侵。
加载了第三方程序,当前手机上同时存在应用宝自身业务进程和第三方程序进程;由于第三方业务进程可能执行任何代码,而且拥有和应用宝一样的文件权限,可以访问到所有应用宝的文件,随时可能入侵应用宝自身业务。可能对应用宝自身业务不利的情况有:
a:第三方程序访问应用宝的内存数据,比如应用宝客户端id(guid),密码等。
b:第三方程序访问应用宝的缓存文件数据。
c:直接加载应用宝的dex代码,在第三方程序进程空间中运行应用宝业务代码,伪装成应用宝进行各种正常的应用宝业务。
针对a情况,新启进程的方式,让应用宝内存和第三方程序进程间隔离,可以有效防止第三方程序访问应用宝的内存数据。
针对b情况,应用宝的重要缓存文件进行加密,防止被第三方程序读取后破解。
针对c情况,需要重点关注,因为对应用宝的危害最大。解决方案是,应用宝自身关键代码在运行的时候,判断当前进程是否是合法的应用宝主进程(第一进程);如果不是合法的应用宝主进程则直接抛出异常(如图10所示),停止运行新进程;由于是新进程(第二进程)crash,所以不影响应用宝主进程的运行。
4.关闭第三方程序,关闭新进程plugin,清除第三方进程的内存空间,如图5所示。
综上所述,Host启动第三方程序,采用新进程A加载第三方程序代码和资源文件;该新进程A只加载了Host中的加载程序框架代码和第三方程序代码、资源文件。一旦发现Host的其他逻辑代码被新进程A加载并运行,则立刻停止运行并抛出异常。Host每次只能加载运行一个第三方程序,退出第三方程序时自动杀死新进程A。启动新的第三方程序时必须先杀死旧的第三方程序进程。Host程序缓存关键数据加密保存本地;启动第三方程序。
本发明实施例提供的应用程序的运行方法实现了以下几个方面的安全隔离:
内存数据的安全隔离:Host业务进程和第三方程序所在的新进程在不同的进程,两者的内存数据以分属在不同进程空间的方式来实现相互安全隔离,互相不能访问。启动不同的第三方程序时,必须先清理前一个程序的进程空间(即直接杀进程)后再启动下一个第三方程序,保证第三方程序之间的内存数据安全隔离。
缓存数据的安全隔离:由于子进程会继承父进程的所有文件读写权限,所以子进程能访问所有父进程缓存在本地的文件。Host和第三方程序都以加密的方式缓存关键数据,做到Host与新进程之虽然可以相互访问数据但是不能解读数据含义,避免泄漏关键数据。
代码的安全隔离:子进程可以加载父进程的代码文件,为了避免子进程恶意访问父进程中隐藏的接口从而影响父进程自身的业务逻辑,父进程的关键代码在运行的时候都需要判断运行所在的进程,如果发现是在第三方程序中运行,则需要抛出异常停止运行,保证Host自身业务的安全。
资源文件的相互访问不会影响host和第三方程序的业务,所以资源文件不需要做隔离。
本发明实施例提供的应用程序的运行方法,通过新起进程加载第三方业务,通过进程隔离对内存数据进行隔离;通过区别新旧进程对关键代码进行隔离,防止第三方业务利用Host潜在的接口影响Host本身业务逻辑,保证Host自身的安全,保证Host自身代码不被第三方程序调用;通过文本加密对关键数据信息进行隔离,保证Host自身的缓存数据无法被第三方程序解读,实现了安全加载第三方业务。并且,Host每次只能运行加载一个第三方程序,在启动新的第三方程序时必须先杀死旧的第三方程序所在的进程,保证了各个第三方程序之间做到相互安全隔离。
本发明实施例提供的应用程序的运行方法适用于所有加载第三方程序的应用,在保证第三方程序的性能和功能完整的同时,也解决了Host和第三方程序之间的安全问题,让Host加载第三方程序运行的同时也让Host程序被第三方程序影响降到最低。
需要注意的是,在本发明实施例中,关闭进程、杀进程、杀死进程、停止运行进程这些词语具有相同的含义。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
根据本发明实施例,还提供了一种用于实施上述应用程序的运行方法的应用程序的运行装置,如图11所示,该装置包括:第一检测单元20、第一创建单元30、运行单元40。
第一检测单元20,用于在第一应用程序运行的过程中检测是否接收到请求在第一应用程序中加载第二应用程序的第一指令,其中,第一应用程序是通过第一进程运行的。
第一创建单元30,用于接收第一指令,创建第二进程,其中,第二进程用于加载第二应用程序的代码、第一应用程序的加载程序框架代码和资源文件,第二进程是区别于第一进程的新建的进程。
运行单元40,利用第二进程运行第二应用程序,其中,在第二进程运行的过程中,第一进程持续运行。
可选地,装置还包括:第一判断单元、第一控制单元。第一判断单元,用于在第一创建单元30创建第二进程之后,判断第一应用程序的目标代码是否被第二进程加载并运行,其中,目标代码是除加载程序框架代码以外的关键代码。第一控制单元,用于在第一应用程序的目标代码被第二进程加载并运行的情况下,停止运行第二进程。
可选地,第一判断单元包括:获取子单元、匹配子单元、确定子单元。获取子单元,用于在目标代码被加载并运行的情况下,获取加载并运行目标代码的进程的标识信息。匹配子单元,用于将获取到的标识信息与第二进程的标识信息进行匹配。确定子单元,用于在匹配成功的情况下,确定第一应用程序的目标代码被第二进程加载并运行。
可选地,装置还包括:释放单元。释放单元,用于在第一控制单元停止运行第二进程之后,释放第二进程占用的内存空间。
可选地,装置还包括:第二判断单元、第二控制单元。第二判断单元,用于在第一创建单元30创建第二进程之前,判断第一应用程序是否已经以加密的方式缓存第一数据,其中,第一数据是第一进程中的关键数据。第二控制单元,用于在第一应用程序没有以加密的方式缓存第一数据的情况下,发出第一控制指令,其中,第一控制指令用于控制第一应用程序以加密的方式缓存第一数据。
可选地,装置还包括:第三判断单元、第三控制单元。第三判断单元,用于在第一创建单元30创建第二进程之后,判断第二应用程序是否已经以加密的方式缓存第二数据,其中,第二数据是第二进程中的关键数据。第三控制单元,用于在第二应用程序没有以加密的方式缓存第二数据的情况下,发出第二控制指令,其中,第二控制指令用于控制第二应用程序以加密的方式缓存第二数据。
可选地,装置还包括:第二检测单元、第四控制单元、第二创建单元。第二检测单元,用于在第一创建单元30创建第二进程之后,在利用第二进程运行第二应用程序的过程中,检测是否接收到请求在第一应用程序中加载第三应用程序的第二指令,其中,第三应用程序与第二应用程序不同。第四控制单元,用于在接收到第二指令之后停止运行第二进程。第二创建单元,用于创建第三进程,其中,第三进程用于加载第三应用程序的代码、第一应用程序的加载程序框架代码和资源文件。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于存储本发明实施例的应用程序的运行方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于移动通信网络、广域网、城域网或局域网的网络中的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,在第一应用程序运行的过程中检测是否接收到请求在第一应用程序中加载第二应用程序的第一指令,其中,第一应用程序是通过第一进程运行的。
S2,接收第一指令,创建第二进程,其中,第二进程用于加载第二应用程序的代码、第一应用程序的加载程序框架代码和资源文件,第二进程是区别于第一进程的新建的进程。
S3,利用第二进程运行第二应用程序,其中,在第二进程运行的过程中,第一进程持续运行。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:判断第一应用程序的目标代码是否被第二进程加载并运行,其中,目标代码是除加载程序框架代码以外的关键代码;在第一应用程序的目标代码被第二进程加载并运行的情况下,停止运行第二进程。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:在目标代码被加载并运行的情况下,获取加载并运行目标代码的进程的标识信息;将获取到的标识信息与第二进程的标识信息进行匹配;在匹配成功的情况下,确定第一应用程序的目标代码被第二进程加载并运行。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:释放第二进程占用的内存空间。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:判断第一应用程序是否已经以加密的方式缓存第一数据,其中,第一数据是第一进程中的关键数据;在第一应用程序没有以加密的方式缓存第一数据的情况下,发出第一控制指令,其中,第一控制指令用于控制第一应用程序以加密的方式缓存第一数据。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:判断第二应用程序是否已经以加密的方式缓存第二数据,其中,第二数据是第二进程中的关键数据;在第二应用程序没有以加密的方式缓存第二数据的情况下,发出第二控制指令,其中,第二控制指令用于控制第二应用程序以加密的方式缓存第二数据。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:在利用第二进程运行第二应用程序的过程中,检测是否接收到请求在第一应用程序中加载第三应用程序的第二指令,其中,第三应用程序与第二应用程序不同;在接收到第二指令之后停止运行第二进程;创建第三进程,其中,第三进程用于加载第三应用程序的代码、第一应用程序的加载程序框架代码和资源文件。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种应用程序的运行方法,其特征在于,包括:
在第一应用程序运行的过程中检测是否接收到请求在所述第一应用程序中加载第二应用程序的第一指令,其中,所述第一应用程序是通过第一进程运行的;
接收所述第一指令,创建第二进程,其中,所述第二进程用于加载所述第二应用程序的代码、所述第一应用程序的加载程序框架代码和资源文件,所述第二进程是区别于所述第一进程的新建的进程;
利用所述第二进程运行所述第二应用程序,其中,在所述第二进程运行的过程中,所述第一进程持续运行。
2.根据权利要求1所述的方法,其特征在于,在创建第二进程之后,所述方法还包括:
判断所述第一应用程序的目标代码是否被所述第二进程加载并运行,其中,所述目标代码是除所述加载程序框架代码以外的关键代码;
在所述第一应用程序的所述目标代码被所述第二进程加载并运行的情况下,停止运行所述第二进程。
3.根据权利要求2所述的方法,其特征在于,判断所述第一应用程序的目标代码是否被所述第二进程加载并运行包括:
在所述目标代码被加载并运行的情况下,获取加载并运行所述目标代码的进程的标识信息;
将获取到的标识信息与所述第二进程的标识信息进行匹配;
在匹配成功的情况下,确定所述第一应用程序的所述目标代码被所述第二进程加载并运行。
4.根据权利要求2所述的方法,其特征在于,在停止运行所述第二进程之后,所述方法还包括:
释放所述第二进程占用的内存空间。
5.根据权利要求1所述的方法,其特征在于,在创建第二进程之前,所述方法还包括:
判断所述第一应用程序是否已经以加密的方式缓存第一数据,其中,所述第一数据是所述第一进程中的关键数据;
在所述第一应用程序没有以加密的方式缓存所述第一数据的情况下,发出第一控制指令,其中,所述第一控制指令用于控制所述第一应用程序以加密的方式缓存所述第一数据。
6.根据权利要求1所述的方法,其特征在于,在创建第二进程之后,所述方法还包括:
判断所述第二应用程序是否已经以加密的方式缓存第二数据,其中,所述第二数据是所述第二进程中的关键数据;
在所述第二应用程序没有以加密的方式缓存所述第二数据的情况下,发出第二控制指令,其中,所述第二控制指令用于控制所述第二应用程序以加密的方式缓存所述第二数据。
7.根据权利要求1所述的方法,其特征在于,在创建第二进程之后,所述方法还包括:
在利用所述第二进程运行所述第二应用程序的过程中,检测是否接收到请求在所述第一应用程序中加载第三应用程序的第二指令,其中,所述第三应用程序与所述第二应用程序不同;
在接收到所述第二指令之后停止运行所述第二进程;
创建第三进程,其中,所述第三进程用于加载所述第三应用程序的代码、所述第一应用程序的加载程序框架代码和所述资源文件。
8.一种应用程序的运行装置,其特征在于,包括:
第一检测单元,用于在第一应用程序运行的过程中检测是否接收到请求在所述第一应用程序中加载第二应用程序的第一指令,其中,所述第一应用程序是通过第一进程运行的;
第一创建单元,用于接收所述第一指令,创建第二进程,其中,所述第二进程用于加载所述第二应用程序的代码、所述第一应用程序的加载程序框架代码和资源文件,所述第二进程是区别于所述第一进程的新建的进程;
运行单元,利用所述第二进程运行所述第二应用程序,其中,在所述第二进程运行的过程中,所述第一进程持续运行。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第一判断单元,用于在所述第一创建单元创建第二进程之后,判断所述第一应用程序的目标代码是否被所述第二进程加载并运行,其中,所述目标代码是除所述加载程序框架代码以外的关键代码;
第一控制单元,用于在所述第一应用程序的所述目标代码被所述第二进程加载并运行的情况下,停止运行所述第二进程。
10.根据权利要求9所述的装置,其特征在于,所述第一判断单元包括:
获取子单元,用于在所述目标代码被加载并运行的情况下,获取加载并运行所述目标代码的进程的标识信息;
匹配子单元,用于将获取到的标识信息与所述第二进程的标识信息进行匹配;
确定子单元,用于在匹配成功的情况下,确定所述第一应用程序的所述目标代码被所述第二进程加载并运行。
11.根据权利要求9所述的装置,其特征在于,所述装置还包括:
释放单元,用于在所述第一控制单元停止运行所述第二进程之后,释放所述第二进程占用的内存空间。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二判断单元,用于在所述第一创建单元创建第二进程之前,判断所述第一应用程序是否已经以加密的方式缓存第一数据,其中,所述第一数据是所述第一进程中的关键数据;
第二控制单元,用于在所述第一应用程序没有以加密的方式缓存所述第一数据的情况下,发出第一控制指令,其中,所述第一控制指令用于控制所述第一应用程序以加密的方式缓存所述第一数据。
13.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第三判断单元,用于在所述第一创建单元创建第二进程之后,判断所述第二应用程序是否已经以加密的方式缓存第二数据,其中,所述第二数据是所述第二进程中的关键数据;
第三控制单元,用于在所述第二应用程序没有以加密的方式缓存所述第二数据的情况下,发出第二控制指令,其中,所述第二控制指令用于控制所述第二应用程序以加密的方式缓存所述第二数据。
14.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二检测单元,用于在所述第一创建单元创建第二进程之后,在利用所述第二进程运行所述第二应用程序的过程中,检测是否接收到请求在所述第一应用程序中加载第三应用程序的第二指令,其中,所述第三应用程序与所述第二应用程序不同;
第四控制单元,用于在接收到所述第二指令之后停止运行所述第二进程;
第二创建单元,用于创建第三进程,其中,所述第三进程用于加载所述第三应用程序的代码、所述第一应用程序的加载程序框架代码和所述资源文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710051080.7A CN108334404B (zh) | 2017-01-20 | 2017-01-20 | 应用程序的运行方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710051080.7A CN108334404B (zh) | 2017-01-20 | 2017-01-20 | 应用程序的运行方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108334404A true CN108334404A (zh) | 2018-07-27 |
CN108334404B CN108334404B (zh) | 2022-02-22 |
Family
ID=62923082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710051080.7A Active CN108334404B (zh) | 2017-01-20 | 2017-01-20 | 应用程序的运行方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108334404B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491725A (zh) * | 2018-11-12 | 2019-03-19 | 火烈鸟网络(广州)股份有限公司 | 应用程序可交互多开方法和系统、存储介质、电子设备 |
CN109885340A (zh) * | 2019-01-10 | 2019-06-14 | 北京字节跳动网络技术有限公司 | 一种应用程序冷启动加速方法、装置、电子设备 |
CN111240816A (zh) * | 2020-01-03 | 2020-06-05 | 上海瀚之友信息技术服务有限公司 | 一种程序可中断运行系统及方法 |
CN111381903A (zh) * | 2020-03-18 | 2020-07-07 | 支付宝(杭州)信息技术有限公司 | 程序运行方法、装置、设备及介质 |
CN111625813A (zh) * | 2020-05-27 | 2020-09-04 | 重庆夏软科技有限公司 | 一种通过修改进程保护程序的方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944167A (zh) * | 2010-09-29 | 2011-01-12 | 中国科学院计算技术研究所 | 识别恶意程序的方法及系统 |
CN103685233A (zh) * | 2013-11-15 | 2014-03-26 | 中国人民解放军91635部队 | 一种基于Windows内核驱动的木马监测方法 |
US20140129880A1 (en) * | 2012-11-08 | 2014-05-08 | Dell Products L.P. | Generation of memory dump of a computer process without terminating the computer process |
CN104156298A (zh) * | 2014-08-19 | 2014-11-19 | 腾讯科技(深圳)有限公司 | 一种应用监控方法及装置 |
CN104199649A (zh) * | 2014-08-22 | 2014-12-10 | 东南大学 | 一种用于父子进程间交互信息的路径剖析方法 |
CN104331308A (zh) * | 2014-10-30 | 2015-02-04 | 章立春 | 一种pe程序文件加载执行方法 |
US20160283409A1 (en) * | 2015-03-27 | 2016-09-29 | Intel Corporation | Apparatus and Method for Implementing A Forked System Call In A System With A Protected Region |
-
2017
- 2017-01-20 CN CN201710051080.7A patent/CN108334404B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944167A (zh) * | 2010-09-29 | 2011-01-12 | 中国科学院计算技术研究所 | 识别恶意程序的方法及系统 |
US20140129880A1 (en) * | 2012-11-08 | 2014-05-08 | Dell Products L.P. | Generation of memory dump of a computer process without terminating the computer process |
CN103685233A (zh) * | 2013-11-15 | 2014-03-26 | 中国人民解放军91635部队 | 一种基于Windows内核驱动的木马监测方法 |
CN104156298A (zh) * | 2014-08-19 | 2014-11-19 | 腾讯科技(深圳)有限公司 | 一种应用监控方法及装置 |
CN104199649A (zh) * | 2014-08-22 | 2014-12-10 | 东南大学 | 一种用于父子进程间交互信息的路径剖析方法 |
CN104331308A (zh) * | 2014-10-30 | 2015-02-04 | 章立春 | 一种pe程序文件加载执行方法 |
US20160283409A1 (en) * | 2015-03-27 | 2016-09-29 | Intel Corporation | Apparatus and Method for Implementing A Forked System Call In A System With A Protected Region |
Non-Patent Citations (4)
Title |
---|
ERIK BOSMAN等: "Framing Signals - A Return to Portable Shellcode", 《2014 IEEE SYMPOSIUM ON SECURITY AND PRIVACY》 * |
GITYUAN: "理解Android进程创建流程", 《HTTP://GITYUAN.COM/2016/03/26/APP-PROCESS-CREATE/》 * |
范平: "UNIX系统的进程控制与其代码分析", 《咸宁学院学报》 * |
魏立峰等: "基于私有目录容器的用户数据文件保护方法", 《计算机工程与科学》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491725A (zh) * | 2018-11-12 | 2019-03-19 | 火烈鸟网络(广州)股份有限公司 | 应用程序可交互多开方法和系统、存储介质、电子设备 |
CN109885340A (zh) * | 2019-01-10 | 2019-06-14 | 北京字节跳动网络技术有限公司 | 一种应用程序冷启动加速方法、装置、电子设备 |
CN109885340B (zh) * | 2019-01-10 | 2022-06-10 | 北京字节跳动网络技术有限公司 | 一种应用程序冷启动加速方法、装置、电子设备 |
CN111240816A (zh) * | 2020-01-03 | 2020-06-05 | 上海瀚之友信息技术服务有限公司 | 一种程序可中断运行系统及方法 |
CN111381903A (zh) * | 2020-03-18 | 2020-07-07 | 支付宝(杭州)信息技术有限公司 | 程序运行方法、装置、设备及介质 |
CN111625813A (zh) * | 2020-05-27 | 2020-09-04 | 重庆夏软科技有限公司 | 一种通过修改进程保护程序的方法 |
CN111625813B (zh) * | 2020-05-27 | 2023-02-28 | 重庆夏软科技有限公司 | 一种通过修改进程保护程序的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108334404B (zh) | 2022-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108334404A (zh) | 应用程序的运行方法和装置 | |
CN104484599B (zh) | 一种基于应用程序的行为处理方法和装置 | |
CN109155774B (zh) | 用于检测安全威胁的系统和方法 | |
CN105122260B (zh) | 到安全操作系统环境的基于上下文的切换 | |
US8272059B2 (en) | System and method for identification and blocking of malicious code for web browser script engines | |
CN103559446B (zh) | 一种基于安卓系统的设备的动态病毒检测方法和装置 | |
CN104091125B (zh) | 处理悬浮窗的方法及悬浮窗处理装置 | |
CN105843653B (zh) | 一种安全应用配置方法及装置 | |
US8782615B2 (en) | System, method, and computer program product for simulating at least one of a virtual environment and a debugging environment to prevent unwanted code from executing | |
US20130246038A1 (en) | Emulator updating system and method | |
US9516056B2 (en) | Detecting a malware process | |
CN106156619A (zh) | 应用安全防护方法及装置 | |
US20200389472A1 (en) | Stateful rule generation for behavior based threat detection | |
CN107949846A (zh) | 恶意线程挂起的检测 | |
CN104750534A (zh) | 触发虚拟机自省的方法、装置及系统 | |
CN106228067A (zh) | 恶意代码动态检测方法及装置 | |
CN111177727B (zh) | 漏洞检测方法及装置 | |
CN101047701B (zh) | 保证应用程序安全运行的系统和方法 | |
CN107392012A (zh) | 移动设备的应用监控管理方法、装置及移动设备 | |
CN110414217A (zh) | 应用程序的安全运行方法、装置、电子设备和存储介质 | |
CN103561045A (zh) | 用于Android系统的安全监测系统和方法 | |
CN107944292A (zh) | 一种隐私数据保护方法及系统 | |
CN106682493B (zh) | 一种防止进程被恶意结束的方法、装置及电子设备 | |
CN103870761B (zh) | 基于本地虚拟环境的防泄密方法及装置 | |
CN106355100A (zh) | 一种安全保护系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |