CN104318135A - 一种基于可信执行环境的Java代码安全动态载入方法 - Google Patents

一种基于可信执行环境的Java代码安全动态载入方法 Download PDF

Info

Publication number
CN104318135A
CN104318135A CN201410585071.2A CN201410585071A CN104318135A CN 104318135 A CN104318135 A CN 104318135A CN 201410585071 A CN201410585071 A CN 201410585071A CN 104318135 A CN104318135 A CN 104318135A
Authority
CN
China
Prior art keywords
file
code
dex file
encryption
execution environment
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
CN201410585071.2A
Other languages
English (en)
Other versions
CN104318135B (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.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
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 Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN201410585071.2A priority Critical patent/CN104318135B/zh
Publication of CN104318135A publication Critical patent/CN104318135A/zh
Application granted granted Critical
Publication of CN104318135B publication Critical patent/CN104318135B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

一种基于可信执行环境的Java代码安全动态载入方法,在所述移动智能设备中预置有可信执行环境,所述可信执行环境用于将可信区域内存划分为多个任务共存空间,支持多个独立的安全应用程序运行。本发明在保证安卓程序正常运行的前提下,通过从服务端动态下载加密过的核心代码并将加密过的核心功能代码在可信执行环境中解密,使破解者很难利用当前主流的安卓应用程序分析技术和破解工具对受保护的核心功能代码分析篡改,保护核心功能代码的安全性。

Description

一种基于可信执行环境的Java代码安全动态载入方法
技术领域
本发明涉及一种基于可信执行环境的Java代码安全动态载入方法,通过可信执行环境实现对安卓系统上应用程序核心代码片断的保护,该方法可应用于运行可信执行环境的安卓智能终端。
背景技术
可信执行环境是与普通执行环境共同存在智能终端中的运行环境,通过硬件的支撑,实现与普通执行环境相隔离的运行机制。可信执行环境有自身的运行空间,比普通执行环境的安全级别更高。只有授权的安全软件才能在可信执行环境中执行,同时它也保护了安全软件的资源和数据的机密性。相比普通执行环境,由于其隔离和权限控制等保护机制,可信执行环境能够更好的保护数据和资源的安全性。可信执行环境是安全移动生态系统重要组成部分,为移动设备涉及到所有方面(如设备硬件、普通执行环境等)提供安全保护,可满足参与者的安全需求。
安卓系统上运行的应用程序对于每个开发者来说,都是一种亟需保护的知识产权。目前,对安卓应用程序源代码的保护是使用各种混淆、加密的方法进行加密混淆保护,而许多破解者可通过各种日益成熟地混淆、加密破解工具反编译分析程序代码,实现对应用程序核心功能业务的篡改,甚至注入恶意代码。同时,由于安卓应用程序文件一般都存在于客户端中,使得破解者几乎没有成本地取得程序的原始文件,为破解者窃取并非法篡改安卓应用程序的核心功能代码提供了便利。因此,安卓应用程序的核心功能代码采用混淆、加密这种静态保护方式并保存于用户客户端中的方法,使攻击者可轻易地通过破解工具得到程序代码逻辑,甚至对源代码进行盗版、破解、篡改、重新分发,严重威胁使用安卓应用程序用户的安全。
针对上述问题,可通过代码动态载入技术可减少上述的威胁,即在源代码执行过程中,动态的从服务器下载、解密所需的核心功能代码并执行,执行完毕后从内存中动态擦除该功能源代码,增加了攻击者对源代码破解分析的难度。但是,目前采用动态载入代码技术的应用程序是在普通执行环境中运行,普通执行环境自身安全系数并不高,攻击者仍可通过对静态代码的分析可得到动态载入代码程序的载入逻辑、解密逻辑,最终得到窃取核心功能源代码逻辑。因此,目前安卓系统上的应用程序核心代码保护面临着严峻的技术挑战。
发明内容
本发明解决技术问题:克服现有技术的不足,提供一种基于可信执行环境的Java代码安全动态载入的方法,在保证安卓程序正常运行的前提下,通过从服务端动态下载加密过的核心代码并将加密过的核心功能代码在可信执行环境中解密,使破解者很难利用当前主流的安卓应用程序分析技术和破解工具对受保护的核心功能代码分析篡改,保护核心功能代码的安全性。
下面简要介绍本方案的基本思想,即本发明是在吸取已有解决方案的优点的基础之上,提出了自己的设计思想,具体来说,本发明技术方案包括下列几个方面:
方面一:安卓应用程序发布时,核心功能代码片段被存储为DEX文件格式,并在服务器端使用可信执行环境中代码解密应用对应的公钥对DEX文件预先加密,加密后DEX被存储在服务器端,该方法保证了核心功能代码的安全性。其中加密后DEX文件结构为核心代码安全动态载入的实现奠定了规范基础,下面结合附图2对加密后的DEX文件(称为Encryption DEX file)结构进行说明。
原始的DEX文件由文件头和文件体组成,加密后的DEX文件由新添加的文件头、被可信执行环境中代码解密应用对应的公钥加密的原始DEX文件头、原始DEX文件体、附加项这四部分组成。下面对这四部分进行具体描述:
(1)新添加DEX文件头中,依次有4个字节的原始头部长度、4个字节的原始头部偏移量、4个字节的DEX文件体长度、4个字节的DEX文件体偏移量以及32字节的基于SHA-256哈希算法的校验和。其中4个字节的原始头部长度表明使用可信执行环境中代码解密应用对应公钥对原始头部进行加密后头部的长度;4个字节的原始头部偏移量表明在添加新的文件头后,原始文件头相对于文件开始位置的偏移量,用于快速准确定位加密后原始文件头的位置;4个字节的DEX文件体长度表明原始DEX文件体数据的长度,由于在加密DEX文件时并没有对DEX文件体数据进行任何处理,所以DEX文件体长度在加密前后保持不变;4个字节的文件体偏移量表明在添加新的文件头后,DEX文件体相对于文件开始位置的偏移量,用于快速准确定位加密后DEX文件体的位置;32个字节的校验和保证加密后DEX文件的完整性,采用SHA-256算法对除去校验和字段之外的全部文件内容进行计算得到校验和,文件内容的任何改动将会导致校验和校验失败,快速检测到文件被篡改或损坏。
(2)被可信执行环境中代码解密应用对应的公钥加密的原始DEX文件头,来保护核心功能代码的机密性。破解者因为无法获取原始DEX文件头数据,使得DEX文件体内容不能被解析并执行,达到保护核心功能代码的作用。当合法安卓应用程序执行该核心功能代码时,调用可信执行环境中代码解密应用,该代码解密应用利用对应的私钥对加密后DEX文件头进行解密,得到原始的文件头数据,结合文件体数据获得原始的DEX文件内容。
(3)附加项在加密DEX文件体数据后面,依次是4个字节的附加数据数量、附加数据偏移表、附加数据。4个字节的附加数据数量,记录附加项区域内所包含的附加数据项数量;附件数据偏移表,表的每一行内容是4个字节的附件数据偏移量,附件数据偏移量记录的是每条附加数据相对附加项区域开始位置的偏移量;附加数据,根据附加数据偏移表的偏移量逐条记录着附加数据内容,附加数据内容可根据DEX文件中核心功能代码的功能需要而定义,比如核心功能代码用于解析某数字资源,则可在附加数据中包含该数字资源的授权文件。本方法推荐附加数据区域中的第一条附加数据为核心功能代码文件运行所需要的XML code drama数据。
该文件结构定义了如何将原始核心功能代码的DEX文件转化为Encryption DEXfile,在保证核心功能代码被顺利解密执行的前提下,保护了核心功能代码的机密性。即使攻击者得到Encryption DEX file也无法恢复出核心功能代码的运行逻辑。EncryptionDEX file文件结构的提出为后续核心功能代码的加解密与执行操作提供了格式规范。
方面二:以DEX文件为单位的动态载入技术,往往会涉及到多个类的构造、初始化以及相关功能代码的运行。通过分析安卓应用的运行,将动态载入的代码分解为顺序运行的复合指令,普通执行环境中主体代理程序通过解密请求得到原始DEX文件后,通过解析基于XML的代码片段描述语言(称为XML code drama),可加载并运行核心功能代码。下面结合附图3对XML code drama具体描述。
XML code drama定义规则由复合元素和简单元素组成,复合元素可包括下一级复合元素或者简单元素的单位,简单元素则是不能再包括其他元素的最小单位。复合元素主要包含sequence、con、ui、run、close、class、meth。简单元素主要包含methparamtype、methdetail、conparamtype、condetail。各个元素的作用详细描述见附图3。通过这些元素的组合定义出XML code drama文件内容,结合附图4给出一个符合该语法规则的描述表实例。从图4中可以看出,该描述表描述了一个功能的实现:
<sequence></sequence>标签表示该区块内容代表一个独立的功能单元;
<con></con>区块的内容表示该功能单元的构造过程;
<class classname=”com.test.apprun.TestApp”id=”a”conparamnum=”1”></class>表示构造过程创建TestApp对象,该对象实例id是a,该对象构造函数的参数个数为1;
<conparamtype>Class#</conparamtype>表示该对象构造函数的参数是Class;
<condetail>null#</condetail>表示该对象构造函数的传入参数为null;
后续的两个<meth>标签区块表明在初始化过程中,还需调用setActivity以及setHandler方法。以调用setActivity为例:
<meth methname=”setActivity”methparamnum=”1”></meth>表明该方法名字为SetActivity,方法接受的参数个数为1;
<methparamtype>android.app.Activity#</methparamtype>表示该函数的参数类型为android.app.Activity;
<methdetail>x#</methdetail>表明传入参数为x,x是特指符号,表示主体代理对象;
<ui>onCreate#</ui><run>onCreate#<run>表明创建UI和运行都由onCreate来完成;
<close>onGoBack</close>表明当程序退出时,调用onGoBack即可。
上述描述是对单sequence的加密代码DEX文件,根据实际情况可以对多个sequence进行类似的描述与解析。
该XML code drama文件的引入,明确了对动态载入代码的控制流程,将传统的DEX文件的数据和控制流程分离出来,并结合解密后的Encryption DEX file完成对核心功能代码的执行,实现了强大而灵活的核心功能代码控制功能。
方面三:主体代理程序运行在普通执行环境,负责从服务器动态下载经过加密处理的Encryption DEX file以及所需要的XML code drama文件,将Encryption DEX file发送至可信执行环境中代码解密应用完成解密,得到可执行核心功能代码片段,并根据XML code drama的描述运行该代码片段。该方法即通过对核心功能代码片段进行加密处理,攻击者难以通过静态分析的方法得到核心功能代码的运行逻辑。将核心功能代码片段的代码解密应用运行在可信执行环境中,攻击者无法获取代码解密应用,即无法通过分析手段得到对应的解密逻辑,通过将代码解密应用转移至可信执行环境中保护了核心功能代码运行逻辑和解密代码逻辑,保证了核心功能代码片段的安全。
本发明通过将加密后Java代码(即Encryption DEX file文件)在可信执行环境中解密,可信执行环境提供了安全隔离的运行机制,普通执行环境将无法读写可信执行环境中的内容,保护核心功能代码的安全性。即加密后的Java核心功能代码传入可信执行环境中,并在可信执行环境中利用代码解密应用私钥解密,其他程序将无法获得Java核心功能代码的内容,最后将解密后的Java核心功能代码返回到普通执行环境中主体代理程序并执行。这种方法,在保证安卓应用程序功能正常运行的情况下,保护了核心功能代码不被其他软件通过静态分析获得并篡改。与现有技术相比,具有以下优点:(1)将部分关键代码隐藏在服务器端,有效抵抗对安卓应用程序的静态与动态分析;(2)方便与DRM认证授权技术结合,有效控制安卓应用程序操作行为;(3)由于安卓应用程序的核心功能代码从服务器动态下载并执行,使得应用程序的运行更加灵活;(4)可信执行环境负责认证和解密代码,具有较高的安全级别。
附图说明
图1为本发明方法实现流程图;
图2为Encryption DEX file的文件结构;
图3为XML code drama属性描述;
图4为符合XML code drama规则实例。
具体实施方式
为使本发明的目的、优点以及技术方案更加清楚明白,以下通过具体实施,并结合附图,对本发明进一步详细说明。
如图1所示,本发明的基于可信执行环境的Java代码安全动态载入方法具体实现步骤如下:
一、基于可信执行环境的Java代码安全动态载入初始化方法
基于可信执行环境的Java代码安全动态载入初始化工作,主要包括在四个方面的任务,具体描述如下:
(1)安卓智能终端中运行着普通执行环境和可信执行环境,普通执行环境预装有主体代理程序,可信执行环境预装有和主体代理程序对应的代码解密应用;
(2)服务器生成XML code drama文件,XML code drama是基于XML的代码片段描述语言,通过分析安卓应用的运行,将动态载入代码分解为顺序运行的复合指令,具体的XML code drama元素描述如图3所示。该定义规则由复合元素和简单元素组成,复合元素是可以包括下一级复合元素或者简单元素的单位,简单元素则是不能再包括其他元素的最小单位。复合元素主要包括sequence、con、ui、run、close、class、meth。简单元素主要包括methparamtype、methdetail、conparamtype、condetail,通过这些元素组合出XML code drama文件内容,结合附图4给出一个符合该语法规则的描述表实例。从图4中可以看出,该描述表描述了一个功能的实现:从图4中可以看出,该描述表描述了一个功能的实现:
<sequence></sequence>标签表示该区块内容代表一个独立的功能单元;
<con></con>区块的内容表示该功能单元的构造过程;
<class classname=”com.test.apprun.TestApp”id=”a”conparamnum=”1”></class>表示构造过程创建TestApp对象,该对象实例id是a,该对象构造函数的参数个数为1;
<conparamtype>Class#</conparamtype>表示该对象构造函数的参数是Class;
<condetail>null#</condetail>表示该对象构造函数的传入参数为null;
后续的两个<meth>标签区块表明在初始化过程中,还需调用setActivity以及setHandler方法。以调用setActivity为例:
<meth methname=”setActivity”methparamnum=”1”></meth>表明该方法名字为SetActivity,方法接受的参数个数为1;
<methparamtype>android.app.Activity#</methparamtype>表示该函数的参数类型为android.app.Activity;
<methdetail>x#</methdetail>表明传入参数为x,x是特指符号,表示主体代理对象;
<ui>onCreate#</ui><run>onCreate#<run>表明创建UI和运行都由onCreate来完成;
<close>onGoBack</close>表明当程序退出时,调用onGoBack即可。服务器将依据该语法规则通过分析原始DEX文件而创建对应的XML code drama文件;
(3)XML code drama可依据配置在计算Encryption DEX file校验和之前被填充到Encryption DEX file文件附加数据中,并根据Encryption DEX file文件结构填充附加数据数量和附加数据偏移量;
(4)针对要保护的核心功能代码片段,服务器端利用代码解密应用所对应的公钥对该代码片段进行加密操作,经过处理得到Encryption DEX file。即服务器端首先对原始的DEX文件头进行处理,利用可信执行环境中对应代码解密应用对应公钥对原始头部加密,并保留原始的DEX文件体数据;然后构建Encryption DEX file文件头,计算加密后原始DEX文件头数据量长度值,将该数值填入头部长度字段中,同时将文件头的偏移量填入头部偏移量字段中,根据Encryption DEX file文件头以及加密后文件头的长度计算得到文件体的位置,将文件体的长度和重新计算后的偏移量分别填入DEX文件体长度和DEX文件体偏移量字段中;对于Encryption DEX file的附加数据,依据核心功能代码实现的功能采用自定义方式,若核心功能代码是用于解析某数字资源,则可在附加信息中包含该数字资源的授权文件,服务器端将根据附加数据项目的数量、大小和内容分别填充附加数据内对应的字段;最后,服务器将利用SHA-256算法计算除去校验和字段之外的全部文件内容的校验和,并将校验和内容填充至Encryption DEX file的校验和字段内,来保证加密后DEX文件的完整性。
二、基于可信执行环境的Java代码安全动态载入运行方法
(1)当安卓智能终端运行应用程序时,若运行核心功能代码片段,则利用普通执行环境中主体代理程序向服务器端发出Encryption DEX file下载请求,服务器接收到下载请求后,将要下载核心功能代码片段对应的XML code drama和Encryption DEX file,发送给主体代理程序;
(2)主体代理程序向可信执行环境中代码解密应用发出Encryption DEX file文件解密请求,代码解密应用验证主体代理程序的签名,若主体代理程序签名合法,则主体代理程序发送Encryption DEX file至共享内存,并通知代码解密应用Encryption DEX file在共享内存中的位置,代码解密应用通过内存共享的方式得到Encryption DEX file文件;若主体代理程序签名不合法,则过程终止;
(3)代码解密应用将获得Encryption DEX file进行基于SHA-256算法的校验和计算,并将结果与Encryption DEX file文件中偏移量16字节位置的校验和进行比对,如果相等的话,则说明文件没有被破坏和篡改,进行下一步操作;如果不相等,则校验不通过,过程终止并通知主体代理程序过程失败;
(4)首先,代码解密应用根据Encryption DEX file头部结构中头部偏移量和头部长度得到被加密的DEX文件头部数据,并利用自己的私钥对其进行解密,得到原始的DEX文件头部数据;其次,代码解密应用通过Encryption DEX file文件头部结构中的DEX文件体偏移量和DEX文件体长度得到DEX文件体数据;最后,代码解密应用将这两部分数据重新组合得到原始的代码片段对应DEX文件,将原始DEX文件拷贝至共享内存中,并将该文件在共享内存中的地址返回给主体代理程序;
(5)主体代理程序得到原始代码片段对应的DEX文件在共享内存中的地址后,通过内存共享的方式,取得原始代码片段对应的DEX文件,解析XML code drama文件内容得到代码运行逻辑流程,并结合DEX文件运行核心功能代码片段,获得执行结果。即通过分析XML code drama内复合元素和简单元素的组合,判断该核心功能代码片段所实现的功能,需要的参数,调用的方法以及最后返回的结果,通过整合这些信息得到代码的运行逻辑流程并结合DEX文件内代码内容执行该代码,获得执行结果。注:某些情况下,需从Encryption DEX file文件的附加项区域得到自定义数据,比如若核心功能代码是用于解析某数字资源,则可在附加项中得到该数字资源的授权文件;
(6)主体代理程序获得最终结果后,销毁获取的XML code drama文件和EncryptionDEX file文件,并将结果返回给安卓应用程序,安卓应用程序继续执行后续业务处理过程。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。

Claims (3)

1.一种基于可信执行环境的Java代码安全动态载入方法,其特征在于:在所述移动智能设备中预置有可信执行环境,所述可信执行环境用于将可信区域内存划分为多个任务共存空间,支持多个独立的安全应用程序运行;所述方法实现步骤如下:
(1)核心功能代码片段的处理和流程初始化
在安卓终端中运行着普通执行环境和可信执行环境,普通执行环境预装有主体代理程序,可信执行环境运行着与主体代理程序对应的代码解密应用;
针对需要保护的代码片段,服务器端利用代码解密应用所对应的公钥对该代码片段进行加密得到Encryption DEX file,并生成代码片断运行相关信息的XML code drama文件,最后将得到的Encryption DEX file和XML code drama文件保存;所述EncryptionDEX file是指经过加密处理后的需要保护的核心功能代码片段的DEX文件,包括;所述XML code drama是指程序剧本,主体代理通过解析该文件,运行被代码解密应用解密的核心功能代码;
(2)运行过程
当安卓终端运行应用程序时,若执行核心功能代码片段,则通过主体代理程序向服务器发送核心功能代码片段文件请求,服务器将核心功能代码片段对应的XML codedrama和Encryption DEX file发送到该安卓终端;然后主体代理程序向可信执行环境中代码解密应用发出解密请求,代码解密应用验证主体代理程序的签名,若主体代理程序的签名合法,则主体代理程序发送Encryption DEX file至共享内存,并通知代码解密应用Encryption DEX file在共享内存中的位置,代码解密应用通过内存共享的方式得到Encryption DEX file文件;
在解密过程中,代码解密应用首先会对Encryption DEX file进行基于SHA-256算法的校验和计算,并将结果与Encryption DEX file文件中偏移量16字节位置处的校验和进行比对,如果相等的话,则说明Encryption DEX file文件没有被破坏和篡改;如果校验不通过,则过程终止并通知主体代理程序过程失败;
校验通过后,代码解密应用根据Encryption DEX file头部结构中的头部偏移量和头部长度字段得到被加密的DEX文件头部数据,并利用自己的私钥对其进行解密,得到原始的DEX文件头部数据;通过Encryption DEX file头部结构中的DEX文件体偏移量和DEX文件体长度字段得到DEX文件体数据,代码解密应用将这两部分数据重新组合得到原始的代码片段对应DEX文件,将原始DEX文件拷贝至共享内存中,并将该文件在共享内存中的地址返回给主体代理程序;
主体代理程序通过内存共享的方式,得到原始代码片段对应的DEX文件,解析XMLcode drama文件内容得到代码运行逻辑流程,并结合DEX文件运行核心功能代码片段,获得执行结果;
主体代理程序获得最终结果后,销毁获取的XML code drama文件和Encryption DEXfile文件,并将结果返回给安卓应用程序,安卓应用程序继续执行后续业务处理过程。
2.根据权利要求1所述的基于可信执行环境的Java代码安全动态载入方法,其特征在于:所述步骤(1)的XML code drama文件的结构,即将动态载入的代码分解为顺序运行的复合指令,给出一套基于XML的代码片段描述语言;普通执行环境中主体代理程序通过解密请求得到原始DEX文件后,通过解析基于XML的代码片段描述语言(称为XML code drama),可加载并运行核心功能代码;该定义规则由复合元素和简单元素组成,复合元素是可以包括下一级复合元素或者简单元素的单位,简单元素则是不能再包括其他元素的最小单位;复合元素主要包括sequence、con、ui、run、close、class、meth。简单元素主要包括methparamtype、methdetail、conparamtype、condetail,通过这些元素组合出XML code drama文件内容,定义出一个功能的实现。
3.根据权利要求1所述的基于可信执行环境的Java代码安全动态载入方法,其特征在于:所述步骤(1)中,Encryption DEX file格式,即经过加密处理后的需要保护的核心功能代码片段的DEX文件,加密后的DEX文件由新添加的文件头、被可信执行环境中代码解密应用对应的公钥加密的原始DEX文件头、原始DEX文件体、附加项这四部分组成;在新的文件头中,依次有4个字节的原始头部长度、4个字节的原始头部偏移量、4个字节的DEX文件体长度、4个字节的DEX文件体偏移量以及32字节的基于SHA-256哈希算法的校验和;其中4个字节的原始头部长度表明在利用可信执行环境中对应代码解密应用的公钥对原始头部进行加密后原始头部的长度;4个字节的原始头部偏移量表明在添加新的文件头后,原始文件头相对于文件开始位置的偏移量,用于快速准确定位原始文件头的位置;4个字节的DEX文件体长度表明原始DEX文件体数据的长度,由于在加密后的DEX文件中并没有对DEX文件体数据进行任何处理,所以DEX文件体长度在加密前后是不会变化的;4个字节的文件体偏移量表明在添加新的文件头后,DEX文件体相对于文件开始位置的偏移量,用于快速准确定位DEX文件体的位置;32个字节的校验和将保证加密后DEX文件的完整性,利用SHA-256算法对除去校验和字段之外的全部文件内容进行计算得到校验和,文件内容的任何改动将会导致校验和校验失败,快速检测到文件被篡改或损坏。
CN201410585071.2A 2014-10-27 2014-10-27 一种基于可信执行环境的Java代码安全动态载入方法 Expired - Fee Related CN104318135B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410585071.2A CN104318135B (zh) 2014-10-27 2014-10-27 一种基于可信执行环境的Java代码安全动态载入方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410585071.2A CN104318135B (zh) 2014-10-27 2014-10-27 一种基于可信执行环境的Java代码安全动态载入方法

Publications (2)

Publication Number Publication Date
CN104318135A true CN104318135A (zh) 2015-01-28
CN104318135B CN104318135B (zh) 2017-04-05

Family

ID=52373366

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410585071.2A Expired - Fee Related CN104318135B (zh) 2014-10-27 2014-10-27 一种基于可信执行环境的Java代码安全动态载入方法

Country Status (1)

Country Link
CN (1) CN104318135B (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105955829A (zh) * 2016-04-20 2016-09-21 青岛海信宽带多媒体技术有限公司 一种指令的处理方法、装置及终端
WO2016206297A1 (zh) * 2015-06-25 2016-12-29 上海斐讯数据通信技术有限公司 Android系统中保护dex文件不被反编译的方法
CN106815301A (zh) * 2016-12-12 2017-06-09 北京奇虎科技有限公司 一种dex文件的存储方法和装置
CN107944233A (zh) * 2017-12-11 2018-04-20 北京深思数盾科技股份有限公司 一种可执行文件的保护方法和装置
CN109040133A (zh) * 2018-09-27 2018-12-18 上海点融信息科技有限责任公司 在区块链网络中安装智能合约的方法、装置及存储介质
CN109062582A (zh) * 2018-07-23 2018-12-21 北京云测信息技术有限公司 一种应用安装包的加密方法及装置
CN109952751A (zh) * 2016-11-15 2019-06-28 华为技术有限公司 一种安全的处理器芯片及终端设备
CN110264197A (zh) * 2019-05-20 2019-09-20 阿里巴巴集团控股有限公司 结合事件函数类型和判断条件的收据存储方法和节点
CN111737659A (zh) * 2020-06-23 2020-10-02 杭州海康威视数字技术股份有限公司 基于tee实现代码加固的方法及装置
CN112528236A (zh) * 2020-12-18 2021-03-19 深圳竹云科技有限公司 基于虚拟机的应用软件授权方法
CN112866412A (zh) * 2020-08-31 2021-05-28 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
TWI730630B (zh) * 2019-07-16 2021-06-11 開曼群島商創新先進技術有限公司 Tee系統中的多執行緒資料傳輸方法和裝置
CN113934461A (zh) * 2021-09-26 2022-01-14 厦门亿联网络技术股份有限公司 一种基于dex的安卓系统格式化方法及其装置
US11709675B2 (en) 2020-10-30 2023-07-25 Apple Inc. Software verification of dynamically generated code

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997027536A1 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. Instruction folding for a stack-based machine
CN1438576A (zh) * 2003-03-21 2003-08-27 清华大学 基于操作栈记录的恢复的Java线程迁移的方法
CN103186380A (zh) * 2011-12-31 2013-07-03 北大方正集团有限公司 Apk的开发方法和装置
CN101697131B (zh) * 2009-11-04 2013-07-03 中兴通讯股份有限公司 一种可重定位文件动态加载的方法及装置
CN103413076A (zh) * 2013-08-27 2013-11-27 北京理工大学 一种Android应用程序分块保护的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997027536A1 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. Instruction folding for a stack-based machine
CN1438576A (zh) * 2003-03-21 2003-08-27 清华大学 基于操作栈记录的恢复的Java线程迁移的方法
CN101697131B (zh) * 2009-11-04 2013-07-03 中兴通讯股份有限公司 一种可重定位文件动态加载的方法及装置
CN103186380A (zh) * 2011-12-31 2013-07-03 北大方正集团有限公司 Apk的开发方法和装置
CN103413076A (zh) * 2013-08-27 2013-11-27 北京理工大学 一种Android应用程序分块保护的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
赵军: "基于Android平台加密算法的研究与实现", 《信息科技辑》 *

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016206297A1 (zh) * 2015-06-25 2016-12-29 上海斐讯数据通信技术有限公司 Android系统中保护dex文件不被反编译的方法
CN105955829A (zh) * 2016-04-20 2016-09-21 青岛海信宽带多媒体技术有限公司 一种指令的处理方法、装置及终端
CN109952751A (zh) * 2016-11-15 2019-06-28 华为技术有限公司 一种安全的处理器芯片及终端设备
US11126753B2 (en) 2016-11-15 2021-09-21 Huawei Technologies Co., Ltd. Secure processor chip and terminal device
CN109952751B (zh) * 2016-11-15 2020-11-17 华为技术有限公司 一种安全的处理器芯片及终端设备
CN106815301A (zh) * 2016-12-12 2017-06-09 北京奇虎科技有限公司 一种dex文件的存储方法和装置
CN107944233A (zh) * 2017-12-11 2018-04-20 北京深思数盾科技股份有限公司 一种可执行文件的保护方法和装置
CN109062582A (zh) * 2018-07-23 2018-12-21 北京云测信息技术有限公司 一种应用安装包的加密方法及装置
CN109040133A (zh) * 2018-09-27 2018-12-18 上海点融信息科技有限责任公司 在区块链网络中安装智能合约的方法、装置及存储介质
CN110264197A (zh) * 2019-05-20 2019-09-20 阿里巴巴集团控股有限公司 结合事件函数类型和判断条件的收据存储方法和节点
CN110264197B (zh) * 2019-05-20 2021-05-18 创新先进技术有限公司 结合事件函数类型和判断条件的收据存储方法和节点
TWI730630B (zh) * 2019-07-16 2021-06-11 開曼群島商創新先進技術有限公司 Tee系統中的多執行緒資料傳輸方法和裝置
CN111737659A (zh) * 2020-06-23 2020-10-02 杭州海康威视数字技术股份有限公司 基于tee实现代码加固的方法及装置
CN112866412A (zh) * 2020-08-31 2021-05-28 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
US11513780B2 (en) 2020-08-31 2022-11-29 Alipay (Hangzhou) Information Technology Co., Ltd. Methods, blockchain nodes and storage media for deploying smart contract
US11709675B2 (en) 2020-10-30 2023-07-25 Apple Inc. Software verification of dynamically generated code
CN112528236A (zh) * 2020-12-18 2021-03-19 深圳竹云科技有限公司 基于虚拟机的应用软件授权方法
CN112528236B (zh) * 2020-12-18 2022-03-11 深圳竹云科技有限公司 基于虚拟机的应用软件授权方法
CN113934461A (zh) * 2021-09-26 2022-01-14 厦门亿联网络技术股份有限公司 一种基于dex的安卓系统格式化方法及其装置
CN113934461B (zh) * 2021-09-26 2023-10-13 厦门亿联网络技术股份有限公司 一种基于dex的安卓系统格式化方法及其装置

Also Published As

Publication number Publication date
CN104318135B (zh) 2017-04-05

Similar Documents

Publication Publication Date Title
CN104318135A (zh) 一种基于可信执行环境的Java代码安全动态载入方法
KR101560131B1 (ko) 데이터를 보호할 때 적용되는 프로그램 가능한 프로세싱 단계들을 정의하기위한 시스템 및 방법
US12050904B2 (en) Secure application distribution systems and methods
EP3804213B1 (en) Shared secret establishment
CN102236757A (zh) 一种适用于Android系统的软件保护方法及系统
KR101284676B1 (ko) 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법
CN101872404B (zh) 一种保护Java软件程序的方法
US8959659B2 (en) Software authorization system and method
WO2015150391A1 (en) Software protection
CN109284585B (zh) 一种脚本加密方法、脚本解密运行方法和相关装置
CN102760219A (zh) 一种Android平台软件保护系统、方法及设备
CN103136458B (zh) 一种Linux操作系统动态库代码保护方法及其装置
CN104680039A (zh) 一种应用程序安装包的数据保护方法及装置
CN104268444A (zh) 一种云OS Java源代码保护方法
CN1863038B (zh) 对终端设备中应用程序实施控制和管理的方法
CN101957903A (zh) 一种保护类文件的方法和装置
US20180067777A1 (en) Application protection method, server, and terminal
CN109740314A (zh) 一种swf混淆加密的方法
CN102289632A (zh) 一种在软件源代码未知情况下对可执行文件进行加密方法
CN107257282B (zh) 一种基于rc4算法的代码全包加密方法
CN114547558B (zh) 授权方法、授权控制方法及装置、设备和介质
CN106326733A (zh) 管理移动终端中应用的方法和装置
CN104657635A (zh) 一种应用处理方法、装置和服务器
KR20080018683A (ko) 실행 프로그램의 변조 방지 방법 및 그 장치
TW201804349A (zh) 隨選碼解密

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170405

Termination date: 20191027

CF01 Termination of patent right due to non-payment of annual fee