CN108898008A - 应用程序的运行方法和装置 - Google Patents

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

Info

Publication number
CN108898008A
CN108898008A CN201810392432.XA CN201810392432A CN108898008A CN 108898008 A CN108898008 A CN 108898008A CN 201810392432 A CN201810392432 A CN 201810392432A CN 108898008 A CN108898008 A CN 108898008A
Authority
CN
China
Prior art keywords
bytecode
virtual machine
function
encrypted
process virtual
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
CN201810392432.XA
Other languages
English (en)
Other versions
CN108898008B (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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology 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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201810392432.XA priority Critical patent/CN108898008B/zh
Publication of CN108898008A publication Critical patent/CN108898008A/zh
Application granted granted Critical
Publication of CN108898008B publication Critical patent/CN108898008B/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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

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)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种应用程序的运行方法和装置,该方法包括:在运行应用程序的过程中,若执行到应用程序中的字节码密文,则将字节码密文载入至启动的进程虚拟机,其中,进程虚拟机嵌设在应用程序中,进程虚拟机嵌设有白盒解密表;控制进程虚拟机根据白盒解密表对字节码密文进行解密,得到字节码明文;控制进程虚拟机执行字节码明文。本发明通过将字节码传统加密方案中使用密钥的解密算法替换为白盒解密表,并将白盒解密表与进程虚拟机相结合,从而避免了进程虚拟机中直接保存解密密钥所带来的解密密钥被窃取,进而导致字节码密文被破解的问题,提升了进程虚拟机所指向的敏感字节码的安全级别,避免了应用程序中加密的敏感字节码被破解并窃取的风险。

Description

