CN111625848A - 一种android应用的加固保护方法、装置及系统 - Google Patents

一种android应用的加固保护方法、装置及系统 Download PDF

Info

Publication number
CN111625848A
CN111625848A CN202010368640.3A CN202010368640A CN111625848A CN 111625848 A CN111625848 A CN 111625848A CN 202010368640 A CN202010368640 A CN 202010368640A CN 111625848 A CN111625848 A CN 111625848A
Authority
CN
China
Prior art keywords
file
language
android application
language method
android
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.)
Withdrawn
Application number
CN202010368640.3A
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.)
Zhengzhou Xinda Jiean Information Technology Co Ltd
Original Assignee
Zhengzhou Xinda Jiean Information 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 Zhengzhou Xinda Jiean Information Technology Co Ltd filed Critical Zhengzhou Xinda Jiean Information Technology Co Ltd
Priority to CN202010368640.3A priority Critical patent/CN111625848A/zh
Publication of CN111625848A publication Critical patent/CN111625848A/zh
Withdrawn legal-status Critical Current

Links

Images

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/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/53Decompilation; Disassembly
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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

Landscapes

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

Abstract

本发明提供一种android应用的加固保护方法、装置及系统,所述方法包括:生成加固核心文件,所述加固核心文件包括未提供实现体的第一语言方法以及所述第一语言方法的第二语言标识符;生成加密数据文件,所述加密数据文件包括加密后的第一语言方法的实现体,所述第一语言方法的实现体执行于原始的android虚拟机;将加固核心文件、加密数据文件和解密策略加到反编译后的android应用安装包中,重新编译生成加固后的android应用安装包。所述装置包括第一生成模块、第二生成模块和合成模块。本发明有效阻止了dex文件被逆向泄露的风险。

Description

