CN109388919A - 一种安卓art虚拟机中动态加载加密后插件的解决方法 - Google Patents

一种安卓art虚拟机中动态加载加密后插件的解决方法 Download PDF

Info

Publication number
CN109388919A
CN109388919A CN201710680509.9A CN201710680509A CN109388919A CN 109388919 A CN109388919 A CN 109388919A CN 201710680509 A CN201710680509 A CN 201710680509A CN 109388919 A CN109388919 A CN 109388919A
Authority
CN
China
Prior art keywords
file
dex
dex file
dexpathlist
plug
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
Application number
CN201710680509.9A
Other languages
English (en)
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.)
Bluedon Information Security Technologies Co Ltd
Original Assignee
Bluedon Information Security Technologies 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 Bluedon Information Security Technologies Co Ltd filed Critical Bluedon Information Security Technologies Co Ltd
Priority to CN201710680509.9A priority Critical patent/CN109388919A/zh
Publication of CN109388919A publication Critical patent/CN109388919A/zh
Pending legal-status Critical Current

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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

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

Abstract

本发明公开了一种安卓ART虚拟机中动态加载加密后插件的解决方法,该发明采用了反射调用Java文件中makePathElements来加载插件,并且动态使用加密后的Dex文件替换APK中的原文件的方案,达到保护代码、实现简单及适配性强的目的。

Description

一种安卓ART虚拟机中动态加载加密后插件的解决方法
技术领域
本发明涉及一种互联网通信技术领域,特别涉及一种安卓ART虚拟机中动态加载加密后插件的解决方法。
背景技术
在Android4.4之后,开始出现了新的Android运行环境ART(Android runtime),用来替代之前的Dalvik运行环境,ART的机制与Dalvik不同,在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用,即预编译(AOT,Ahead-Of-Time),免去了Dalvik模式要实时转换代码,这样的话,应用的启动和执行都会变得更加快速。
Dalvik虚拟机中直接加载Dex文件的方案已经不适用于Android4.4之后的手机了,所以需要一种新的方法加载Dex文件来运行插件。
发明内容
为克服现有技术的不足,本发明目的在于提供一种能够克服上述问题或者至少能够部分解决上述问题中的加载加密后的Dex文件,防止Dex文件被反编译,克服或者能部分解决上述问题中的直接调用art中DexFile导致的复杂度提高。
本发明采用了反射调用Java文件中makePathElements来加载插件,并且动态使用加密后的Dex文件替换APK中的原文件的方案,从而实现保护代码、实现简单及适配性强的目的。
本发明的方法如下:
1.调用安卓art环境下的DexPathList,加载插件的apk文件,获得apk文件中的资源文件,加载对应的Dex文件;优选的,如上所述的apk文件,其中的Dex文件为一个加密后的Dex文件。
2.反射调用安卓art环境下DexPathList中的makePathElements来将待加载的Dex文件转换为dexElements对象;优选的,如上所述的待加载的Dex文件,所调用的为解密后的一个File文件;优选的,如上所述的动态加载Dex的方法,所述上层dexElements对象为应用程序框架层DexPathList文件dalvik/system/DexPathList中的Element对象;将转换后的dexElement对象通过反射替换掉现有DexPathList对象中的dexElement对象。
本发明中还提供了一种在安卓art环境中动态加载加密后Dex文件的装置,该装置包括;
1.Dex文件加解密模块,用于将加密后的Dex文件进行解密,完成待解密Dex文件的解密,得到解密后可以动态加载的Dex文件;优选的,如上述所说的解密模块应当放置于主程序中,并且通过加固或混淆等手段进行保护,防止解密方法被反编译等手段获得。
2.系统加载Dex文件模块,用于创建一个DexClassLoader对象,加载指定路径中APK文件中的Dex文件;优选的,如上所述的系统加载Dex文件模块,所述加载的APK文件中的Dex文件,是经过加密替换的Dex文件;优选的,如上所述的系统加载Dex文件模块,所述DexClassLoader对象为应用程序框架层DexClassLoader文件对dalvik/system/DexClassLoader。
3.系统加载函数反射模块,用于反射调用art环境下的DexPathList文件中的makePathElements函数,得到转换后的Dex文件。用于反射获得art环境下的DexPathList文件中的dexElements对象并替换为转换后的Dex文件。
本发明本发明技术方案带来的有益效果:
本发明可以将插件APK中的Dex文件进行加密操作,可以有效防止被反编译,导致代码泄漏,工作成果被窃取。并且只需要调用安卓上层,即JAVA层即可完成操作,不需要像现有技术一样操作底层,即本地框架层、Native层,可以有效避免增加复杂度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的一种安卓ART虚拟机中动态加载加密后插件的流程示意图;
图2为本发明的整体流程示意图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
结合附图1实施流程步骤如下:
步骤1:通过下载等方式,获取加密后的Dex文件并且存储在手机存储器中;
步骤2:通过下载的等方式,获取插件的APK文件并且存储在手机存储器中;
步骤3:使用Dex文件加密模块,对已经在手机存储器中的Dex文件进行解密,获得对应的File文件对象,等待步骤4开始加载之后,进行动态替换;
步骤4:调用系统本身的DexClassLoader,对步骤2中获取的插件APK进行加载,并且获得DexClassLoader对象,其中APK文件中的Dex文件是加密后的文件;
步骤5:将步骤3中解密后的Dex文件获得File文件对象,然后反射调用DexPathList中的makePathElements函数,获得Elements对象;
步骤6:将步骤4中获得的DexClassLoader对象中的DexPathList对象中的dexElements对象替换为步骤5中获得的对象;
步骤7:正常加载插件。
结合附图2实施流程步骤如下:
步骤1:正常开发一个安卓工程;
步骤2:将步骤1中开发的安卓工程导出为一个APK文件;
步骤3:从APK中得到Dex文件进行加密,并且将加密后的Dex文件替换掉APK中的Dex文件;
步骤4:将步骤3中得到的加密后的Dex文件单独保存;
步骤5:主程序分别获得步骤2中得到的APK以及步骤4中保存的加密后APK,其中步骤2中的APK经过步骤3替换了Dex文件;
步骤6:正常运行插件。
以上对本发明实施例所提供的一种安卓ART虚拟机中动态加载加密后插件的解决方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (5)