应用程序的运行方法和装置
技术领域
本发明涉及计算机软件技术领域,特别是涉及一种应用程序的运行方法和装置。
背景技术
在相关技术中,通常会使用进程虚拟机来保护软件中的敏感代码逻辑。在高安全级别的保护中,会结合加密技术一起使用,即,将进程虚拟机要执行的字节码(即敏感代码逻辑,例如账户登录逻辑、视频解密逻辑等等)加密保护起来,待到需要执行该字节码时,再将其解密出来由进程虚拟机进行执行。
其中,进程虚拟机为单个进程的运行虚拟出了一个封闭环境。运行在虚拟机上的代码逻辑被局限在虚拟机提供的资源里,也就是说,它的权限不能超出它所处的虚拟环境。设计实现进程虚拟机的目的是封装操作系统与底层硬件的接口,给运行在其中的字节码一个独立封闭的运行环境。
其中,相关技术中在对软件中的敏感代码逻辑进行保护时,会存在用于解密字节码的密钥如何管理的问题,在现有的解决方案中,一种方式是将密钥存储在软件中,以便运行前进行解码操作,但是这种方式存在密钥被反编译获取的风险;另一种方式是借助于网络从服务器下载密钥,但是这种方式又存在网络传输过程中密钥被抓包截获的风险。
由此可见,相关技术中的应用程序的字节码密钥的管理方案普遍存在着字节码密钥被窃取的风险,从而导致包含进程虚拟机的软件的敏感代码逻辑被破解的问题。
发明内容
本发明提供了一种应用程序的运行方法和装置,以解决相关技术中的应用程序的字节码密钥的管理方案所存在的字节码密钥被窃取的风险,从而导致包含进程虚拟机的软件的敏感代码逻辑被破解的问题。
为了解决上述问题,根据本发明的一个方面,本发明公开了一种应用程序的运行方法,包括:
在运行所述应用程序的过程中,若执行到所述应用程序中的字节码密文,则将所述字节码密文载入至启动的进程虚拟机,其中,所述进程虚拟机嵌设在所述应用程序中,所述进程虚拟机嵌设有白盒解密表;
控制所述进程虚拟机根据所述白盒解密表对所述字节码密文进行解密,得到字节码明文;
控制所述进程虚拟机执行所述字节码明文。
可选地,所述运行所述应用程序之前,所述方法还包括:
确定待发布的应用程序中待加密程序代码;
采用预设加密算法和预设密钥对所述待加密程序代码进行加密,得到字节码密文;
根据所述预设加密算法和所述预设密钥生成白盒解密表;
将所述白盒解密表嵌入进程虚拟机;
将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述白盒解密表的所述进程虚拟机,并发布所述应用程序。
可选地,所述采用预设加密算法和预设密钥对所述待加密程序代码进行加密,得到字节码密文之前,所述方法还包括:
针对所述待加密程序代码中的每个函数,配置预设加密算法和预设密钥;
所述采用预设加密算法和预设密钥对所述待加密程序代码进行加密,得到字节码密文,包括:
根据所述预设加密算法和所述预设密钥对所述待加密程序代码中的对应函数进行单独加密,得到字节码密文,其中,所述字节码密文包括单独加密的一个或多个函数密文,每个函数密文对应一个预设加密算法和一个预设密钥;
所述根据所述预设加密算法和所述预设密钥生成白盒解密表,包括:
根据所述每个函数对应的预设加密算法和预设密钥,生成每个函数的白盒解密表;
所述将所述白盒解密表嵌入进程虚拟机,包括:
将所述每个函数的白盒解密表嵌入进程虚拟机;
所述将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述白盒解密表的所述进程虚拟机,并发布所述应用程序,包括:
将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述每个函数的白盒解密表的所述进程虚拟机,并发布所述应用程序。
可选地,所述字节码密文包括单独加密的一个或多个函数密文,每个函数对应一个白盒解密表;
所述控制所述进程虚拟机根据所述白盒解密表对所述字节码密文进行解密,得到字节码明文,包括:
控制所述进程虚拟机采用当前待执行的目标函数对应的白盒解密表,对所述目标函数的函数密文进行解密,得到当前待执行的目标函数明文;
所述控制所述进程虚拟机执行所述字节码明文之前,所述方法还包括:
为所述当前待执行的目标函数明文分配内存;
所述控制所述进程虚拟机执行所述字节码明文,包括:
控制所述进程虚拟机运行所述内存中的所述目标函数明文;
所述控制所述进程虚拟机执行所述字节码明文之后,所述方法还包括:
当所述目标函数明文运行结束时,清除所述内存中的所述目标函数明文。
可选地,所述为所述当前待执行的目标函数明文分配内存,包括:
根据当前待执行的目标函数明文的函数逻辑,分配多个寄存器以运行所述目标函数明文。
可选地,所述确定待发布的应用程序中待加密程序代码,包括:
确定待发布的应用程序中待加密代码;
对所述待加密代码作词法和语法分析,得到抽象语法树;
将所述抽象语法树编译成字节码,得到待加密字节码。
根据本发明的另一方面,本发明还公开了一种应用程序的运行装置,包括:
载入模块,用于在运行所述应用程序的过程中,若执行到所述应用程序中的字节码密文,则将所述字节码密文载入至启动的进程虚拟机,其中,所述进程虚拟机嵌设在所述应用程序中,所述进程虚拟机嵌设有白盒解密表;
解密模块,用于控制所述进程虚拟机根据所述白盒解密表对所述字节码密文进行解密,得到字节码明文;
控制模块,用于控制所述进程虚拟机执行所述字节码明文。
可选地,所述装置还包括:
确定模块,用于确定待发布的应用程序中待加密程序代码;
加密模块,用于采用预设加密算法和预设密钥对所述待加密程序代码进行加密,得到字节码密文;
生成模块,用于根据所述预设加密算法和所述预设密钥生成白盒解密表;
嵌入模块,用于将所述白盒解密表嵌入进程虚拟机;
发布模块,用于将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述白盒解密表的所述进程虚拟机,并发布所述应用程序。
可选地,所述装置还包括:
配置模块,用于针对所述待加密程序代码中的每个函数,配置预设加密算法和预设密钥;
所述加密模块包括:
加密子模块,用于根据所述预设加密算法和所述预设密钥对所述待加密程序代码中的对应函数进行单独加密,得到字节码密文,其中,所述字节码密文包括单独加密的一个或多个函数密文,每个函数密文对应一个预设加密算法和一个预设密钥;
所述生成模块包括:
生成子模块,用于根据所述每个函数对应的预设加密算法和预设密钥,生成每个函数的白盒解密表;
所述嵌入模块包括:
嵌入子模块,用于将所述每个函数的白盒解密表嵌入进程虚拟机;
所述发布模块包括:
发布子模块,用于将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述每个函数的白盒解密表的所述进程虚拟机,并发布所述应用程序。
可选地,所述字节码密文包括单独加密的一个或多个函数密文,每个函数对应一个白盒解密表;
所述解密模块包括:
解密子模块,用于控制所述进程虚拟机采用当前待执行的目标函数对应的白盒解密表,对所述目标函数的函数密文进行解密,得到当前待执行的目标函数明文;
所述装置还包括:
分配模块,用于在所述控制模块控制所述进程虚拟机执行所述字节码明文之前,为所述当前待执行的目标函数明文分配内存;
所述控制模块包括:
控制子模块,用于控制所述进程虚拟机运行所述内存中的所述目标函数明文;
所述装置还包括:
清除模块,用于在所述控制模块控制所述进程虚拟机执行所述字节码明文之后,当所述目标函数明文运行结束时,清除所述内存中的所述目标函数明文。
可选地,所述分配模块包括:
分配子模块,用于根据当前待执行的目标函数明文的函数逻辑,分配多个寄存器以运行所述目标函数明文。
可选地,所述确定模块包括:
确定子模块,用于确定待发布的应用程序中待加密代码;
分析子模块,用于对所述待加密代码作词法和语法分析,得到抽象语法树;
编译子模块,用于将所述抽象语法树编译成字节码,得到待加密字节码。
与现有技术相比,本发明包括以下优点:
本发明通过将字节码传统加密方案中使用密钥的解密算法替换为白盒解密表,并将白盒解密表与进程虚拟机相结合,从而避免了进程虚拟机中直接保存解密密钥所带来的解密密钥被窃取,进而导致字节码密文被破解的问题,提升了进程虚拟机所指向的敏感字节码的安全级别,避免了应用程序中加密的敏感字节码被破解并窃取的风险。
附图说明
图1是本发明的一种应用程序加密方法实施例的步骤流程图;
图2是本发明的一种应用程序运行方法实施例的步骤流程图;
图3是本发明的另一种应用程序加密方法实施例的步骤流程图;
图4是本发明的另一种应用程序运行方法实施例的步骤流程图;
图5A是本发明实施例的一种字节码加密方法的示意图;
图5B是本发明实施例的另一种字节码加密方法的示意图;
图6A是现有技术的一种应用程序加密方法的示意图;
图6B是现有技术的另一种应用程序加密方法的示意图;
图6C是本发明实施例的一种应用程序加密方法的示意图;
图7是本发明的一种应用程序运行装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明的一种应用程序加密方法实施例的步骤流程图,该方法可以应用于服务器,具体可以包括如下步骤:
S101,确定待发布的应用程序中待加密程序代码;
其中,由于在开发一款软件时,只有一部分功能的逻辑代码涉及信息安全问题,从而本步骤中只需要确定待发布的软件中涉及重要逻辑的代码部分,即待加密程序代码(例如账户登录逻辑代码、视频解密逻辑代码)。
其中,待加密程序代码即为软件中需要保护的程序代码,该程序代码可以包括机器码和字节码。
可选地,在一个实施例中,当该待加密程序代码中包括待加密字节码时,在执行步骤101时,可以通过以下方式来实现:
确定待发布的应用程序中待加密代码;
其中,软件的开发语言可以是C、C++、Java等等开发语言,本发明对此并不限定。通常待保护软件中只有部分代码逻辑需要被加密的,可根据实际需要来确定软件中待加密的代码,代码的形式不限。
对所述待加密代码作词法和语法分析,得到抽象语法树;
其中,可以利用语法分析器来对待加密代码作词法和语法分析,从而得到抽象语法树(abstract syntax tree,AST)。其中,图5A示出了“a=b/2+c*5”的AST结构,其中,AST可以体现出该待加密代码中哪个函数先执行,哪个函数后执行,以及各个函数之间的逻辑关系。
将所述抽象语法树编译成字节码,得到待加密字节码。
其中,可以将待加密代码的AST编译成虚拟机可以识别的字节码,使得AST所表达的各个函数的逻辑关系能够以计算机可以识别的字节码形式来体现。
本发明实施例通过将涉及信息安全的重要代码逻辑转换成AST的形式来表达,并将AST编译成虚拟机可以识别的字节码,从而将这部分逻辑转移到虚拟机内执行。
当然,本发明实施例只是示意性的示出了一种利用AST来确定软件中的待加密程序代码的方法,本发明还包括现有技术中其他可以确定软件中待加密程序代码的方法,本发明对此并不限定。
S102,采用预设加密算法和预设密钥对所述待加密程序代码进行加密,得到字节码密文;
其中,在对待加密程序代码进行加密时所使用的加密算法和加密密钥,可以是预先配置好的,也可以是随机选择的。其中,该预设加密算法为对称算法。
如图5A所示,当经过步骤101确定了软件中的待加密程序代码为“a=b/2+c*5”对应的字节码时,本步骤中,则可以将整个待加密程序代码的AST结构(即,“a=b/2+c*5”)对应的字节码进行整体加密。
S103,根据所述预设加密算法和所述预设密钥生成白盒解密表;
其中,为了避免字节码的加密密钥,即预设密钥被窃取,本步骤可以通过根据预设加密算法和预设密钥,来生成白盒解密表的方式,来避免预设密钥被窃取。
其中,本发明实施例中预设加密算法为对称算法,因此,预设密钥既是加密密钥也是解密密钥。具体而言,可以根据预设加密算法和预设密钥以及字节码密文,来确定对应该预设加密算法的解密算法;然后采用传统技术中的白盒加密技术对该解密算法和预设密钥进行混淆处理,从而生成白盒解密表,在解密过程中,可以通过查找该白盒解密表来对字节码密文进行解密,而不再依赖于原来的加解密算法和对应密钥,避免了加密/解密密钥被暴露的问题。
S104,将所述白盒解密表嵌入进程虚拟机;
其中,如图6A、图6B分别示出了现有技术中两种应用程序加密方法的示意图,图6A中,将字节码嵌入至(程序)虚拟机中,那么未加密的字节码中涉及信息安全的重要逻辑则容易被攻击者窃取;在图6B中,虽然字节码被加密,但是开发人员会将该字节码的解密密钥一起嵌入至(程序)虚拟机,那么在运行该字节码时,该解密密钥也容易被窃取,从而导致字节码被破解;而本实施例中,参照图6C,可以将对待加密程序代码加密,得到加密后的字节码,并且,将该字节码密文的白盒解密表嵌入至进程虚拟机中,从而使得攻击者难以获知被加密的字节码的解密密钥,提升了对加密字节码的破解难度。
其中,进程虚拟机具有类似CPU的数据处理功能。
S105,将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述白盒解密表的所述进程虚拟机,并发布所述应用程序。
其中,经过上述S101~S104的处理,就可以将该待发布的软件中待加密程序代码,例如上述列举的“a=b/2+c*5”逻辑,替换为加密后的字节码,以及嵌设有字节码密文的白盒解密表的进程虚拟机。最后,就可以将替换处理后的软件进行发布,以便于客户端下载。
其中,在运行该字节码时,借助于进程虚拟机可以使字节码达到跨平台运行的效果。即同一套字节码可以在不同的操作系统上运行。
举例来说,本发明实施例发布的软件可以在Linux/iOS/Android等各个操作系统平台上运行,不受操作系统差异的限制,从而全面提升软件的安全级别。
这样,本发明实施例通过对待发布软件中的待保护的程序代码进行加密,并根据加密算法和加密密钥来生成白盒解密表,最后,将白盒解密表嵌入进程虚拟机中,并使软件中待保护的程序代码替换为上述进程虚拟机和字节码密文,对处理后的软件进行发布,这样,本发明实施例使进程虚拟机中嵌入白盒解密表,避免进程虚拟机中解密密钥被窃取的风险,通过将解密密钥隐藏在白盒解密表中,也同样达到了字节码解密的目的,并通过将白盒解密表与进程虚拟机结合的方式,进而提升了进程虚拟机的安全级别。
经过上述图1实施例的应用程序的加密过程之后,参照图2,示出了本发明的一种对图1发布的应用程序的运行方法实施例的步骤流程图,该方法可以应用于客户端或移动终端,具体可以包括如下步骤:
S201,在运行所述应用程序的过程中,若执行到所述应用程序中的字节码密文,则启动应用程序中的进程虚拟机;
其中,移动终端从服务器下载了该图1实施例的方法发布的软件。其中,字节码密文和携带有白盒解密表的进程虚拟机存储在硬盘中。
例如,该软件中的账户登录逻辑为经过加密的字节码密文,那么在运行该软件的过程中,如果执行到账户登录功能,则需要执行硬盘中的该字节码密文,因此,需要启动硬盘存储的进程虚拟机,其中,该进程虚拟机预先嵌设在该软件中;
而为了使本发明的应用程序能够跨平台执行,可以将应用程序中预先嵌入的字节码密文载入至已启动的进程虚拟机中执行。
其中,在运行软件时,需要对该进程虚拟机(用于模拟CPU)分配内存。其中,部分内存(内存区域A)用于存储进程虚拟机,部分内存(内存区域B)用于存储当前解密后的函数明文。
S202,将所述字节码密文载入启动的进程虚拟机;
其中,所述应用程序中嵌设有进程虚拟机(其嵌设有用于对下述字节码密文解密的白盒解密表)和字节码密文,但是,在启动该进程虚拟机时,该运转的进程虚拟机中是没有字节码密文的,因此,还需要由本发明实施例的方法将硬盘中的该字节码密文载入至启动的该进程虚拟机中(即,系统分配的内存区域A中)进行运行。
其中,所述进程虚拟机嵌设有白盒解密表;
S203,控制所述进程虚拟机根据所述白盒解密表对所述字节码密文进行解密,得到字节码明文;
其中,针对软件执行过程中当前执行的字节码密文进行解密,从而得到解密后的字节码明文。
具体而言,进程虚拟机在解密字节码时,在内存区域A的虚拟机上利用嵌设的白盒解密表来对整个字节码密文进行解密,就可以得到函数明文(也是字节码形式的机器指令)。
S204,控制所述进程虚拟机执行所述字节码明文。
其中,解密后的字节码明文会会缓存至内存区域B中,其中,可以控制进程虚拟机来运行内存区域B中的整个字节码逻辑。
这样,本发明实施例通过将字节码传统加密方案中使用密钥的解密算法替换为白盒解密表,并将白盒解密表与进程虚拟机相结合,从而避免了进程虚拟机中直接保存解密密钥所带来的解密密钥被窃取,进而导致字节码密文被破解的问题,提升了进程虚拟机所指向的敏感字节码的安全级别,避免了应用程序中加密的敏感字节码被破解并窃取的风险。
参照图3,示出了本发明的一种应用程序加密方法实施例的步骤流程图,该方法可以应用于服务器,具体可以包括如下步骤:
S301,确定待发布的应用程序中待加密程序代码;
具体参照上述S101的阐述,这里不再赘述。
S302,针对所述待加密程序代码中的每个函数,配置预设加密算法和预设密钥;
其中,待加密程序代码为一个重要逻辑的完整代码,而该重要逻辑中可以涉及一个或多个函数,因此,为了提升字节码加密的可靠性,以及提升窃取者对软件中该加密过的字节码的窃取难度,可以针对待加密程序代码中的每个函数,分别配置对应的加密算法和加密密钥(即预设密钥),其中,该加密算法为对称算法。
其中,在不同的实施例中,针对待加密程序代码中不同的函数,本发明所配置的对应加密算法、加密密钥可以相同或者不同。
也就是说,虽然每个函数所配置的加密算法都是对称算法,但是对称加密算法的类型很多,例如包括DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法等,因此,对不同的函数可以配置不同的对称加密算法或相同的对称加密算法。
如图5B所示,本步骤可以对“a=b/2+c*5”中的2个函数“b/2”和“c*5”分别配置加密算法和加密密钥。
其中,对于对待加密程序代码中的每个函数,所配置的加密函数可以相同或不同,且加密密钥也可以相同或不同。其中,对每个函数所配置的加密算法以及加密密钥可以从现有的加密算法和加密密钥中随机选择进行配置,也可以对每个函数预先配置加密算法和加密密钥。
S303,根据所述预设加密算法和所述预设密钥对所述待加密程序代码中的对应函数进行单独加密,得到字节码密文;
其中,所述字节码密文包括单独加密的一个或多个函数密文,每个函数密文对应一个预设加密算法和一个预设密钥;
如图5B所示,可以对“a=b/2+c*5”中的2个函数“b/2”和“c*5”分别进行单独加密,从而可以得到多个函数密文,该多个函数密文构成字节码密文。
需要注意的是,在对待加密程序代码中的每个函数进行加密时,不同的待加密函数所使用的加密算法、加密密钥可以相同或不同。另外,在加密时,对每个函数所采用的加密算法以及加密密钥可以从现有的加密算法和加密密钥中随机选择进行配置,也可以对每个函数预先配置加密算法和加密密钥。
这样,相比于图5A,本发明实施例的图5B的加密方案通过对待加密程序代码中的每个函数分别进行单独加密,从而提升了字节码的安全级别和攻击难度。
S304,根据所述每个函数对应的预设加密算法和预设密钥,生成每个函数的白盒解密表;
举例来说,可以将待加密的函数1所使用的预设加密算法1以及预设密钥1,来生成函数1的白盒解密表1;将待加密的函数2所使用的预设加密算法2以及预设密钥2,来生成函数2的白盒解密表2……,使得每个待加密的函数都可以生成对应的一个白盒解密表。
需要注意的是,由于不同待加密函数之间所配置的预设加密算法、预设密钥可以相同或不同,因此,不同待加密函数之间的白盒解密表也是可以相同或不同的。
S305,将所述每个函数的白盒解密表嵌入进程虚拟机;
其中,可以将对待加密程序代码加密后得到的每个函数的白盒解密表,嵌入至进程虚拟机中。其中,进程虚拟机具有CPU的数据处理功能。
其中,在嵌入进程虚拟机时,可以对每个函数密文与解密该函数密文所采用的白盒解密表设置映射关系,从而可以根据该映射关系来唯一的确定每个函数密文采用哪个白盒解密表进行解密,其中,该映射关系的结构可以为表1所示的数据表或者其他形式。
函数ID/名称 白盒解密表ID/名称
表1
S306,将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述每个函数的白盒解密表的所述进程虚拟机,并发布所述应用程序。
其中,经过上述S301~S105的处理,就可以将该待发布的软件中待加密程序代码,替换为该程序代码中每个函数的函数密文以及嵌设每个函数的白盒解密表的进程虚拟机。最后,就可以将替换处理后的软件进行发布,以便于客户端下载。
其中,在运行字节码密文时,通过将字节码密文嵌入至进程虚拟机中,可以借助于进程虚拟机利用白盒解密表对字节码密文进行解密,从而在进程虚拟机上运行字节码明文,使字节码达到跨平台运行的效果。即同一套字节码可以在不同的操作系统上运行(只要在相应的虚拟机中运行即可屏蔽操作系统的差别)。
举例来说,本发明实施例发布的软件可以在Linux/iOS/Android等各个操作系统平台上运行,而不受操作系统的差异限制,从而提升软件的安全级别。
这样,本发明实施例通过对待发布软件中待加密程序代码的每个函数进行单独加密,并根据单独加密所采用的加密算法和密钥来生成白盒解密表,以及将每个被加密的函数的白盒解密表嵌入进程虚拟机中,最后,将软件中未加密的对应代码逻辑(即待加密程序代码)替换为该进程虚拟机和加密后的每个函数密文,然后进行软件的发布。通过多次的单个函数的独立加密,能够避免对字节码中的多个函数进行统一的整体加密所带来的软件被攻击破解的风险,提升软件的攻击难度。并使进程虚拟机中嵌入多个白盒解密表,避免进程虚拟机中多个解密密钥被同时窃取的风险;此外,通过将解密密钥隐藏在白盒解密表中,也同样达到了字节码解密的目的,并通过将多个白盒解密表与进程虚拟机结合的方式,进而进一步提升了进程虚拟机的安全级别。
经过上述图3实施例的应用程序的加密过程之后,参照图4,示出了本发明的一种对图3发布的应用程序的运行方法实施例的步骤流程图,该方法可以应用于客户端或移动终端,具体可以包括如下步骤:
S401,在运行所述应用程序的过程中,若执行到所述应用程序中的字节码密文,则启动应用程序中的进程虚拟机;
其中,移动终端从服务器下载了该图3实施例的方法发布的软件。其中,字节码密文和携带有白盒解密表的进程虚拟机存储在硬盘中。
例如,该软件中的账户登录逻辑为经过加密的字节码密文,那么在运行该软件的过程中,如果执行到账户登录功能(其中,该账户登录功能涉及多个加密函数),则需要执行硬盘中的该字节码密文,因此,需要启动硬盘存储的进程虚拟机,其中,该进程虚拟机预先嵌设在该软件中;
而为了使本发明的应用程序能够跨平台执行,可以将应用程序中预先嵌入的字节码密文载入至已启动的进程虚拟机中执行。
其中,在运行软件时,需要对该进程虚拟机(用于模拟CPU)分配内存。其中,部分内存用于存储进程虚拟机(内存区域A),部分内存用于存储当前解密后的函数明文(内存区域B)。
S402,将所述字节码密文载入启动的进程虚拟机;
其中,所述应用程序中嵌设有进程虚拟机(其嵌设有用于对下述字节码密文解密的白盒解密表)和字节码密文,但是,在启动该进程虚拟机时,该运转的进程虚拟机中是没有字节码密文的,因此,还需要由本发明实施例的方法将硬盘中的该字节码密文载入至启动的该进程虚拟机中(即,系统分配的内存区域A中)进行运行。
其中,所述进程虚拟机嵌设有白盒解密表;
其中,所述字节码密文包括单独加密的一个或多个函数密文,每个函数对应一个白盒解密表。
S403,控制所述进程虚拟机采用当前待执行的目标函数对应的白盒解密表,对所述目标函数的函数密文进行解密,得到当前待执行的目标函数明文;
其中,针对软件执行过程中遇到的字节码密文中的每一个加密函数,可以在内存区域A的虚拟机上利用该加密函数的白盒解密表,对该加密函数进行解密,从而得到解密后的一个加密函数。
具体而言,进程虚拟机在解密字节码时,在内存区域A的虚拟机上每解密一个当前执行的函数,就可以得到一个函数明文(也是字节码形式的机器指令)。
其中,在一个示例中,可以使用图2实施例中提到的映射关系,例如数据表来查找到当前待执行的目标函数对应的白盒解密表进行解密。
S404,为所述当前待执行的目标函数明文分配内存;
其中,进程虚拟机(模拟CPU)可以对函数明文(即当前待执行的目标函数明文)分配内存,即将上述内存区域B中的部分或全部来分配给当前待执行的目标函数明文,以运行该目标函数明文;
其中,在一个实施例中,在执行S404时,可以根据当前待执行的目标函数明文的函数逻辑,分配多个寄存器以运行所述目标函数明文。
其中,进程虚拟机可以根据当前待执行的目标函数明文的函数逻辑,来从内存区域B中(例如10个寄存器中)分配一定数量的寄存器来运行该目标函数明文。
例如该目标函数为图5B所示的x=c*5(这里将运算结果以x示意),则寄存器1用于存储被乘数(这里的c),寄存器2用于存储乘数(这里的5),寄存器3用于标识乘法运算、寄存器4存储计算结果。
这样,本发明实施例通过将每个函数的逻辑关系存储到各个寄存器,窃取者虽然能够看到各个寄存器中存储的机器指令(即字节码),但是难以直观准确的判断各个寄存器所存储的数据所属的代码逻辑,例如只能存储寄存器1中看到c的机器指令,从寄存器2中看到5的机器指令……但是很难快速的分析出各个寄存器之间的逻辑关系,且每解密一个函数,每个寄存器所代表的代码逻辑又是灵活变换的,更增加了窃取者对各个寄存器中的数据的逻辑关系,从而难以分析出每个函数所表达的代码逻辑,进而难以分析出整个逻辑功能(包括多个函数)的代码逻辑。
S405,控制所述进程虚拟机运行所述内存中的所述目标函数明文;
其中,可以控制进程虚拟机来运行内存区域B中例如各个寄存器所构成的目标函数逻辑。
S406,当所述目标函数明文运行结束时,清除所述内存中的所述目标函数明文。
其中,当一个函数,例如上述x=c*5运行结束后,就可以将内存区域B中的目标函数逻辑清除。
然后,在软件运行过程中,又执行到例如图5B所示的另一个被加密的函数,例如b/2,则继续进行如c*5加密函数的解密处理和运行处理,这样,当执行一个重要的已加密的逻辑功能时,每次都只解密并执行该逻辑功能中的一个加密函数时。相比于图1和图2方法实施例中对某个逻辑功能的全部字节码进行整体加密和整体解密的过程,本发明实施例的方法在内存中缓存的代码逻辑(只是一个简单的函数)较短,使得各个被加密的函数之间的逻辑特征不明显,那么即便攻击者肉眼看到例如内存区域B中的一小段一小段的代码逻辑,但是也很难拼凑在一起,因为,一个逻辑功能本身就包括很多函数,而每个函数又都包括很多较短的代码,而这些函数又都是以机器指令的方式短时间的存储在内存中,使得攻击者很难分析出每一小段代码和其他一小段代码之间的逻辑关系,从而提升了攻击者对该逻辑功能的明文中的各个小段代码的拼凑难度,很难得到该逻辑功能的整体明文,以及其中所包括的各个小段明文之间的逻辑关系。
并且,在本发明实施例的上述过程中,进程虚拟机在自己的内存中解密当前执行的函数,得到机器指令后,将机器指令中的每个指令分散性的存储至各个寄存器中,然后,进程虚拟机(模拟CPU)得到各个机器指令后,对寄存器中的机器指令进行执行,在对解密的函数执行结束之后,内存(即上述寄存器)中的各个机器指令自动删除。显然,一个逻辑功能中的单个函数的代码量要远远少于该逻辑功能的全部代码量,而每次内存中仅存储一个解密后的函数的字节码,进程虚拟机也每次执行一个函数,在执行结束后,内存中的该函数的字节码自动清除。那么运行单个函数的时间显然要远远短于整个逻辑功能的全部代码的运行时间,因此,每个函数的字节码在内存中的存储时间都非常短,给予窃取者从内存中分析出所存储的机器指令为重要功能的函数的难度非常大,进一步提升了窃取者破解软件的重要功能的全部字节码的难度。
以账户登录逻辑功能为例进行说明,该功能涉及诸如获取登录信息、校验每项登录信息、对每项登录信息进行正则匹配,判断密码是否为空、判断密码长度是否满足要求等等几十个函数,而每个函数中又包括一个或多个子函数,那么本发明实施例的方法对该逻辑功能中的每个函数(包括子函数)密文分别在内存中进行解密,那么对于攻击者来说,通过人工的跟踪内存中临时存储的解密后的每个函数(字节码中的每个函数在内存的停留时间较传统技术的方案变的非常短),并将它们完整正确的拼凑在一起难度相当的大,从而极大的加大了窃取者对软件中部分重要逻辑的识别难度和破解难度,并造成攻击者难以一次性窃取应用程序中涉及重要逻辑的字节码,且即便多次窃取该重要逻辑中的一小段代码,也很难进行完整正确的拼凑出准确的该原始的重要逻辑的字节码,确保了软件的运行安全。
这样,本发明实施例通过对待加密程序代码中的每个函数分别使用各自的白盒解密表进行单独解密,使得内存中存储的明文数据的数据量较少,不易被攻击者识别到该明文数据属于重要逻辑的字节码;并且,根据代码执行进度来单次解密当前待执行的函数密文,并将解密后的函数明文存储至内存中,待函数明文执行结束后就将函数明文从内存中清除,而单个函数的执行时间长度远短于整个重要逻辑的全部字节码的执行时间长度,从而使得内存中函数的明文数据的存储时间较短,使攻击者难以在较短的时间内识别并分析出内存中的数据是否为重要逻辑的字节码。最终,使得在程序运行时,加大了攻击者对应用程序中涉及重要逻辑的字节码的识别难度,以及一次性完整窃取的难度。
此外,本发明实施例通过将字节码传统加密方案中使用密钥的解密算法替换为白盒解密表,并将多个被加密函数的白盒解密表与进程虚拟机相结合,从而避免了进程虚拟机中直接保存一个或多个解密密钥所带来了解密密钥被窃取,进而导致字节码密文被破解的问题,提升了进程虚拟机所指向的敏感字节码的安全级别,避免了进程虚拟机中敏感字节码被破解并窃取的风险。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
与上述本发明实施例所提供的方法相对应,参照图7,示出了本发明一种应用程序的运行装置实施例的结构框图,具体可以包括如下模块:
载入模块51,用于在运行所述应用程序的过程中,若执行到所述应用程序中的字节码密文,则将所述字节码密文载入至启动的进程虚拟机,其中,所述进程虚拟机嵌设在所述应用程序中,所述进程虚拟机嵌设有白盒解密表;
解密模块52,用于控制所述进程虚拟机根据所述白盒解密表对所述字节码密文进行解密,得到字节码明文;
控制模块53,用于控制所述进程虚拟机执行所述字节码明文。
可选地,所述装置还包括:
确定模块,用于确定待发布的应用程序中待加密程序代码;
加密模块,用于采用预设加密算法和预设密钥对所述待加密程序代码进行加密,得到字节码密文;
生成模块,用于根据所述预设加密算法和所述预设密钥生成白盒解密表;
嵌入模块,用于将所述白盒解密表嵌入进程虚拟机;
发布模块,用于将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述白盒解密表的所述进程虚拟机,并发布所述应用程序。
可选地,所述装置还包括:
配置模块,用于针对所述待加密程序代码中的每个函数,配置预设加密算法和预设密钥;
所述加密模块包括:
加密子模块,用于根据所述预设加密算法和所述预设密钥对所述待加密程序代码中的对应函数进行单独加密,得到字节码密文,其中,所述字节码密文包括单独加密的一个或多个函数密文,每个函数密文对应一个预设加密算法和一个预设密钥;
所述生成模块包括:
生成子模块,用于根据所述每个函数对应的预设加密算法和预设密钥,生成每个函数的白盒解密表;
所述嵌入模块包括:
嵌入子模块,用于将所述每个函数的白盒解密表嵌入进程虚拟机;
所述发布模块包括:
发布子模块,用于将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述每个函数的白盒解密表的所述进程虚拟机,并发布所述应用程序。
可选地,所述字节码密文包括单独加密的一个或多个函数密文,每个函数对应一个白盒解密表;
所述解密模块52包括:
解密子模块,用于控制所述进程虚拟机采用当前待执行的目标函数对应的白盒解密表,对所述目标函数的函数密文进行解密,得到当前待执行的目标函数明文;
所述装置还包括:
分配模块,用于在所述控制模块控制所述进程虚拟机执行所述字节码明文之前,为所述当前待执行的目标函数明文分配内存;
所述控制模块53包括:
控制子模块,用于控制所述进程虚拟机运行所述内存中的所述目标函数明文;
所述装置还包括:
清除模块,用于在所述控制模块控制所述进程虚拟机执行所述字节码明文之后,当所述目标函数明文运行结束时,清除所述内存中的所述目标函数明文。
可选地,所述分配模块包括:
分配子模块,用于根据当前待执行的目标函数明文的函数逻辑,分配多个寄存器以运行所述目标函数明文。
可选地,所述确定模块包括:
确定子模块,用于确定待发布的应用程序中待加密代码;
分析子模块,用于对所述待加密代码作词法和语法分析,得到抽象语法树;
编译子模块,用于将所述抽象语法树编译成字节码,得到待加密字节码。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种应用程序运行方法和一种应用程序运行装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (12)