一种android应用的加固保护方法、装置及系统
技术领域
本发明涉及移动终端应用安全领域,具体涉及一种android应用的加固保护方法、装置及系统。
背景技术
内存Dump是指在程序运行期间将内存中的数据和代码片段等进行“卸出”并保存到另一个存储装置(如本地硬盘)中。目前,已知的通过函数加密保护android应用的加固方法,首先需要先识别出来需要保护的函数,然后对函数进行加密处理后重新生成新的android应用程序,当需要执行加密的函数时需要对所述受保护的函数进行解密,而解密时存在如下几种方法:
1)在原始位置解密并执行受保护的函数,这种方法缺点是用户进行多次操作后可以将dex文件大部分函数还原,这样就可以dump出原始未被加密的dex文件,甚至可以dump出完整的dex文件;
2)在原始位置解密,将原来的加密的函数进行恢复,当函数执行完后再次进行加密。这种方法的缺点:虽然执行完后再次加密,但是在某一时刻仍然在原始dex文件中存在解密后的函数,攻击者仍然可以dump出他们关心的原始函数;另,由于执行每个函数后都要重新加密,会影响应用的执行效率,由于dex文件中存在大量需要重复执行的函数,每执行一次就需要进行解密和加密2个操作,会严重影响应用的响应时间;
3)不在原始位置解密,将解密后的函数存储到随机申请的内存中,并将原始dex文件中标记该函数的地址改为随机申请的内存地址,执行DEX文件时根据该内存地址获取解密后的函数代码指令并执行。这种方法的缺点:虽然不在原始位置解密,但是由于在原始dex文件中仍然存在指向存储解密函数的地址,攻击者可以根据这个地址找到相应的解密函数,然后将dex文件和解密函数同时dump出来,合成后可以恢复原始的dex文件。
也就是说,使用现有技术中的加固方法时,当受保护的android应用安装包APK运行执行中的函数时,dump出来的dex文件或多或少都包含被解密的原始dex数据,导致现有技术中的加固方法无法完全解决android应用安装包面临的安全问题。
发明内容
本发明的目的在于针对现有技术中存在的不足,提供了一种android应用的加固保护方法、装置及系统,当执行解密函数时无需修改dex文件,不会对dex文件做任何改动,即不通过dex文件还原原始函数的数据,也无需修改指向解密函数的地址数据,从而使得攻击者任何时候dump出来的dex文件都没有任何数据被恢复,同时无需执行每个函数后重新加密,避免了影响应用的执行效率。
为达到上述目的,本发明首先提供了一种android应用的加固保护方法,所述方法包括:
生成加固核心文件,所述加固核心文件包括未提供实现体的第一语言方法以及所述第一语言方法的第二语言标识符;
生成加密数据文件,所述加密数据文件包括加密后的第一语言方法的实现体,所述第一语言方法的实现体执行于原始的android虚拟机;
将加固核心文件、加密数据文件和解密策略加到反编译后的android应用安装包中,重新编译生成加固后的android应用安装包。
进一步地,生成加固核心文件的方法为:
获取需要保护的android应用安装包;
反编译上述android应用安装包,获取原始核心文件;
从原始核心文件提取受保护的第一语言方法,所述受保护的第一语言方法包括第一语言方法标识符和第一语言方法实现体;
修改所述受保护的第一语言方法的第一语言方法标识符为第二语言方法标识符, 并删除原始核心文件中的受保护的第一语言方法的实现体,生成加固核心文件。
进一步地,从原始核心文件提取受保护的第一语言方法时,执行:通过分析所述原始核心文件中的类的数据结构来识别需要提取的第一语言方法。
进一步地,所述方法还包括,在删除原始核心文件中的受保护的第一语言方法的实现体之前,还执行:提取所述第一语言方法的实现体并对其源代码加密,生成加密数据文件。
进一步地,生成加密数据文件时,根据预置的加密策略,对第一语言方法的实现体进行加密;具体地,所述加密策略至少包括防二次打包策略、防篡改策略、防反编译策略、反dump策略、字符串加密策略、反调试策略中的一种策略。
进一步地,在重新编译生成加固后的android应用安装包之前,还将加固保护程序加到反编译后的android应用安装包中;
其中,所述加固保护程序在加固后的android应用安装包被安装并运行时,执行:根据受保护的第一语言方法的调用请求,将加固核心文件中的未提供实现体的第一语言方法按照第二语言方法标识符对应的方式进行加载,加载后动态申请内存,接着使用所述解密策略对所述加密数据文件进行解密,获得解密后的第一语言方法的实现体。
进一步地,将加固核心文件、加密数据文件和解密策略添加到反编译后的android应用安装包时,执行:将解密策略添加到APK的lib目录的so文件中,将加密数据文件添加到APK的assert目录中。
进一步地,所述加固核心文件为dex文件,所述第一语言方法为JAVA方法,所述第一语言方法标识符为JAVA标识符,所述第二语言方法标识符为native标识符。
本发明还提供一种android应用的加固保护装置,所述加固保护装置包括第一生成模块、第二生成模块和合成模块:
所述第一生成模块,用于生成加固核心文件,所述加固核心文件包括未提供实现体的第一语言方法以及所述第一语言方法的第二语言标识符;
所述第二生成模块,用于生成加密数据文件,所述加密数据文件包括加密后的第一语言方法的实现体,所述第一语言方法的实现体执行于原始的android虚拟机;
所述合成模块,用于将加固核心文件、加密数据文件和解密策略加到反编译后的android应用安装包中,重新编译生成加固后的android应用安装包。
本发明还提供一种android应用的加固保护系统,所述系统包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述的android应用的加固保护方法的步骤。
本发明的有益效果如下:
1)本发明提供了一种android应用的加固保护方法、装置及系统,由于本发明在对需要保护的android应用安装包进行加固时,是将原始核心文件中第一语言方法的标识符和实现体进行拆分并分别处理的;即使破解者获得了解密后的加密数据文件以及加固核心文件,也无法将加密数据文件及加固核心文件的状态还原至待加密的原始核心文件,也就无法得到完整的原始核心文件;攻击者任何时候dump出来的dex文件都没有任何数据被恢复;所以无需执行每个函数后重新加密,避免了影响android应用程序的执行效率;
本发明解决了使用现有技术中的加固方法时,当受保护的android应用安装包APK运行执行中的函数时,dump出来的dex文件或多或少都包含被解密的原始dex数据的技术问题,使用本方法在任意时刻,内存中加固后的android应用安装包的加密数据文件及加固核心文件一直处于加密状态,不会做任何改变,当攻击者dump出dex文件后没有任何数据被恢复;
2)使用本发明的android应用的加固保护方法对需要保护的android应用安装包进行加固时,未对原始核心文件进行代码混淆或指令替换,因此当执行解密函数时,无需对解密后获得的JAVA方法的实现体进行二次修改,也无需对dex文件做任何改动,即不通过dex文件还原原始函数的数据,提高了android应用程序的执行效率;
3)解密后的JAVA方法实现体所在的内存地址,是在调用本地native函数对应函数方法时动态申请的内存地址,且DEX文件执行加密的函数时也不依赖该内存地址;因此,本发明中不存在修改指向解密函数的地址数据的步骤;加固后的dex文件里面并不存在指向解密后的JAVA方法实现体的内存地址,攻击者无法根据dex文件找到相应的解密函数,进一步增加了获取解密函数的难度;
4)由于每次执行解密函数时,都需要动态申请的内存,并在动态申请的内存中对所述加密数据文件进行解密处理,动态申请的内存是隐蔽的,进一步增加了从内存中获取解密函数的难度。
附图说明
图1为待加固android应用安装包的结构。
图2为一种实施例的加固后的android应用安装包的结构。
图3为另一种实施例的加固后的android应用安装包的结构。
图4为加固应用程序调用加固核心文件中受保护的方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。相反,本发明涵盖任何由权利要求定义的在本发明的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本发明有更好的了解,在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。
一种android应用的加固保护方法,所述方法包括:生成加固核心文件,所述加固核心文件包括未提供实现体的第一语言方法以及所述第一语言方法的第二语言标识符;具体地,所述加固核心文件为dex文件格式,所述第一语言方法为JAVA方法,所述第二语言标识符为native标识符,即在dex文件中将一个JAVA函数实现的方法标识为native方法。由于在定义一个native方法时,暗示其实现体是由非JAVA语言在外部实现,因此在dex文件中并不提供所述方法的实现体,因此攻击者dump出来的dex文件无法获取到关键信息。具体示例如下:
原始的函数代码示例:
public static void a(Context paramContext,int paramInt)
{
Intent localIntent = new Intent(paraContext, AddActivity.class);
localIntent.putExtra(“where”,paramInt);
paramContext.startActivity(localIntent);
}
标识为native方法后的函数代码示例:
public static native void a(Context paramContext,int paramInt);
如上所述,生成加固核心文件后,生成加密数据文件,所述加密数据文件包括加密后的第一语言方法的实现体,所述第一语言方法的实现体执行于原始的android虚拟机;
将加固核心文件、加密数据文件和解密策略加到反编译后的android应用安装包中,重新编译生成加固后的android应用安装包,如附图2所示。具体地,将解密策略添加到APK的lib目录的so文件中,将加密数据文件添加到APK的assert目录中。
由于生成加固核心文件的第一步是获取原始的dex文件,因此进一步地,生成加固核心文件的方法为:
获取需要保护的android应用安装包;
反编译上述android应用安装包,获取原始核心文件,在本实施例中所述原始核心文件为android应用安装包的原始dex文件;
从原始核心文件提取受保护的第一语言方法,所述受保护的第一语言方法包括第一语言方法标识符和第一语言方法实现体;图1给出了待加固的原始android应用安装包的结构图,其中包括原始的dex文件,基于原始dex文件,本申请可以通过class类提取出各个JAVA方法以及其实现体。
修改所述受保护的第一语言方法的第一语言方法标识符为第二语言方法标识符,并删除原始核心文件中的受保护的第一语言方法的实现体,生成加固核心文件。图1为具有JAVA方法实现体的原始dex文件,图2为将JAVA方法标识符修改为native方法标识符并将JAVA方法实现体删除的加固dex文件。
需要说明的是,使用本发明的android应用的加固保护方法对需要保护的android应用安装包进行加固时,通过将原始核心文件中JAVA方法的标识符和实现体进行拆分并处理,并对JAVA方法的标识符进行处理获得加固核心文件,对JAVA方法的实现体进行加密获得加密数据文件。因此,即使破解者获得了解密后的加密数据文件以及加固核心文件,无法将加密数据文件及加固核心文件的状态还原至待加密的原始核心文件,也就无法得到完整的原始核心文件;所以也无需执行每个函数后重新加密,避免了影响android应用程序的执行效率。
进一步地,所述从原始核心文件提取受保护的第一语言方法,具体包括,通过分析所述原始核心文件中的类的数据结构来识别需要提取的第一语言方法。具体地,通过分析原始dex文件中class的数据结构,可以获得类方法的数量、类方法的结构体等信息,进而识别需要提取的JAVA方法。
进一步地,所述方法还包括,在删除原始核心文件中的受保护的第一语言方法的实现体之前,提取所述第一语言方法的实现体并对其源代码加密,生成加密数据文件;具体地,为了保护JAVA方法的实现体,将其从原始dex文件中抽离并加密,存储到另外的文件中,以便通过加固dex文件调用受保护的方法时,可以通过native方式加载并完成所述JAVA方法的实现体的解密及执行。
进一步地,生成加密数据文件时,根据预置的加密策略,对第一语言方法的实现体进行加密;解密所述加密数据文件时,根据预置的解密策略将所述加密数据文件还原为第一语言方法的实现体;具体地,所述加密策略和所述解密策略对应设置,且至少包括防二次打包策略、防篡改策略、防反编译策略、反dump策略、字符串加密策略、反调试策略中的一种策略。
在重新编译生成加固后的android应用安装包之前,还将加固保护程序加到反编译后的android应用安装包中,如附图3所示;所述加固保护程序在加固后的android应用安装包被安装并运行时,执行以下操作:根据受保护的第一语言方法的调用请求,将加固核心文件中的未提供实现体的第一语言方法按照第二语言方法标识符对应的方式进行加载,加载后动态申请内存,再使用加解密策略获得解密后的第一语言方法的实现体,然后在所述内存中执行所述实现体。具体地,将加固保护程序添加到APK的lib目录的so文件中。如图4所示,当应用运行后调用加固核心文件中受保护的方法时,将会调用加固核心文件中被标识为native的JAVA方法,由于native方法没有实现体,所以将JAVA方法以native的形式加载,但是native方式指向的JAVA方法的实现体需进行解密后才可以执行。
需要说明的是,如果在对需要保护的android应用安装包进行加固时,对原始dex文件进行了修改,即解密后的函数是代码混淆或指令替换过的,那么执行解密函数前需要进行二次修改。由于,本发明在android应用安装包进行加固时,通过将原始核心文件中JAVA方法的标识符和实现体进行拆分来分别处理并存储,并未对原始核心文件进行代码混淆或指令替换,因此,执行解密函数时,本发明也无需对解密后获得的JAVA方法的实现体进行二次修改;也无需对dex文件(本申请中的加固核心文件)做任何改动,也不通过dex文件还原原始函数的数据。
为了保证安全,本发明首先通过动态加载函数随机申请内存,然后使用解密策略对加密数据文件进行解密,获得解密后的JAVA方法实现体。需要说明的是,解密后的JAVA方法实现体所在的内存地址,是在调用本地native函数对应函数方法时动态申请的内存地址,且DEX文件执行加密的函数时也不依赖该内存地址;因此,本发明中不存在修改指向解密函数的地址数据的步骤;加固后的dex文件里面并不存在指向解密后的JAVA方法实现体的内存地址,攻击者无法根据dex文件找到相应的解密函数,进一步增加了获取解密函数的难度。
进一步地,在所述内存中执行所述第一语言方法的实现体还包括,修改原始android虚拟机的相关数据结构,使得所述原始android虚拟机能够正确执行解密后的第一语言方法的实现体。具体地,如图4所示,由于JAVA方法被标识为native方法,如果按照native方式执行则android虚拟机无法正确识别和执行,因此需要修改原始android虚拟机的相关数据结构,使得所述原始android虚拟机能够正确执行解密后的JAVA方法的实现体。
本发明还提供一种android应用的加固保护装置,所述加固保护装置包括第一生成模块、第二生成模块和合成模块;其中,所述第一生成模块,用于生成加固核心文件,所述加固核心文件包括未提供实现体的第一语言方法以及所述第一语言方法的第二语言标识符;所述第二生成模块,用于生成加密数据文件,所述加密数据文件包括加密后的第一语言方法的实现体,所述第一语言方法的实现体执行于原始的android虚拟机;所述合成模块,用于将加固核心文件、加密数据文件和解密策略加到反编译后的android应用安装包中,重新编译生成加固后的android应用安装包。
进一步地,所述第一生成模块生成加固核心文件时,首先要获取需要保护的android应用安装包;然后反编译上述android应用安装包,获取原始核心文件;接着修改所述受保护的第一语言方法的第一语言方法标识符为第二语言方法标识符, 并删除原始核心文件中的受保护的第一语言方法的实现体,生成加固核心文件。在本实施例中所述原始核心文件为android应用安装包的原始dex文件;从原始核心文件提取受保护的第一语言方法,所述受保护的第一语言方法包括第一语言方法标识符和第一语言方法实现体;图1给出了待加固的原始android应用安装包的结构图,其中包括原始的dex文件,通过原始dex文件可以通过class类提取出各个JAVA方法以及其实现体。
进一步地,所述第二生成模块生成加密数据文件时,需要提取所述第一语言方法的实现体,并调用加密策略对其源代码加密,生成加密数据文件。具体地,所述加解密策略至少包括防二次打包策略、防篡改策略、防反编译策略、反dump策略、字符串加密策略、反调试策略中的一种策略。
进一步地,所述合成模块还用于在重新编译生成加固后的android应用安装包之前,将加固保护程序加到反编译后的android应用安装包中,重新编译生成加固后的android应用安装包。所述加固保护程序在加固后的android应用安装包被安装并运行时,执行以下操作:根据受保护的第一语言方法的调用请求,将加固核心文件中的未提供实现体的第一语言方法按照第二语言方法标识符对应的方式进行加载,加载后动态申请内存,再使用解密策略获得解密后的第一语言方法的实现体,然后在所述内存中执行所述实现体。
本发明还提供一种android应用的加固保护系统,所述系统包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述的android应用的加固保护方法的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,所属领域的普通技术人员在不脱离本发明技术方案的精神下,对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换,其均应涵盖在本发明请求保护的技术方案范围当中。