1.一种安卓ART虚拟机中动态加载加密后插件的解决方法,该发明实现单导系统的文件单向传输功能,支持外端从外网文件服务器上下载(拉)文件,同时内端支持把文件上传(推)到内网文件服务器。
2.根据权利要求1所述的一种安卓ART虚拟机中动态加载加密后插件的解决方法,其特征在于:反射调用安卓art环境下操作系统的Dex文件加载类DexPathList中的makePathElements解析Dex文件,获取Elements对象;新建一个Dex类加载器DexClassLoader对象,读取Dex文件加密后的APK文件;反射替换Dex类加载器DexClassLoader对象中的DexPathList中的dexElements,替换为解析Dex文件后产生的Elements对象。
3.根据权利要求1所述的一种安卓ART虚拟机中动态加载加密后插件的解决方法,其特征在于:所述调用安卓art环境下的Dex文件加载类DexPathList中的makePathElements,解析Dex文件,包括:所述Dex文件加载类DexPathList为应用程序框架层类dalvik/system/DexPathList;将待加载的Dex文件,作为参数反射调用DexPathList中的makePathElements函数。
4.根据权利要求1中所述的APK文件,其特征在于APK文件中Dex文件为加密后的文件。
5.根据权利要求1中所述的Dex文件,其特征在于Dex文件为加密后的文件。
CN201710680509.9A 2017-08-10 2017-08-10 一种安卓art虚拟机中动态加载加密后插件的解决方法 Pending CN109388919A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710680509.9A CN109388919A (zh) 2017-08-10 2017-08-10 一种安卓art虚拟机中动态加载加密后插件的解决方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710680509.9A CN109388919A (zh) 2017-08-10 2017-08-10 一种安卓art虚拟机中动态加载加密后插件的解决方法