1.一种应用程序的运行方法,其特征在于,包括:
在运行所述应用程序的过程中,若执行到所述应用程序中的字节码密文,则将所述字节码密文载入至启动的进程虚拟机,其中,所述进程虚拟机嵌设在所述应用程序中,所述进程虚拟机嵌设有白盒解密表;
控制所述进程虚拟机根据所述白盒解密表对所述字节码密文进行解密,得到字节码明文;
控制所述进程虚拟机执行所述字节码明文。
2.根据权利要求1所述的方法,其特征在于,所述运行所述应用程序之前,所述方法还包括:
确定待发布的应用程序中待加密程序代码;
采用预设加密算法和预设密钥对所述待加密程序代码进行加密,得到字节码密文;
根据所述预设加密算法和所述预设密钥生成白盒解密表;
将所述白盒解密表嵌入进程虚拟机;
将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述白盒解密表的所述进程虚拟机,并发布所述应用程序。
3.根据权利要求2所述的方法,其特征在于,
所述采用预设加密算法和预设密钥对所述待加密程序代码进行加密,得到字节码密文之前,所述方法还包括:
针对所述待加密程序代码中的每个函数,配置预设加密算法和预设密钥;
所述采用预设加密算法和预设密钥对所述待加密程序代码进行加密,得到字节码密文,包括:
根据所述预设加密算法和所述预设密钥对所述待加密程序代码中的对应函数进行单独加密,得到字节码密文,其中,所述字节码密文包括单独加密的一个或多个函数密文,每个函数密文对应一个预设加密算法和一个预设密钥;
所述根据所述预设加密算法和所述预设密钥生成白盒解密表,包括:
根据所述每个函数对应的预设加密算法和预设密钥,生成每个函数的白盒解密表;
所述将所述白盒解密表嵌入进程虚拟机,包括:
将所述每个函数的白盒解密表嵌入进程虚拟机;
所述将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述白盒解密表的所述进程虚拟机,并发布所述应用程序,包括:
将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述每个函数的白盒解密表的所述进程虚拟机,并发布所述应用程序。
4.根据权利要求1所述的方法,其特征在于,所述字节码密文包括单独加密的一个或多个函数密文,每个函数对应一个白盒解密表;
所述控制所述进程虚拟机根据所述白盒解密表对所述字节码密文进行解密,得到字节码明文,包括:
控制所述进程虚拟机采用当前待执行的目标函数对应的白盒解密表,对所述目标函数的函数密文进行解密,得到当前待执行的目标函数明文;
所述控制所述进程虚拟机执行所述字节码明文之前,所述方法还包括:
为所述当前待执行的目标函数明文分配内存;
所述控制所述进程虚拟机执行所述字节码明文,包括:
控制所述进程虚拟机运行所述内存中的所述目标函数明文;
所述控制所述进程虚拟机执行所述字节码明文之后,所述方法还包括:
当所述目标函数明文运行结束时,清除所述内存中的所述目标函数明文。
5.根据权利要求4所述的方法,其特征在于,所述为所述当前待执行的目标函数明文分配内存,包括:
根据当前待执行的目标函数明文的函数逻辑,分配多个寄存器以运行所述目标函数明文。
6.根据权利要求2所述的方法,其特征在于,所述确定待发布的应用程序中待加密程序代码,包括:
确定待发布的应用程序中待加密代码;
对所述待加密代码作词法和语法分析,得到抽象语法树;
将所述抽象语法树编译成字节码,得到待加密字节码。
7.一种应用程序的运行装置,其特征在于,包括:
载入模块,用于在运行所述应用程序的过程中,若执行到所述应用程序中的字节码密文,则将所述字节码密文载入至启动的进程虚拟机,其中,所述进程虚拟机嵌设在所述应用程序中,所述进程虚拟机嵌设有白盒解密表;
解密模块,用于控制所述进程虚拟机根据所述白盒解密表对所述字节码密文进行解密,得到字节码明文;
控制模块,用于控制所述进程虚拟机执行所述字节码明文。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
确定模块,用于确定待发布的应用程序中待加密程序代码;
加密模块,用于采用预设加密算法和预设密钥对所述待加密程序代码进行加密,得到字节码密文;
生成模块,用于根据所述预设加密算法和所述预设密钥生成白盒解密表;
嵌入模块,用于将所述白盒解密表嵌入进程虚拟机;
发布模块,用于将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述白盒解密表的所述进程虚拟机,并发布所述应用程序。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
配置模块,用于针对所述待加密程序代码中的每个函数,配置预设加密算法和预设密钥;
所述加密模块包括:
加密子模块,用于根据所述预设加密算法和所述预设密钥对所述待加密程序代码中的对应函数进行单独加密,得到字节码密文,其中,所述字节码密文包括单独加密的一个或多个函数密文,每个函数密文对应一个预设加密算法和一个预设密钥;
所述生成模块包括:
生成子模块,用于根据所述每个函数对应的预设加密算法和预设密钥,生成每个函数的白盒解密表;
所述嵌入模块包括:
嵌入子模块,用于将所述每个函数的白盒解密表嵌入进程虚拟机;
所述发布模块包括:
发布子模块,用于将所述待发布的应用程序中所述待加密程序代码替换为所述字节码密文和嵌设有所述每个函数的白盒解密表的所述进程虚拟机,并发布所述应用程序。
10.根据权利要求7所述的装置,其特征在于,所述字节码密文包括单独加密的一个或多个函数密文,每个函数对应一个白盒解密表;
所述解密模块包括:
解密子模块,用于控制所述进程虚拟机采用当前待执行的目标函数对应的白盒解密表,对所述目标函数的函数密文进行解密,得到当前待执行的目标函数明文;
所述装置还包括:
分配模块,用于在所述控制模块控制所述进程虚拟机执行所述字节码明文之前,为所述当前待执行的目标函数明文分配内存;
所述控制模块包括:
控制子模块,用于控制所述进程虚拟机运行所述内存中的所述目标函数明文;
所述装置还包括:
清除模块,用于在所述控制模块控制所述进程虚拟机执行所述字节码明文之后,当所述目标函数明文运行结束时,清除所述内存中的所述目标函数明文。
11.根据权利要求10所述的装置,其特征在于,所述分配模块包括:
分配子模块,用于根据当前待执行的目标函数明文的函数逻辑,分配多个寄存器以运行所述目标函数明文。
12.根据权利要求8所述的装置,其特征在于,所述确定模块包括:
确定子模块,用于确定待发布的应用程序中待加密代码;
分析子模块,用于对所述待加密代码作词法和语法分析,得到抽象语法树;
编译子模块,用于将所述抽象语法树编译成字节码,得到待加密字节码。
CN201810392432.XA 2018-04-27 2018-04-27 应用程序的运行方法和装置 Active CN108898008B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810392432.XA CN108898008B (zh) 2018-04-27 2018-04-27 应用程序的运行方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810392432.XA CN108898008B (zh) 2018-04-27 2018-04-27 应用程序的运行方法和装置