Claims (10)

1.一种android应用的加固保护方法,其特征在于,所述方法包括:
生成加固核心文件,所述加固核心文件包括未提供实现体的第一语言方法以及所述第一语言方法的第二语言标识符;
生成加密数据文件,所述加密数据文件包括加密后的第一语言方法的实现体,所述第一语言方法的实现体执行于原始的android虚拟机;
将加固核心文件、加密数据文件和解密策略加到反编译后的android应用安装包中,重新编译生成加固后的android应用安装包。
2.基于权利要求1 所述的一种android应用的加固保护方法,其特征在于,生成加固核心文件的方法为:
获取需要保护的android应用安装包;
反编译上述android应用安装包,获取原始核心文件;
从原始核心文件提取受保护的第一语言方法,所述受保护的第一语言方法包括第一语言方法标识符和第一语言方法实现体;
修改所述受保护的第一语言方法的第一语言方法标识符为第二语言方法标识符,并删除原始核心文件中的受保护的第一语言方法的实现体,生成加固核心文件。
3.基于权利要求2 所述的一种android应用的加固保护方法,其特征在于,在删除原始核心文件中的受保护的第一语言方法的实现体之前,还执行:提取所述第一语言方法的实现体并对其源代码加密,生成加密数据文件。
4.基于权利要求1 所述的一种android应用的加固保护方法,其特征在于,生成加密数据文件时,根据预置的加密策略,对第一语言方法的实现体进行加密;
其中,预置的加密策略至少包括防二次打包策略、防篡改策略、防反编译策略、反dump策略、字符串加密策略、反调试策略中的一种策略。
5.基于权利要求1 所述的一种android应用的加固保护方法,其特征在于,在重新编译生成加固后的android应用安装包之前,还将加固保护程序加到反编译后的android应用安装包中;
其中,所述加固保护程序在加固后的android应用安装包被安装并运行时,执行:根据受保护的第一语言方法的调用请求,将加固核心文件中的未提供实现体的第一语言方法按照第二语言方法标识符对应的方式进行加载,加载后动态申请内存,接着使用所述解密策略对所述加密数据文件进行解密,获得解密后的第一语言方法的实现体。
6.基于权利要求5所述的一种android应用的加固保护方法,其特征在于,在所述内存中执行所述第一语言方法的实现体时,执行:修改原始android虚拟机的相关数据结构,使得所述原始android虚拟机能够正确执行解密后的第一语言方法的实现体。
7.基于权利要求1所述的一种android应用的加固保护方法,其特征在于,将加固核心文件、加密数据文件和解密策略添加到反编译后的android应用安装包时,执行:将解密策略添加到APK的lib目录的so文件中,将加密数据文件添加到APK的assert目录中。
8.基于权利要求1~7任一项的所述的一种android应用的加固保护方法,其特征在于,所述加固核心文件为dex文件,所述第一语言方法为JAVA方法,所述第一语言方法标识符为JAVA标识符,所述第二语言方法标识符为native标识符。
9.一种android应用的加固保护装置,其特征在于,所述加固保护装置包括第一生成模块、第二生成模块和合成模块:
所述第一生成模块,用于生成加固核心文件,所述加固核心文件包括未提供实现体的第一语言方法以及所述第一语言方法的第二语言标识符;
所述第二生成模块,用于生成加密数据文件,所述加密数据文件包括加密后的第一语言方法的实现体,所述第一语言方法的实现体执行于原始的android虚拟机;
所述合成模块,用于将加固核心文件、加密数据文件和解密策略加到反编译后的android应用安装包中,重新编译生成加固后的android应用安装包。
10.一种android应用的加固保护系统,其特征在于:包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-8任一项的android应用的加固保护方法的步骤。
CN202010368640.3A 2020-04-28 2020-04-28 一种android应用的加固保护方法、装置及系统 Withdrawn CN111625848A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010368640.3A CN111625848A (zh) 2020-04-28 2020-04-28 一种android应用的加固保护方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010368640.3A CN111625848A (zh) 2020-04-28 2020-04-28 一种android应用的加固保护方法、装置及系统