Publications (1)

Publication Number Publication Date
CN109388919A true CN109388919A (zh) 2019-02-26

Family

ID=65414142

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710680509.9A Pending CN109388919A (zh) 2017-08-10 2017-08-10 一种安卓art虚拟机中动态加载加密后插件的解决方法

Country Status (1)

Country Link
CN (1) CN109388919A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970563A (zh) * 2014-04-15 2014-08-06 四川长虹电器股份有限公司 动态加载安卓类的方法
CN104731625A (zh) * 2015-03-27 2015-06-24 北京奇虎科技有限公司 一种加载插件的方法、装置和移动终端
CN106648755A (zh) * 2016-11-29 2017-05-10 北京奇虎科技有限公司 一种在安卓art环境中动态加载dex的方法及装置
CN106951280A (zh) * 2017-02-28 2017-07-14 努比亚技术有限公司 移动终端及应用修复方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970563A (zh) * 2014-04-15 2014-08-06 四川长虹电器股份有限公司 动态加载安卓类的方法
CN104731625A (zh) * 2015-03-27 2015-06-24 北京奇虎科技有限公司 一种加载插件的方法、装置和移动终端
CN106648755A (zh) * 2016-11-29 2017-05-10 北京奇虎科技有限公司 一种在安卓art环境中动态加载dex的方法及装置
CN106951280A (zh) * 2017-02-28 2017-07-14 努比亚技术有限公司 移动终端及应用修复方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
佚名: ""Android插件化与热修复(六)-微信Tinker原理分析", 《百度,HTTPS://WWW.JIANSHU.COM/P/2216554D3291,20170723》 *

Similar Documents

Publication Publication Date Title
CN102043932B (zh) 一种防止Java程序被反编译的方法
US20210073015A1 (en) Java native interface and windows universal app hooking
US20200151384A1 (en) System and method for provisioning a mobile software application to a mobile device
CN110134378B (zh) 应用程序创建方法及装置、计算机设备及存储介质
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
US8090959B2 (en) Method and apparatus for protecting .net programs
WO2016078130A1 (zh) 一种防逆向apk文件的动态加载方法
CN106295255B (zh) 应用程序的加固方法和装置
US20180129794A1 (en) Method for Protecting Dex File from Decompilation in Android System
US20210004696A1 (en) System and method for automatic secure delivery of model
CN104063225B (zh) 锁屏主题开发方法及装置
CN104463002A (zh) 一种加固apk的方法和装置以及apk加固客户端和服务器
CN107508846B (zh) 应用客户端的更新方法和系统及终端设备
CN109840400B (zh) 提供安全性的设备和方法以及针对通用中间语言执行安全性的设备和方法
US20150113502A1 (en) Method and system for encapsulation of application
CN103150161B (zh) 基于MapReduce计算模型的任务封装方法及装置
CN105701406A (zh) 安卓平台运行传统支付应用的方法
CN117313046A (zh) 一种代码加固方法、代码加载方法、设备及介质
KR20110114754A (ko) 에스케이브이엠 및 위피자바 응용프로그램을 안드로이드 응용프로그램으로 변환하는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
CN109388919A (zh) 一种安卓art虚拟机中动态加载加密后插件的解决方法
JP2013045277A (ja) プログラム難読化方法およびリモートデバッグシステム
US11550883B2 (en) Code protection
CN110427319B (zh) 基于ios的轻量级热修复方法及装置、存储介质
CN111460464B (zh) 数据加解密方法、装置、电子设备及计算机存储介质
CN106648770A (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