Publications (2)

Publication Number Publication Date
CN108898008A true CN108898008A (zh) 2018-11-27
CN108898008B CN108898008B (zh) 2020-07-10

Family

ID=64342446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810392432.XA Active CN108898008B (zh) 2018-04-27 2018-04-27 应用程序的运行方法和装置

Country Status (1)

Country Link
CN (1) CN108898008B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111880800A (zh) * 2020-06-19 2020-11-03 深圳融卡智能科技有限公司 应用下载方法与应用下载系统
CN111934860A (zh) * 2020-08-06 2020-11-13 山东省计算中心(国家超级计算济南中心) 一种用于移动端密钥存储的实现方法和系统
CN112214653A (zh) * 2020-10-29 2021-01-12 Oppo广东移动通信有限公司 字符串识别方法、装置、存储介质及电子设备
CN113342702A (zh) * 2021-08-04 2021-09-03 武汉天喻信息产业股份有限公司 一种应用程序测试方法、装置、设备及可读存储介质
CN114091081A (zh) * 2021-11-29 2022-02-25 北京奇艺世纪科技有限公司 一种字幕文件加密解密方法、系统、存储介质及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1790268A (zh) * 2004-12-14 2006-06-21 艾克斯麦提克方案私人有限公司 通过散列技术的编译时间链接
CN102346834A (zh) * 2011-11-25 2012-02-08 武汉钢铁(集团)公司 Java应用软件加密保护的方法
CN104504309A (zh) * 2015-01-09 2015-04-08 宇龙计算机通信科技(深圳)有限公司 应用程序数据加密的方法及终端
CN104866739A (zh) * 2015-06-04 2015-08-26 上海斐讯数据通信技术有限公司 安卓系统中应用程序加密方法及系统
CN106599627A (zh) * 2016-11-22 2017-04-26 江苏通付盾科技有限公司 基于虚拟机保护应用安全的方法及装置
CN107122632A (zh) * 2017-04-26 2017-09-01 北京洋浦伟业科技发展有限公司 软件安装包的加密方法及装置
US9762385B1 (en) * 2015-07-20 2017-09-12 Trend Micro Incorporated Protection of program code of apps of mobile computing devices

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1790268A (zh) * 2004-12-14 2006-06-21 艾克斯麦提克方案私人有限公司 通过散列技术的编译时间链接
CN102346834A (zh) * 2011-11-25 2012-02-08 武汉钢铁(集团)公司 Java应用软件加密保护的方法
CN104504309A (zh) * 2015-01-09 2015-04-08 宇龙计算机通信科技(深圳)有限公司 应用程序数据加密的方法及终端
CN104866739A (zh) * 2015-06-04 2015-08-26 上海斐讯数据通信技术有限公司 安卓系统中应用程序加密方法及系统
US9762385B1 (en) * 2015-07-20 2017-09-12 Trend Micro Incorporated Protection of program code of apps of mobile computing devices
CN106599627A (zh) * 2016-11-22 2017-04-26 江苏通付盾科技有限公司 基于虚拟机保护应用安全的方法及装置
CN107122632A (zh) * 2017-04-26 2017-09-01 北京洋浦伟业科技发展有限公司 软件安装包的加密方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邹煜: "java类文件混合加密算法的研究与分析", 《中国优秀硕士学位论文全文数据库 信息科技辑(月刊)》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111880800A (zh) * 2020-06-19 2020-11-03 深圳融卡智能科技有限公司 应用下载方法与应用下载系统
CN111880800B (zh) * 2020-06-19 2023-10-31 无锡融卡科技有限公司 应用下载方法与应用下载系统
CN111934860A (zh) * 2020-08-06 2020-11-13 山东省计算中心(国家超级计算济南中心) 一种用于移动端密钥存储的实现方法和系统
CN111934860B (zh) * 2020-08-06 2024-01-05 山东省计算中心(国家超级计算济南中心) 一种用于移动端密钥存储的实现方法和系统
CN112214653A (zh) * 2020-10-29 2021-01-12 Oppo广东移动通信有限公司 字符串识别方法、装置、存储介质及电子设备
CN112214653B (zh) * 2020-10-29 2024-06-18 Oppo广东移动通信有限公司 字符串识别方法、装置、存储介质及电子设备
CN113342702A (zh) * 2021-08-04 2021-09-03 武汉天喻信息产业股份有限公司 一种应用程序测试方法、装置、设备及可读存储介质
CN113342702B (zh) * 2021-08-04 2021-11-16 武汉天喻信息产业股份有限公司 一种应用程序测试方法、装置、设备及可读存储介质
CN114091081A (zh) * 2021-11-29 2022-02-25 北京奇艺世纪科技有限公司 一种字幕文件加密解密方法、系统、存储介质及电子设备