Publications (1)

Publication Number Publication Date
CN111625848A true CN111625848A (zh) 2020-09-04

Family

ID=72259740

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010368640.3A Withdrawn CN111625848A (zh) 2020-04-28 2020-04-28 一种android应用的加固保护方法、装置及系统

Country Status (1)

Country Link
CN (1) CN111625848A (zh)

Similar Documents

Publication Publication Date Title
CN107977553B (zh) 移动应用程序的安全加固的方法及装置
JP4702957B2 (ja) 耐タンパ・トラステッド仮想マシン
CN102890758B (zh) 一种保护可执行文件的方法及系统
JP4892167B2 (ja) ディジタル・データ保護構成
US20160275019A1 (en) Method and apparatus for protecting dynamic libraries
CN105426708A (zh) 一种Android系统的应用程序的加固方法
US20120260106A1 (en) System and method for binary layout randomization
JPWO2006009081A1 (ja) アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法
CN107273723B (zh) 一种基于so文件加壳的Android平台应用软件保护方法
CN110188555B (zh) 一种磁盘数据保护方法、系统及相关组件
JP2008059404A (ja) 情報処理システムおよびプログラム
US7970133B2 (en) System and method for secure and flexible key schedule generation
CN105930695A (zh) 一种软件开发工具包的保护方法及装置
US9256756B2 (en) Method of encryption and decryption for shared library in open operating system
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
KR101749209B1 (ko) 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치
CN114692134A (zh) 一种基于linux内核进程监控来保护代码及数据的系统和方法
CN109992974B (zh) 虚拟机字节码文件的保护方法、设备及可读存储介质
CN107257282A (zh) 一种基于rc4算法的代码全包加密方法
CN112035803B (zh) 一种基于Windows平台软件的保护方法及装置
CN104657635A (zh) 一种应用处理方法、装置和服务器
KR20140139392A (ko) 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치
CN112733094A (zh) 一种Java应用程序的安全保护方法
US6675297B1 (en) Method and apparatus for generating and using a tamper-resistant encryption key
WO2016188134A1 (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
WW01 Invention patent application withdrawn after publication

Application publication date: 20200904

WW01 Invention patent application withdrawn after publication