CN104537281A - 用于移动应用保护的系统和方法 - Google Patents
用于移动应用保护的系统和方法 Download PDFInfo
- Publication number
- CN104537281A CN104537281A CN201410350516.9A CN201410350516A CN104537281A CN 104537281 A CN104537281 A CN 104537281A CN 201410350516 A CN201410350516 A CN 201410350516A CN 104537281 A CN104537281 A CN 104537281A
- Authority
- CN
- China
- Prior art keywords
- code
- encryption
- application
- wrapper
- application bag
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000012795 verification Methods 0.000 claims description 9
- 238000012856 packing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephone Function (AREA)
- Stored Programmes (AREA)
Abstract
提供了系统和方法以用于移动应用保护。接收与应用相关联的可执行代码。至少部分地基于该可执行代码来生成加密的代码和包装器代码。该加密的代码能够至少部分地基于该包装器代码而被解密。为移动设备生成包括该加密的代码和该包装器代码的应用包。
Description
相关申请的交叉引用
本公开内容要求对2013年7月17日提交的美国临时专利申请No.61/847,203的优先权以及来自该美国临时专利申请的权益,它的全文通过引用并入本文。
技术领域
本专利文件中所描述的技术一般性地涉及移动设备,并且更特别地涉及移动应用保护。
背景技术
移动设备(例如,智能电话)经常能够支持各种各样的应用(即,应用程序)来丰富用户体验。虚拟机(VM)通常对应于计算机的一种软件实施方式,该软件实施方式在任意平台上以相同方式提供用于执行一个或多个应用的独立编程环境,并且抽象去除底层的硬件或操作系统(OS)的细节。使用在移动设备中的VM可以包括:例如,Java虚拟机(JVM)、安卓的Dalvik VM、由苹果的iPhone操作系统(iOS)所使用的低级虚拟机(LLVM)、等等。VM可以执行到字节代码的编译以克服具体硬件或OS的限制,在应用的实际操作期间解译字节代码,以及执行该应用。为移动设备所开发的应用经常分布在应用包中,应用包包含用以运行应用的元素,诸如程序代码、资源、资产(assets)、证书和清单。例如,对于安卓智能电话,应用包对应于其文件名以“.apk”结尾的应用包文件(APK文件)。
发明内容
根据本文所描述的教导,提供了系统和方法以用于移动应用保护。接收与应用相关联的可执行代码。至少部分地基于该可执行代码来生成加密的代码和包装器(wrapper)代码。该加密的代码能够至少部分地基于该包装器代码而被解密。为移动设备生成包括该加密的代码和该包装器代码的应用包。
在一个实施例中,用于保护用于移动设备的应用的系统包括:加密模块和包生成器。该加密模块被配置为:接收与应用相关联的可执行代码,并且至少部分地基于该可执行代码来生成加密的代码和包装器代码。该加密的代码能够至少部分地基于该包装器代码而被解密。该包生成器被配置为:为移动设备生成包括该加密的代码和该包装器代码的应用包。
在另一个实施例中,用于保护用于移动设备的应用的系统包括:一个或多个数据处理器和机器可读存储介质。该存储介质以用于命令这些数据处理器以执行某些操作的指令来编码。接收与应用相关联的可执行代码。至少部分地基于该可执行代码来生成加密的代码和包装器代码。该加密的代码能够至少部分地基于该包装器代码而被解密。为移动设备生成包括该加密的代码和该包装器代码的应用包。
附图说明
图1描绘了一个示例图,该示例图示出了用于移动设备的应用的示例打包流程。
图2描绘了一个示例图,该示例图示出了应用包的部分加密。
图3描绘了一个示例图,该示例图示出了用于移动设备的应用的示例打包流程。
图4描绘了一个示例图,该示例图示出了用于移动设备的应用的另一个示例打包流程。
图5描绘了一个示例图,该示例图示出了应用包的签名校验。
图6描绘了一个示例图,该示例图示出了应用包的散列值校验。
图7描绘了用于保护用于移动设备的应用的示例流程图。
具体实施方式
图1描绘了一个示例图,该示例图示出了针对用于移动设备的应用的示例打包流程。如图1中所示出的,应用102被编译并且打包到应用包104中,应用包104然后被分发给一个或多个移动设备106。具体地说,应用102使用安卓软件开发套件(SDK)以Java语言而写成。在编译和打包期间,Java代码首先被编译为采用Java字节代码格式的类文件。接着,这些类文件被转换为采用Dalvik字节代码格式的DEX文件,其中Dalvik字节代码与用于安卓的Dalvik VM的本机格式相对应。应用包(例如,APK文件)104包括清单文件(例如,AndroidManifest.xml)、可执行代码(例如,classes.dex文件)、资源(例如,resources.arsc文件)、未编译的资源、等等。
应用包104能够经常容易被反编译和篡改。恶意软件可能被插入到应用包104中。当被篡改的应用包104在移动设备106上被运行时,恶意操作可能在后台执行而引起对移动设备106的危害。因此,保护应用包104免于被篡改是重要的。
图2描绘了一个示例图,该示例图示出了应用包的部分加密。如图2中所示出的,原始应用包202被部分地加密以生成新的应用包204。具体地说,与用于移动设备的应用相关联的可执行代码206(例如,classes.dex文件)被转换为两个文件-加密的代码210(例如,加密的DEX文件)和包装器代码208(例如,classes.dex’文件)。
在一些实施例中,包装器代码208不包括用于执行应用的功能的基本逻辑代码。替代地,基本逻辑代码被加密并且成为加密的代码210的一部分。包装器代码208被用来辅助对加密的代码210的解密以及调用基本逻辑代码。本机库代码212被用来支持包装器代码208(例如,classes.dex’文件)加载加密的代码210(例如,通过本机安全类加载器)以及解密目标移动设备的存储器中的加密的代码210。
在某些实施例中,新的应用包204包括META-INF目录214,META-INF目录214可以包含清单文件(例如,“MANIFEST.MF”)、证书(例如,“CERT.RSA”)、以及资源的列表(例如,“CERT.SF”)。另外,新的应用包204包括附加清单文件216(例如,AndroidManifest.xml),附加清单文件216描述了名称、版本、访问权限、以及用于该应用的参考库文件。新的应用包204可以包括其他文件218,诸如包含对于处理器的软件层是特定的经编译的代码的“lib”目录、包含经预编译的资源的“resources.arsc”文件、包含未被编译到“resources.arsc”文件中的资源的“res”目录、以及包含应用资产的“资产”目录。
图3描绘了一个示例图,该示例图示出了针对用于移动设备的应用的示例打包流程。如图3中所示出的,应用302被编译并且打包到原始应用包304中,并且原始应用包304被部分地加密以生成新的应用包310,新的应用包310然后被分发给一个或多个移动设备312。加密组件308执行对原始应用包304的部分加密,并且包生成器306生成新的应用包310。例如,原始应用包304和新的应用包310分别包括与原始应用包202和新的应用包204相同的组件。
具体地说,加密组件308将可执行代码314(例如,classes.dex文件)转换为加密的代码316(例如,加密的DEX文件)和包装器代码318(例如,classes.dex’文件)。包装器代码318不包括用于执行应用308的功能的基本逻辑代码,并且基本逻辑代码包含在加密的代码316中。本机库代码320被用来支持包装器代码318加载加密的代码316以及解密移动设备312的存储器中的加密的代码316。例如,移动设备312包括移动设备仿真器。
如图4中所示出的,可以为新的应用包310生成安全信息以用于安全验证。特别地,签名或者(多个)散列值可以被生成并且存储在新的应用包310中,以用于在运行时间阶段的自校验。
图5描绘了一个示例图,该示例图示出了应用包的签名校验。如图5中所示出的,加密的代码316内的自校验逻辑代码502被用来在运行时间阶段(例如,在移动设备上)校验新的应用包310的签名。具体地说,自校验逻辑代码502包括与原始签名相关联的信息。调用自校验逻辑代码502(例如,用于应用302的运行时间进程)来验证新的应用包310的签名。如果自校验逻辑代码502确定新的应用包310的签名不是真实的,则签名校验失败,这指示了新的应用包310被篡改,并且可以采取某些措施作为响应。例如,生成通知以发出警报,和/或终止与应用302相关联的运行时间进程。
图6描绘了一个示例图,该示例图示出了应用包的散列值校验。如图6所示出的,加密的代码316内的自校验逻辑代码502被用来在运行时间阶段(例如,在移动设备上)校验与新的应用包310的一个或多个文件(例如,代码)有关的一个或多个散列值。具体地说,自校验逻辑代码502包括与一个或多个散列值相关联的信息,该一个或多个散列值与新的应用包310的一个或多个文件(例如,代码)有关。这些散列值借助于通过任何合适的散列函数或散列算法来映射文件(例如,代码)中的数据而生成。例如,对应于应用包310内的不同文件来生成多个散列值。可以为应用包310生成单个散列值。对文件(例如,代码)的数据的任何改变/修改能够通过比较有关的散列值来确定。
调用自校验逻辑代码502(例如,用于应用302的运行时间进程)来验证新的应用包310的一个或多个文件(例如,代码)的散列值。如果自校验逻辑代码502确定这些散列值不是真实的,则散列值校验失败,这指示了新的应用包310被篡改,并且可以采取某些措施作为响应。例如,生成通知以发出警报,和/或终止与应用302相关联的运行时间进程。
图7描绘了用于保护用于移动设备的应用的示例流程图。如图7中所示出的,在702处,接收与应用相关联的可执行代码。在704处,至少部分地基于该可执行代码来生成加密的代码和包装器代码。该加密的代码能够至少部分地基于该包装器代码而被解密。在706处,为移动设备生成包括该加密的代码和该包装器代码的应用包。
本书面描述使用示例来公开本发明,包括最佳模式,并且还使得本领域的技术人员能够做出并且使用本发明。本发明的可专利范围可以包括本领域的技术人员想到的其他示例。然而,其他的实施方式也可以被使用,诸如被配置为执行本文所描述的方法和系统的固件或者适当设计的硬件。例如,本文所描述的系统和方法可以实施在独立的处理引擎中,作为协处理器,或者作为硬件加速器。在又另一个示例中,本文所描述的系统和方法可以被提供在包括计算机存储机构(例如,CD-ROM、磁盘、RAM、闪存、计算机的硬件驱动器、等等)的许多不同类型的计算机可读介质上,这些计算机存储机构包含指令(例如,软件),这些指令用于由一个或多个处理器执行,以执行方法的操作并且实施本文所描述的系统。
Claims (20)
1.一种用于保护用于移动设备的应用的方法,所述方法包括:
接收与应用相关联的可执行代码;
至少部分地基于所述可执行代码来生成加密的代码和包装器代码;
其中所述加密的代码能够至少部分地基于所述包装器代码而被解密;以及
为移动设备生成包括所述加密的代码和所述包装器代码的应用包。
2.根据权利要求1所述的方法,其中所述加密的代码包括用于执行所述应用的功能的基本逻辑代码。
3.根据权利要求1所述的方法,其中所述包装器代码被用来调用基本代码。
4.根据权利要求1所述的方法,其中所述应用包对应于与安卓操作系统相关联的APK文件。
5.根据权利要求1所述的方法,其中所述应用包进一步包括用于加载所述加密的代码的本机库代码。
6.根据权利要求1所述的方法,其中所述加密的代码包括用于所述应用的安全验证的自测试逻辑代码。
7.根据权利要求6所述的方法,其中:
所述应用包进一步包括签名;并且
所述自测试逻辑代码能够验证所述签名。
8.根据权利要求6所述的方法,其中:
所述应用包进一步包括散列值;并且
所述自测试逻辑代码能够验证所述散列值。
9.根据权利要求6所述的方法,其中响应于所述安全验证的失败而生成通知。
10.根据权利要求6所述的方法,其中响应于所述安全验证的失败而终止与所述应用相关联的运行时间进程。
11.一种用于保护用于移动设备的应用的系统,所述系统包括:
加密模块,被配置为接收与应用相关联的可执行代码,并且至少部分地基于所述可执行代码来生成加密的代码和包装器代码;
其中所述加密的代码能够至少部分地基于所述包装器代码而被解密;以及
包生成器,被配置为,为移动设备生成包括所述加密的代码和所述包装器代码的应用包。
12.根据权利要求11所述的系统,其中所述加密的代码包括用于执行所述应用的功能的基本逻辑代码。
13.根据权利要求12所述的系统,其中所述包装器代码被用来调用基本代码。
14.根据权利要求11所述的系统,其中所述应用包对应于与安卓操作系统相关联的APK文件。
15.根据权利要求11所述的系统,其中所述应用包进一步包括用于加载所述加密的代码的本机库代码。
16.根据权利要求11所述的系统,其中所述加密的代码包括用于所述应用的安全验证的自测试逻辑代码。
17.根据权利要求16所述的系统,其中:
所述应用包进一步包括签名;并且
所述自测试逻辑代码能够验证所述签名。
18.根据权利要求16所述的系统,其中:
所述应用包进一步包括文件的散列值;并且
所述自测试逻辑代码能够验证所述散列值。
19.根据权利要求16所述的系统,其中:
当所述安全验证失败时,生成通知或者终止与所述应用相关联的运行时间进程。
20.一种用于保护用于移动设备的应用的系统,所述系统包括:
一个或多个数据处理器;以及
机器可读存储介质,所述机器可读存储介质以指令来编码,所述指令用于命令所述数据处理器来执行操作,所述操作包括:
接收与应用相关联的可执行代码;
至少部分地基于所述可执行代码来生成加密的代码和包装器代码;
其中所述加密的代码能够至少部分地基于所述包装器代码而被解密;以及
为移动设备生成包括所述加密的代码和所述包装器代码的应用包。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361847203P | 2013-07-17 | 2013-07-17 | |
US61/847,203 | 2013-07-17 | ||
US14/333,737 | 2014-07-17 | ||
US14/333,737 US20150026483A1 (en) | 2013-07-17 | 2014-07-17 | Systems and Methods for Mobile Application Protection |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104537281A true CN104537281A (zh) | 2015-04-22 |
Family
ID=52344597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410350516.9A Pending CN104537281A (zh) | 2013-07-17 | 2014-07-17 | 用于移动应用保护的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20150026483A1 (zh) |
CN (1) | CN104537281A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150035249A (ko) * | 2013-09-27 | 2015-04-06 | 삼성전자주식회사 | 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치 |
KR101518420B1 (ko) * | 2014-11-11 | 2015-05-07 | 주식회사 에스이웍스 | 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법 |
US10104123B2 (en) * | 2015-09-23 | 2018-10-16 | Ca, Inc. | Fetching a policy definition library from a policy server at mobile device runtime of an application package to control access to mobile device resources |
US10257189B2 (en) | 2016-05-24 | 2019-04-09 | Microsoft Technology Licensing, Llc | Using hardware based secure isolated region to prevent piracy and cheating on electronic devices |
US11356853B1 (en) * | 2020-09-22 | 2022-06-07 | Trend Micro Incorporated | Detection of malicious mobile apps |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007097439A1 (ja) * | 2006-02-21 | 2007-08-30 | Nec Corporation | プログラムの実行制御システム、実行制御方法、実行制御用コンピュータプログラム |
US8347386B2 (en) * | 2008-10-21 | 2013-01-01 | Lookout, Inc. | System and method for server-coupled malware prevention |
US8347389B2 (en) * | 2008-12-10 | 2013-01-01 | Quick Heal Technologies (P) Ltd. | System for protecting devices against virus attacks |
US8397274B2 (en) * | 2010-07-13 | 2013-03-12 | Research In Motion Limited | Method for authenticating device capabilities to a verified third party |
US8589673B2 (en) * | 2011-01-12 | 2013-11-19 | Virtru Corporation | Methods and systems for distributing cryptographic data to authenticated recipients |
WO2013065915A1 (ko) * | 2011-11-04 | 2013-05-10 | 에스케이플래닛 주식회사 | 보안 영역과 비보안 영역 사이의 보안 연동 방법 및 보안 어플리케이션 다운로드 관리방법, 관리서버, 단말기, 및 이를 적용한 관리시스템 |
WO2013096527A1 (en) * | 2011-12-22 | 2013-06-27 | Abbvie Inc. | Application security framework |
US20140157355A1 (en) * | 2012-01-06 | 2014-06-05 | Optio Labs, LLC | Systems and methods for enhancing mobile device security with a processor trusted zone |
US8892876B1 (en) * | 2012-04-20 | 2014-11-18 | Trend Micro Incorporated | Secured application package files for mobile computing devices |
-
2014
- 2014-07-17 US US14/333,737 patent/US20150026483A1/en not_active Abandoned
- 2014-07-17 CN CN201410350516.9A patent/CN104537281A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20150026483A1 (en) | 2015-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101471589B1 (ko) | 공통중간언어 기반 프로그램을 위한 보안 제공 방법 | |
You et al. | Taintman: An art-compatible dynamic taint analysis framework on unmodified and non-rooted android devices | |
JP6083097B2 (ja) | ハードウェア保護アプリケーションのシステム・サービス要求相互作用を容易化する方法 | |
US9460281B2 (en) | Method of securing non-native code | |
US20170024230A1 (en) | Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine | |
US20190114401A1 (en) | On device structure layout randomization for binary code to enhance security through increased entropy | |
US20160275019A1 (en) | Method and apparatus for protecting dynamic libraries | |
WO2015058620A1 (en) | Method and apparatus for generating installation package corresponding to an application and executing application | |
CN103914637B (zh) | 一种安卓平台的可执行程序加密方法 | |
WO2016078130A1 (zh) | 一种防逆向apk文件的动态加载方法 | |
EP2854070A1 (en) | Method and apparatus of creating application package, method and apparatus of executing application package, and recording medium storing application package | |
JP2019502197A (ja) | ランタイム生成コードにおける悪意のあるコードの検出のためのシステムおよび方法 | |
CN104537281A (zh) | 用于移动应用保护的系统和方法 | |
Lim et al. | An Android Application Protection Scheme against Dynamic Reverse Engineering Attacks. | |
El-Harake et al. | Blocking advertisements on android devices using monitoring techniques | |
US8972745B2 (en) | Secure data handling in a computer system | |
US20150347745A1 (en) | Method for extracting executable code of application using memory dump | |
CN107092517B (zh) | 一种sdk工具包的生成方法及装置 | |
CN112134905A (zh) | 基于安卓系统的签名方法、装置以及设备 | |
KR102173151B1 (ko) | 원본코드 자동추출장치 및 원본코드 자동추출방법 | |
Wan et al. | Defending application cache integrity of android runtime | |
Li et al. | Towards a generic framework for automating extensive analysis of android applications | |
Gaidis et al. | SysXCHG: Refining Privilege with Adaptive System Call Filters | |
CN112395563A (zh) | 软件产品加密的方法、装置、存储介质及处理器 | |
Busch et al. | A cloud-based compilation and hardening platform for android apps |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150422 |