Also Published As

Publication number Publication date
CN108898008B (zh) 2020-07-10

Similar Documents

Publication Publication Date Title
CN108898008A (zh) 应用程序的运行方法和装置
KR101712784B1 (ko) 글로벌 플랫폼 규격을 사용하는 발행자 보안 도메인에 대한 키 관리 시스템 및 방법
CN103701829B (zh) 一种离线解析dpapi加密数据的方法
CN104618096B (zh) 保护密钥授权数据的方法、设备和tpm密钥管理中心
US20170099144A1 (en) Embedded encryption platform comprising an algorithmically flexible multiple parameter encryption system
CN105468940B (zh) 软件保护方法及装置
CN111538977B (zh) 云api密钥的管理、云平台的访问方法、装置及服务器
US11349822B2 (en) Runtime encryption plugin for a key management system
CN110312054B (zh) 图像的加解密方法、及相关装置、存储介质
CN108134673B (zh) 一种生成白盒库文件的方法及装置
CN109547198A (zh) 网络传输视频文件的方法与系统
CN104506504A (zh) 一种无卡终端涉密信息的安全机制及安全装置
CN110062014A (zh) 网络模型的加密、解密方法及系统
CN105847000A (zh) 令牌产生方法以及基于该令牌产生方法的通信系统
CN113572604B (zh) 一种发送密钥的方法、装置、系统及电子设备
CN108804913A (zh) 应用程序的运行方法和装置
CN108111622A (zh) 一种下载白盒库文件的方法、装置及系统
CN107040520A (zh) 一种云计算数据共享系统及方法
CN108183796A (zh) 利用白盒库文件和白盒密钥文件进行加解密的方法及装置
CN103853943A (zh) 程序保护方法及装置
CN117240625B (zh) 一种涉及防篡改的数据处理方法、装置及电子设备
CN109711178B (zh) 一种键值对的存储方法、装置、设备及存储介质
CN113722741A (zh) 数据加密方法及装置、数据解密方法及装置
CN104182691B (zh) 数据保密方法及装置
US11341280B2 (en) Executing entity-specific cryptographic code in a cryptographic coprocessor

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