CN106599629A - 一种安卓应用程序加固方法及装置 - Google Patents
一种安卓应用程序加固方法及装置 Download PDFInfo
- Publication number
- CN106599629A CN106599629A CN201611169541.2A CN201611169541A CN106599629A CN 106599629 A CN106599629 A CN 106599629A CN 201611169541 A CN201611169541 A CN 201611169541A CN 106599629 A CN106599629 A CN 106599629A
- Authority
- CN
- China
- Prior art keywords
- files
- function
- preset function
- preset
- application program
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000005728 strengthening Methods 0.000 title abstract description 6
- 230000002787 reinforcement Effects 0.000 claims description 11
- 229940104697 arixtra Drugs 0.000 claims description 5
- KANJSNBRCNMZMV-ABRZTLGGSA-N fondaparinux Chemical compound O[C@@H]1[C@@H](NS(O)(=O)=O)[C@@H](OC)O[C@H](COS(O)(=O)=O)[C@H]1O[C@H]1[C@H](OS(O)(=O)=O)[C@@H](O)[C@H](O[C@@H]2[C@@H]([C@@H](OS(O)(=O)=O)[C@H](O[C@H]3[C@@H]([C@@H](O)[C@H](O[C@@H]4[C@@H]([C@@H](O)[C@H](O)[C@@H](COS(O)(=O)=O)O4)NS(O)(=O)=O)[C@H](O3)C(O)=O)O)[C@@H](COS(O)(=O)=O)O2)NS(O)(=O)=O)[C@H](C(O)=O)O1 KANJSNBRCNMZMV-ABRZTLGGSA-N 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 172
- 230000003014 reinforcing effect Effects 0.000 description 5
- 230000003667 anti-reflective effect Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Stored Programmes (AREA)
- Telephone Function (AREA)
- Storage Device Security (AREA)
Abstract
本发明适用于信息安全领域,提供了一种安卓应用程序加固方法及装置,所述方法包括:获取第一so文件,并读取第一so文件中的第一预设函数,第一预设函数封装有安卓应用程序相关联的核心代码;采用预设加密函数对第一预设函数进行加密,形成第二预设函数;将第二预设函数写入第一so文件中,形成第二so文件。在本发明中,对native层so文件中封装有安卓应用程序核心代码的第一预设函数进行加密,得到第二预设函数,由于so文件中的第二预设函数进行了加密处理,攻击者即使能够对so文件进行反编译处理,也无法获取第一预设函数的代码,更无法获取到第一预设函数中相关联的安卓应用程序核心代码,大大提高了安卓应用程序的安全性。
Description
技术领域
本发明属于信息安全领域,尤其涉及一种安卓应用程序加固方法及装置。
背景技术
随着安卓(Android)系统的高速发展,安卓系统的安卓应用程序数目也飞速增长。由于安卓系统自身的开源性,导致其安卓应用程序的运行环境极度透明,在给安卓应用程序开发者提供更多功能接口的同时,也为攻击者提供了便利。
一个安卓应用程序由两个部分组成:java层面中由java语言编写的dex文件(是谷歌公司自己设计用于安卓平台的java虚拟机),以及native层面(本地框架)中由C/C++语言编写的so文件(是linux装置下的动态链接库文件)。这两个部分是独立的,so文件相当于一个模块,当安卓应用程序需要使用so文件中的某项功能时,直接调用相应的so文件即可。
现有技术中,采用在java层面,利用密钥进行加密解密的方法,来对安卓应用程序进行加固保护,攻击者通过非法拷贝、逆向工程、反编译等手段,可以很容易的得到密钥信息,使得安卓应用程序的安全性较低。
发明内容
有鉴于此,本发明提供了一种安卓应用程序加固方法及装置,以解决现有技术中安卓应用程序安全性较低的问题。
第一方面,提供了一种安卓应用程序加固方法,包括:
获取第一so文件,并读取第一so文件中的第一预设函数,第一预设函数封装有安卓应用程序相关联的核心代码;
采用预设加密函数对第一预设函数进行加密,形成第二预设函数;
将第二预设函数写入第一so文件中,形成第二so文件。
第二方面,提供了一种安卓应用程序加固装置,包括:
第一读取单元,用于获取第一so文件,并读取第一so文件中的第一预设函数,第一预设函数封装有安卓应用程序相关联的核心代码;
加密单元,用于采用预设加密函数对第一预设函数进行加密,形成第二预设函数;
第一写入单元,用于将第二预设函数写入第一so文件中,形成第二so文件。
在本发明中,对native层so文件中封装有安卓应用程序核心代码的第一预设函数进行加密,得到第二预设函数,由于so文件中的第二预设函数进行了加密处理,攻击者即使能够对so文件进行反编译处理,也无法获取第一预设函数的代码,更无法获取到第一预设函数中相关联的安卓应用程序核心代码,大大提高了安卓应用程序的安全性。
附图说明
为了更清楚地说明本发明的实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1中安卓应用程序加固方法的一流程图;
图2是本发明实施例2中安卓应用程序加固方法的一流程图;
图3是本发明实施例3中安卓应用程序加固装置的一原理框图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定装置结构、技术之类的具体细节,以便透彻理解本发明。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
本发明提供了一种安卓应用程序加固方法,该方法包括:获取第一so文件,所述第一so文件包括第一预设函数,所述第一预设函数封装有安卓应用程序相关联的核心代码。采用预设加密函数对所述第一预设函数进行加密,形成第二预设函数。将所述第二预设函数写入所述第一so文件中,形成第二so文件。
在本发明中,对native层so文件中封装有安卓应用程序核心代码的第一预设函数进行加密,得到第二预设函数,由于so文件中的第二预设函数进行了加密处理,攻击者即使能够对so文件进行反编译处理,也无法获取第一预设函数的代码,更无法获取到第一预设函数中相关联的安卓应用程序核心代码,大大提高了安卓应用程序的安全性。
为了说明本发明的技术方案,下面通过具体实施例来进行说明。
实施例1
图1示出了本发明实施例一提供的安卓应用程序加固方法的实现流程,详述如下:
步骤S101,获取第一so文件,并读取第一so文件中的第一预设函数,第一预设函数封装有安卓应用程序相关联的核心代码。
在步骤S101,还包括:
接收用户输入的第一预设函数,并将第一预设函数写入原始so文件。获取预设解密函数,预设解密函数与预设加密函数相匹配。给预设解密函数添加优先执行属性,以使预设解密算法优先于主函数执行。将设置优先执行属性设置完成的预设解密函数写入原始so文件,形成第一so文件。
在对安卓应用程序进行加固时,其主要重点还是对安卓应用程序的核心代码进行保护,在现有技术中,一般以java语言编写安卓应用程序核心代码并保存在java层,但java语言极其容易被反编译。在本实施例中,为了增强安卓应用程序核心代码的抗反编译能力,采用抗编译能力远胜于java语言的C/C++语言来进行安卓应用程序核心代码的编写,并将安卓应用程序核心代码保存在第一预设函数中,写入原始so文件。
在对第一预设函数进行加密后,安卓应用程序无法正常调用第二so文件中的核心代码,因此在安卓应用程序中必须要有相应的解密函数,且解密函数必须优于so文件的主(main)函数执行,以保证安卓应用程序能正常调用so文件及处于so文件中的核心代码。作为优先执行属性一种实现方式,设置解密函数为_attribute_((constructor))属性,其中,_attribute_((constructor))属性可以在so文件被加载时,使解密函数优先于main(主)函数执行。
在本实施例中,优选地,采用将解密函数设置为_attribute_((constructor))属性的方法,来保证安卓应用程序能正常调用so文件及核心代码,其中__attribute__((constructor))属性的函数会在主函数执行,即在so文件加载时,解密函数会优于送文件的主函数执行,通过该方法,安卓应用程序在进行so文件调用时,解密函数会先将预设函数进行解密,以使得so文件及核心代码能正常被调用。
作为解密函数的一个具体实施例,解密函数包括:读取安卓系统的内核虚拟文件/proc/pid/maps,并通过/proc/pid/maps获取原始so文件。修改原始so文件的读写权限为允许读取写入。获原始so文件中已加密的第一预设函数。对已加密的第一预设函数进行解密。将解密后的第一预设函数重新写入原始so文件,得到第一so文件。其中pid是该安卓应用程序的id,maps中存储了所有so文件的地址偏移量。
步骤S102,采用预设加密函数对第一预设函数进行加密,形成第二预设函数,包括:
读取所述第一预设函数,并对所述第一预设函数进行加密得到所述第二预设函数。
native层中所有so文件都是以二进制格式文件进行保存的,所以在步骤S101中获取到的第一预设函数也是二进制格式数据,在对第一预设函数进行加密时所用到的加密函数,可由用户自行选择,凡是可实现对二进制格式数据进行加密的加密函数均可。
作为加密函数的一个具体实施例,在对第一预设函数进行加密时,可以将第一预设函数中所有内容进行取反操作。
由于第一so文件是二进制格式文件,其包含的第一预设函数也是二进制格式数据,在对第一预设函数进行加密时,可以将第一预设函数中的所有数据内容进行取反,即将第一预设函数对应的二进制格式数据中所有的1变为0,所有的0变为1。
步骤S103,将第二预设函数写入第一so文件中,形成第二so文件。
在步骤S103中得到的第二so文件即为加固后的最终so文件。
在对第一预设函数加密完成后,需要将加密后的第二预设函数的数据重新写入第一so文件,以替换掉原来未加密的第一预设函数的数据。攻击者在对包含加密后的第二预设函数的so文件直接进行反编译时,第二预设函数部分会产生代码混乱,使得攻击者无法得到正确的安卓应用程序核心代码,从而实现了对安卓应用程序核心代码的保护,即对安卓应用程序的安全加固。
在步骤S102中,为了对第一预设函数进行保护,首先需要获取安卓应用程序中native层的第一so文件,才能从第一so文件中读取预设函数并进行保护。作为步骤S102中读取第一预设函数的一种实现方式,包括:
解析so文件,并读取其中的.dynamic段。基于.dynamic段获取预设函数的地址偏移量及大小。通过地址偏移量及大小读取预设函数。
在获取到so文件之后,解析so文件并读取ELF头文件中的e_type字段,获得.dynamic段,其中.dynamic段包含了so文件中每个函数的地址偏移量及大小,通过历遍.dynamic段来查找预设函数的地址偏移量及大小,并结合地址偏移量及大小来确定预设函数在so文件中的具体位置,以便后续对预设函数进行读取和加密。
在步骤S103中,将第二预设函数写入第一so文件中,形成第二so文件时,还包括:
解析第二so文件,并读取其中的.dynamic段。基于.dynamic段获取第二预设函数的地址偏移量及大小。根据地址偏移量及大小,将加密后的第二预设函数重新写入so文件。
实施例2
基于图2对应的实施例2,是将本发明应用于安卓应用程序加固的一具体实施例,详述如下:
步骤S201,接收用户输入的第一预设函数,并将第一预设函数写入原始so文件。
为了增强安卓应用程序的抗反编译能力,在编写native层的so文件时,就将含有安卓应用程序核心代码的预设函数一同写入原始so文件之中。
步骤S202,获取预设解密函数。
由技术人员预先编写好解密函数,并将解密函数放入原始so文件之中。
本实施例中,解密函数包括:读取安卓系统的内核虚拟文件/proc/pid/maps,并通过/proc/pid/maps获取第二so文件。修改第二so文件的读写权限为允许读取写入。获取第二so文件中已加密的第二预设函数。对已加密的第二预设函数进行解密。将解密后得到的第一预设函数重新写入so文件。
步骤S203,给预设解密函数添加优先执行属性,以使预设解密算法优先于主函数执行。
本实施例中,采用__attribute__((constructor))属性作为所需的优先执行属性,__attribute__((constructor))属性的函数会在主函数执行。
为了保证安卓应用程序能正常调用so文件及处于so文件中的核心代码,解密函数必须优先于so文件的主函数执行,因此将解密函数设置为__attribute__((constructor))属性。
步骤S204,将设置优先执行属性设置完成的预设解密函数写入原始so文件,形成第一so文件。
在完成解密函数属性设置后,将解密函数写入原始so文件。
步骤S205,获取第一so文件,并读取第一so文件中的第一预设函数。
在本实施例中,读取第一so文件中第一预设函数的方法包括:
在获取到第一so文件之后,解析第一so文件并读取ELF头文件中的e_type字段,获得.dynamic段,其中.dynamic段包含了第一so文件中每个函数的地址偏移量及大小,通过历遍.dynamic段来查找第一预设函数的地址偏移量及大小,并结合地址偏移量及大小来确定第一预设函数在第一so文件中的具体位置。
步骤S206,采用预设加密函数对第一预设函数进行加密,形成第二预设函数。
本实施例采用将第一预设函数中的所有内容进行取反操作的加密函数,对第一预设函数进行加密。
步骤S207,将第二预设函数写入第一so文件中,形成第二so文件。
在对第一预设函数加密完成后,需要将加密后的第二预设函数的数据重新写入第一so文件,以替换掉原来的第一预设函数的数据。形成的第二so文件即为最终的so文件,提供给安卓应用程序的用户使用。
步骤207结束后,本发明对安卓应用程序的加固已经全部完成,为了便于读者进一步地理解本发明,步骤S208、S209及S210将对采用本发明加固后的安卓应用程序,在进行核心代码调用的时候的主要步骤进行说明。
步骤S208,加载第二so文件。
加载包括核心代码的第二so文件。
步骤S209,执行解密函数对第二预设函数进行解密。
为了保证能正常调用核心代码,需要在第二so文件主函数执行先对第二so文件中的第二预设函数进行解密,本实施例中,解密方法采用读取安卓系统的内核虚拟文件/proc/pid/maps,并通过/proc/pid/maps获取第二so文件。修改第二so文件的读写权限为允许读取写入。获取第二so文件中已加密的第二预设函数。对已加密的预第二设函数进行解密。将解密得到的第一预设函数重新写入第二so文件,得到第一so文件。
步骤S210,读取解密后的预第一设函数中的核心代码。
在进行核心代码调用时,预设函数解密完成后,直接读取第一so文件中第一预设函数包含的核心代码即可。
在本实施例中,将安卓应用程序的核心代码放入预设函数,并在编写native层的so文件时就将预设函数写入so文件,对so文件中的预设函数进行加密,还在包含预设函数的so文件中加入解密函数,并设置解密函数优于so文件的主函数执行。
本发明中,通过采用C/C++语言编写核心代码放入预设函数,将预设函数写入在native层的so文件中,使得核心代码的抗反编译能力大大增强,又对so文件中的预设函数进行加密,使得攻击者无法通过直接反编译so文件来得到核心代码,从而大大提高安卓应用程序的安全性。
实施例3
对应于上文实施例1的安卓应用程序加固方法,图3示出了本发明实施例3提供的安卓应用程序加固装置的原理框图。
参照图3,该装置包括:
第一读取单元31,用于获取第一so文件,并读取第一so文件中的第一预设函数,第一预设函数封装有安卓应用程序相关联的核心代码。
加密单元32,用于采用预设加密函数对第一预设函数进行加密,形成第二预设函数。
第一写入单元33,用于将第二预设函数写入第一so文件中,形成第二so文件。
进一步地,第一读取单元31,还包括:
第二写入单元,用于接收用户输入的第一预设函数,并将第一预设函数写入原始so文件。
第一获取单元,用于获取预设解密函数,预设解密函数与预设加密函数相匹配。
属性设置单元,用于给预设解密函数添加优先执行属性,以使预设解密算法优先于主函数执行。
第三写入单元,用于将设置优先执行属性设置完成的预设解密函数写入原始so文件,形成第一so文件。
进一步地,预设解密函数,包括:
第二获取单元,用于读取内核虚拟文件,并根据内核虚拟文件获取的原始so文件;
权限修改单元,用于修改原始so文件的读写权限;
第二读取单元,用于读取原始so文件中的第一预设函数;
解密单元,用于采用预设解密算法对第一预设函数进行解密;
第四写入单元,用于将第一预设函数写入原始so文件中,得到第一so文件。
进一步地,第一读取单元31,包括:
读取所述第一预设函数,并对所述第一预设函数进行加密得到所述第二预设函数。
进一步地,所述读取所述第一预设函数,包括:
第一读取子单元,用于解析所述第一so文件,并读取其中的.dynamic段。
获取子单元,用于基于所述.dynamic段获取所述第一预设函数的地址偏移量及大小。
第二读取子单元,用于通过所述地址偏移量及所述大小读取所述第一预设函数。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种安卓应用程序加固方法,其特征在于,包括:
获取第一so文件,所述第一so文件包括第一预设函数,所述第一预设函数封装有安卓应用程序相关联的核心代码;
采用预设加密函数对所述第一预设函数进行加密,形成第二预设函数;
将所述第二预设函数写入所述第一so文件中,形成第二so文件。
2.如权利要求1所述方法,其特征在于,获取第一so文件,还包括:
接收用户输入的所述第一预设函数,并将所述第一预设函数写入原始so文件;
获取预设解密函数,所述预设解密函数与所述预设加密函数相匹配;
给所述预设解密函数添加优先执行属性,以使所述预设解密算法优先于主函数执行;
将设置优先执行属性设置完成的所述预设解密函数写入所述原始so文件,形成所述第一so文件。
3.如权利要求2所述方法,其特征在于,所述预设解密函数,包括:
读取内核虚拟文件,并根据所述内核虚拟文件获取所述原始so文件;
修改所述原始so文件的读写权限;
读取所述原始so文件中的所述第一预设函数;
采用所述预设解密算法对所述第一预设函数进行解密;
将所述解密后的第一预设函数写入所述原始so文件中,得到所述第一so文件。
4.如权利要求1所述方法,其特征在于,所述采用预设加密函数对所述第一预设函数进行加密,形成第二预设函数,包括:
读取所述第一预设函数,并对所述第一预设函数进行加密得到所述第二预设函数。
5.如权利要求4所述方法,其特征在于,所述读取所述第一预设函数,包括:
解析所述第一so文件,并读取其中的.dynamic段;
基于所述.dynamic段获取所述第一预设函数的地址偏移量及大小;
通过所述地址偏移量及所述大小读取所述第一预设函数。
6.一种安卓应用程序加固装置,其特征在于,包括:
第一读取单元,用于获取第一so文件,所述第一so文件包括第一预设函数,所述第一预设函数封装有安卓应用程序相关联的核心代码;
加密单元,用于采用预设加密函数对所述第一预设函数进行加密,形成第二预设函数;
第一写入单元,用于将所述第二预设函数写入所述第一so文件中,形成第二so文件。
7.如权利要求6所述装置,其特征在于,所述第一读取单元,还包括:
第二写入单元,用于接收用户输入的所述第一预设函数,并将所述第一预设函数写入原始so文件。
第一获取单元,用于获取预设解密函数,所述预设解密函数与所述预设加密函数相匹配;
属性设置单元,用于给所述预设解密函数添加优先执行属性,以使所述预设解密算法优先于主函数执行;
第三写入单元,用于将设置优先执行属性设置完成的所述预设解密函数写入所述原始so文件,形成所述第一so文件。
8.如权利要求7所述装置,其特征在于,所述预设解密函数,包括:
第二获取单元,用于读取内核虚拟文件,并根据所述内核虚拟文件获取所述原始so文件;
权限修改单元,用于修改所述原始so文件的读写权限;
第二读取单元,用于读取所述原始so文件中的所述第一预设函数;
解密单元,用于采用所述预设解密算法对所述第一预设函数进行解密;
第四写入单元,用于将所述解密后的第一预设函数写入所述原始so文件中,得到所述第一so文件。
9.如权利要求6所述装置,其特征在于,所述第一读取单元,包括:
读取所述第一预设函数,并对所述第一预设函数进行加密得到所述第二预设函数。
10.如权利要求9所述装置,其特征在于,所述读取所述第一预设函数,包括:
第一读取子单元,用于解析所述第一so文件,并读取其中的.dynamic段;
获取子单元,用于基于所述.dynamic段获取所述第一预设函数的地址偏移量及大小;
第二读取子单元,用于通过所述地址偏移量及所述大小读取所述第一预设函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611169541.2A CN106599629B (zh) | 2016-12-16 | 2016-12-16 | 一种安卓应用程序加固方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611169541.2A CN106599629B (zh) | 2016-12-16 | 2016-12-16 | 一种安卓应用程序加固方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106599629A true CN106599629A (zh) | 2017-04-26 |
CN106599629B CN106599629B (zh) | 2021-08-06 |
Family
ID=58599908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611169541.2A Active CN106599629B (zh) | 2016-12-16 | 2016-12-16 | 一种安卓应用程序加固方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106599629B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122636A (zh) * | 2017-04-27 | 2017-09-01 | 北京洋浦伟业科技发展有限公司 | 一种基于so文件的apk加固方法及装置 |
CN107122635A (zh) * | 2017-04-27 | 2017-09-01 | 北京洋浦伟业科技发展有限公司 | 一种so文件的加固方法、装置和apk的加固方法 |
CN107220529A (zh) * | 2017-05-19 | 2017-09-29 | 湖南鼎源蓝剑信息科技有限公司 | 一种针对Android平台SDK包的加固方法 |
CN108334754A (zh) * | 2018-01-31 | 2018-07-27 | 山东奥太电气有限公司 | 嵌入式系统程序的加密解密方法及系统 |
CN109062582A (zh) * | 2018-07-23 | 2018-12-21 | 北京云测信息技术有限公司 | 一种应用安装包的加密方法及装置 |
CN109426703A (zh) * | 2017-08-30 | 2019-03-05 | 武汉斗鱼网络科技有限公司 | 一种ios平台上对核心代码的保护方法和装置 |
CN110135129A (zh) * | 2019-04-12 | 2019-08-16 | 平安科技(深圳)有限公司 | 代码段保护方法、装置、计算机设备和存储介质 |
CN112486496A (zh) * | 2020-11-25 | 2021-03-12 | 上海连尚网络科技有限公司 | 一种用于生成和运行so文件的方法与设备 |
CN112799699A (zh) * | 2021-01-25 | 2021-05-14 | 广州心娱网络科技有限公司 | 一种服务器的更新方法及装置 |
CN113642021A (zh) * | 2021-08-20 | 2021-11-12 | 深信服科技股份有限公司 | 一种业务代码提交方法、处理方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708322A (zh) * | 2012-05-12 | 2012-10-03 | 北京深思洛克软件技术股份有限公司 | 安卓系统中java应用程序的保护方法 |
CN104462959A (zh) * | 2014-12-04 | 2015-03-25 | 北京奇虎科技有限公司 | 一种安卓应用的加固保护方法、服务器和系统 |
CN105095771A (zh) * | 2014-05-08 | 2015-11-25 | 北京娜迦信息科技发展有限公司 | 一种共享目标文件的保护方法及装置 |
CN106203006A (zh) * | 2016-08-31 | 2016-12-07 | 北京鼎源科技有限公司 | 基于dex与so文件动态执行的Android应用加固方法 |
-
2016
- 2016-12-16 CN CN201611169541.2A patent/CN106599629B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708322A (zh) * | 2012-05-12 | 2012-10-03 | 北京深思洛克软件技术股份有限公司 | 安卓系统中java应用程序的保护方法 |
CN105095771A (zh) * | 2014-05-08 | 2015-11-25 | 北京娜迦信息科技发展有限公司 | 一种共享目标文件的保护方法及装置 |
CN104462959A (zh) * | 2014-12-04 | 2015-03-25 | 北京奇虎科技有限公司 | 一种安卓应用的加固保护方法、服务器和系统 |
CN106203006A (zh) * | 2016-08-31 | 2016-12-07 | 北京鼎源科技有限公司 | 基于dex与so文件动态执行的Android应用加固方法 |
Non-Patent Citations (1)
Title |
---|
韩子诺等,: "Android平台的SO加固技术研究", 《现代计算机》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122635A (zh) * | 2017-04-27 | 2017-09-01 | 北京洋浦伟业科技发展有限公司 | 一种so文件的加固方法、装置和apk的加固方法 |
CN107122636A (zh) * | 2017-04-27 | 2017-09-01 | 北京洋浦伟业科技发展有限公司 | 一种基于so文件的apk加固方法及装置 |
CN107220529A (zh) * | 2017-05-19 | 2017-09-29 | 湖南鼎源蓝剑信息科技有限公司 | 一种针对Android平台SDK包的加固方法 |
CN109426703A (zh) * | 2017-08-30 | 2019-03-05 | 武汉斗鱼网络科技有限公司 | 一种ios平台上对核心代码的保护方法和装置 |
CN109426703B (zh) * | 2017-08-30 | 2023-11-24 | 喀斯玛汇智(无锡)科技有限公司 | 一种ios平台上对核心代码的保护方法和装置 |
CN108334754B (zh) * | 2018-01-31 | 2020-12-08 | 山东奥太电气有限公司 | 嵌入式系统程序的加密解密方法及系统 |
CN108334754A (zh) * | 2018-01-31 | 2018-07-27 | 山东奥太电气有限公司 | 嵌入式系统程序的加密解密方法及系统 |
CN109062582A (zh) * | 2018-07-23 | 2018-12-21 | 北京云测信息技术有限公司 | 一种应用安装包的加密方法及装置 |
CN109062582B (zh) * | 2018-07-23 | 2022-02-01 | 北京云测信息技术有限公司 | 一种应用安装包的加密方法及装置 |
WO2020206905A1 (zh) * | 2019-04-12 | 2020-10-15 | 平安科技(深圳)有限公司 | 代码段保护方法、装置、计算机设备和存储介质 |
CN110135129B (zh) * | 2019-04-12 | 2023-04-07 | 平安科技(深圳)有限公司 | 代码段保护方法、装置、计算机设备和存储介质 |
CN110135129A (zh) * | 2019-04-12 | 2019-08-16 | 平安科技(深圳)有限公司 | 代码段保护方法、装置、计算机设备和存储介质 |
CN112486496A (zh) * | 2020-11-25 | 2021-03-12 | 上海连尚网络科技有限公司 | 一种用于生成和运行so文件的方法与设备 |
CN112799699A (zh) * | 2021-01-25 | 2021-05-14 | 广州心娱网络科技有限公司 | 一种服务器的更新方法及装置 |
CN112799699B (zh) * | 2021-01-25 | 2024-05-03 | 广州心娱网络科技有限公司 | 一种服务器的更新方法及装置 |
CN113642021A (zh) * | 2021-08-20 | 2021-11-12 | 深信服科技股份有限公司 | 一种业务代码提交方法、处理方法、装置及电子设备 |
CN113642021B (zh) * | 2021-08-20 | 2024-05-28 | 深信服科技股份有限公司 | 一种业务代码提交方法、处理方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106599629B (zh) | 2021-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106599629A (zh) | 一种安卓应用程序加固方法及装置 | |
US10778441B2 (en) | Redactable document signatures | |
CN103210396B (zh) | 包括用于保护敏感代码和数据的架构的方法和装置 | |
CN103413073B (zh) | 一种保护java可执行程序的方法及设备 | |
WO2015058620A1 (en) | Method and apparatus for generating installation package corresponding to an application and executing application | |
US20140189366A1 (en) | Obfuscating Transformations on Data Array Content and Addresses | |
CN108229112A (zh) | 一种保护应用程序、应用程序的运行方法以及装置 | |
CN104246784B (zh) | 用于保护和安全地传输媒体内容的方法、设备和系统 | |
CN106650327A (zh) | 基于动态恢复so文件的Android应用加固方法 | |
CN109598107B (zh) | 一种基于应用安装包文件的代码转换方法及装置 | |
CN106845167A (zh) | 一种apk的加固方法和装置,及动态加载方法和装置 | |
US9116765B2 (en) | System and method for obfuscating data using instructions as a source of pseudorandom values | |
CN101853357A (zh) | 软件保护方法 | |
CN108399319A (zh) | 源代码保护方法、应用服务器及计算机可读存储介质 | |
CN105335151A (zh) | 安装文件的保护方法及装置 | |
CN110050258A (zh) | 具有自动模块化功能的安全专区保护的应用程序盗版防止 | |
CN106897587A (zh) | 加固应用、加载加固应用的方法和装置 | |
CN106326691A (zh) | 加解密功能的实现方法、装置及服务器 | |
CN105868639A (zh) | 内核漏洞修复方法和装置 | |
CN109670332A (zh) | 应用数据保护方法、装置及其设备 | |
CN107122636A (zh) | 一种基于so文件的apk加固方法及装置 | |
CN111159661A (zh) | 一种防止反编译方法、装置、电子设备及存储介质 | |
CN107341372B (zh) | 一种软件保护方法和装置 | |
CN109558341A (zh) | 计算机内存数据保护方法和计算机 | |
EP3952202B1 (en) | A device and a method for performing a cryptographic algorithm |
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 | ||
CB02 | Change of applicant information |
Address after: 516006 TCL science and technology building, No. 17, Huifeng Third Road, Zhongkai high tech Zone, Huizhou City, Guangdong Province Applicant after: TCL Technology Group Co.,Ltd. Address before: 516006 Guangdong province Huizhou Zhongkai hi tech Development Zone No. nineteen District Applicant before: TCL RESEARCH AMERICA Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |