CN106960156B - 基于应用程序的数据加密及访问方法、装置 - Google Patents
基于应用程序的数据加密及访问方法、装置 Download PDFInfo
- Publication number
- CN106960156B CN106960156B CN201610016296.5A CN201610016296A CN106960156B CN 106960156 B CN106960156 B CN 106960156B CN 201610016296 A CN201610016296 A CN 201610016296A CN 106960156 B CN106960156 B CN 106960156B
- Authority
- CN
- China
- Prior art keywords
- data
- constant
- application program
- encrypted
- preset
- 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.)
- Active
Links
Images
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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种基于应用程序的数据加密及访问方法、装置,其将应用程序相关的各个常量数据均视为字符串,写入数据体,再通过预设加密算法对该数据体进行加密;同时,将该预设加密算法和所采用的加密参数写入数据头,最终将上述数据头和数据体构成的加密数据存入该应用程序对应的动态链接库,仅将相应的调用方法写入应用程序的源代码。在应用程序运行时,先根据源代码中的调用方法获取上述加密数据,再解密读取所需的常量数据;由于常量数据的实际存储位置是动态链接库,即使对应用程序进行反编译也无法获取常量数据,更无法对常量数据进行修改,故本申请可以有效防止常量数据被篡改,提高应用程序的安全性。
Description
技术领域
本发明涉及程序设计技术领域,特别是涉及基于应用程序的数据加密及访问方法、装置。
背景技术
Windows、Android等操作系统的可执行程序中一般都存在常量存储区,该常量存储区中的数据以常量值的形式直接存储于程序代码中,且在程序运行期间不可修改。常量存储区具有只读属性,即使多线程访问也没有任何风险,保证了只读数据的高效存储和访问。
但是,正是由于常量存储区的所有数据都是以常量值的形式存储,所以在程序被破解之后这个区域的数据很容易被识别和篡改。而很多应用程序的默认配置、固定数据都是作为常量数据存储的,对其进行恶意修改或者植入广告等行为都会给应用程序带来巨大的风险。因此,有必要对应用程序的常量数据的存储及访问进行加密,以降低应用程序被破解和篡改的风险。
发明内容
为了解决上述技术问题,本申请公开了一种基于应用程序的数据加密及访问方法、装置。
第一方面,本申请提供了一种基于应用程序的数据加密方法,所述方法包括:
确定预设加密算法相关的各个加密参数;其中,所述预设加密算法用于加密应用程序的常量数据;
将所述预设加密算法和加密参数分别写入加密数据的数据头;其中,所述加密数据用于存储加密后的常量数据;
将所述常量数据写入所述加密数据的数据体,并根据所述预设加密算法所述数据体进行加密;
将所述加密数据存入所述应用程序对应的动态链接库,并将对所述加密数据的调用方法写入所述应用程序的源代码。
结合第一方面,在本申请第一方面第一种可行的实施方式中,所述将所述预设加密算法和加密参数分别写入加密数据的数据头,包括:
将所述预设加密算法写入所述数据头中算法标识字段的预设字节处,所述算法标识字段中除所述预设字节外的其他字节随机写入英文字母;
将各个加密参数依次按照“参数长度+参数内容”的格式写入所述数据头的参数标识字段。
结合第一方面,或者本申请第一方面第一种可行的实施方式,在本申请第一方面第二种可行的实施方式中,所述将所述常量数据写入所述加密数据的数据体,包括:
将各个常量数据依次按照“数据长度+数据内容”的格式所述数据体。
结合本申请第一方面第二种可行的实施方式,在本申请第一方面第三种可行的实施方式中,所述方法还包括:
依次记录各个常量数据在所述数据体中的起始位偏移量,得到常量数据唯一标识列表;
将所述常量数据唯一标识列表写入所述应用程序的源代码。
第二方面,本申请提供了一种基于应用程序的数据访问方法,所述方法包括:
确定应用程序的源代码中对加密数据的调用方法,并根据所述调用方法从所述应用程序对应的动态链接库中获取所述加密数据;
从所述加密数据的数据头中读取预设加密算法和加密参数;
根据所述预设加密算法和加密参数对所述加密参数的数据体进行解密;
从解密后的数据体中读取所需的常量数据。
结合第二方面,在本申请第二方面第一种可行的实施方式中,所述从解密后的数据体中读取所需的常量数据,包括:
获取常量数据唯一标识列表;
根据所述常量数据唯一标识列表确定所需的常量数据在所述解密后的数据体中的起始位偏移量;
根据所述起始位偏移量在所述解密后的数据体中读取所需的常量数据。
第三方面,本申请提供了一种基于应用程序的数据加密装置,所述装置包括:
预处理单元,用于确定预设加密算法相关的各个加密参数;其中,所述预设加密算法用于加密应用程序的常量数据;
数据头编辑单元,用于将所述预设加密算法和加密参数分别写入加密数据的数据头;其中,所述加密数据用于存储加密后的常量数据;
数据体编辑单元,用于将所述常量数据写入所述加密数据的数据体,并根据所述预设加密算法所述数据体进行加密;
加密数据存储单元,用于将所述加密数据存入所述应用程序对应的动态链接库,并将对所述加密数据的调用方法写入所述应用程序的源代码。
结合第三方面,在本申请第三方面第一种可行的实施方式中,所述数据头编辑单元包括:
加密算法编辑单元,用于将所述预设加密算法写入所述数据头中算法标识字段的预设字节处,所述算法标识字段中除所述预设字节外的其他字节随机写入英文字母;
加密参数编辑单元,用于将各个加密参数依次按照“参数长度+参数内容”的格式写入所述数据头的参数标识字段。
结合第三方面,或者第三方面第一种可行的实施方式,在本申请第三方面第二种可行的实施方式中,所述数据体编辑单元具体被配置为:将各个常量数据依次按照“数据长度+数据内容”的格式写入所述数据体。
结合第三方面第二种可行的实施方式,在本申请第三方面第三种可行的实施方式中,所述装置还包括:
唯一标识记录单元,用于依次记录各个常量数据在所述数据体中的起始位偏移量,得到常量数据唯一标识列表;
唯一标识存储单元,用于将所述常量数据唯一标识列表写入所述应用程序的源代码。
第四方面,本申请提供了一种基于应用程序的数据访问装置,所述装置包括:
加密数据获取单元,用于确定应用程序的源代码中对加密数据的调用方法,并根据所述调用方法从所述应用程序对应的动态链接库中获取所述加密数据;
数据体解密单元,用于从所述加密数据的数据头中读取预设加密算法和加密参数,并根据所述预设加密算法和加密参数对所述加密参数的数据体进行解密;
数据体读取单元,用于从解密后的数据体中读取所需的常量数据。
结合第四方面,本申请第四方面第一种可行的实施方式中,所述数据体读取单元,包括:
唯一标识获取单元,用于获取常量数据唯一标识列表;
偏移量确定单元,用于根据所述常量数据唯一标识列表确定所需的常量数据在所述解密后的数据体中的起始位偏移量;
数据读取单元,用于根据所述起始位偏移量在所述解密后的数据体中读取所需的常量数据。
由以上技术方案可知,本申请实施例将应用程序相关的各个常量数据均视为字符串,写入数据体,再通过预设加密算法对该数据体进行加密,使得常量数据成为不能直接读取的字节流;同时,将该预设加密算法和所采用的加密参数写入数据头,最终将上述数据头和数据体构成的加密数据不直接保留在应用程序的源代码中,而是存入该应用程序对应的动态链接库,仅将相应的调用方法写入应用程序的源代码;在应用程序运行时,可以先通过执行源代码中的调用方法获取上述加密数据,再通过解密等操作获取到所需的常量数据。基于上述数据加密方法,常量数据的实际存储位置是动态链接库,即使对应用程序进行反编译也无法获取常量数据,更无法对常量数据进行修改;而对动态链接库进行反编译是很难操作的。因此,本实施例可以有效防止应用程序相关的常量数据被篡改,提高应用程序的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一个实施例提供的基于应用程序的数据加密方法的流程图;
图2为本申请实施例提供的数据体的结构示意图;
图3为本申请一个实施例提供的基于应用程序的数据访问方法的流程图;
图4为本申请另一个实施例提供的基于应用程序的数据访问方法的流程图;
图5为本申请一个实施例提供的基于应用程序的数据加密装置的结构框图;
图6为本申请另一个实施例提供的基于应用程序的数据加密装置的结构框图;
图7为本申请一个实施例提供的基于应用程序的数据访问装置的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
首先对本申请提供的基于应用程序的数据加密及访问方法的实施例进行说明。图1为本申请一个实施例提供的基于应用程序的数据加密方法流程图;参照图1,该方法包括如下步骤。
S11、确定预设加密算法相关的各个加密参数。
其中,所述预设加密算法用于加密应用程序的常量数据。
S12、将所述预设加密算法和加密参数分别写入加密数据的数据头。
S13、将所述常量数据写入所述加密数据的数据体,并根据所述预设加密算法所述数据体进行加密,得到加密数据体。
S14、将所述数据头和加密数据体构成的加密数据存入所述应用程序对应的动态链接库,并将对所述加密函数的调用方法写入所述应用程序的源代码。
其中,所述加密数据用于存储加密后的常量数据。实际执行时,可以预先为加密数据准备缓存地址,将已确定的数据头各个字段以及数据体分别按预设格式写入该缓存地址,在得到最终的加密数据后,再将加密数据从该缓存地址中取出并存入相应的动态链接库。
上述动态链接库(Dynamic-link library,DLL)存储有可以被与其关联的任一进程所调用的函数,实现这些函数在多个进程中的共享,使进程可以调用不属于其可执行代码的函数。对于不同的操作系统,其动态链接库采用不同的文件格式存储共享函数,例如,Windows系统的动态链接库中为dll文件,Android系统的动态链接库中为so文件。
具体的,上述加密函数以本机代码(即Native Code)的形式存入动态链接库;相应的,在应用程序的源代码中写入相应的本机代码调用方法(即Native Method),即可使得应用程序在运行过程中,通过执行该本机代码调用方法来从动态链接库中调取相应的加密数据。
由以上步骤可知,本实施例将应用程序相关的各个常量数据均视为字符串,写入数据体,再通过预设加密算法对该数据体进行加密,使得常量数据称为不能直接读取的字节流;同时,将该预设加密算法和所采用的加密参数写入数据头,最终将上述数据头和数据体构成的加密数据不直接保留在应用程序的源代码中,而是存入该应用程序对应的动态链接库,仅将相应的调用方法写入应用程序的源代码;在应用程序运行时,可以先通过执行源代码中的调用方法获取上述加密数据,再通过解密等操作获取到所需的常量数据。基于上述数据加密方法,常量数据的实际存储位置是动态链接库,即使对应用程序进行反编译也无法获取常量数据,更无法对常量数据进行修改;而对动态链接库进行反编译是很难操作的。因此,本实施例可以有效防止应用程序相关的常量数据被篡改,提高应用程序的安全性。
本申请一个可行的实施例中,上述加密数据的数据头中除了预设加密算法和加密参数之外,还包括:加密参数总个数,加密数据体总长度,以及数据头总长度三个字段;整个数据头所包含的字段及其所占用的字节数如下:
数据头长度 | 加密算法 | 加密参数个数 | 加密参数1 | 加密参数2 | ... | 加密参数N | 加密数据体长度 |
4字节 | 32字节 | 4字节 | - | - | - | - | 4字节 |
其中,数据头长度字段占用4个字节,标识包括本字段(4个字节)在内的整个数据头的长度;加密算法共占用32个字节;加密参数个数占用4个字节;各个加密参数占用的字节数根据实际情况而定;加密数据体长度占用4个字节,标识紧跟在数据头之后的加密数据体的长度。
上述步骤S12中所述的将预设加密算法写入加密数据的数据头,具体实施方式如下:将所述预设加密算法写入所述数据头中算法标识字段的预设字节处,所述算法标识字段中除所述预设字节外的其他字节随机写入英文字母。
更具体的,在预设加密算法所占用的32个字节中,可以设定第0、3、13、14、25、31个字节为所述预设字节,除此之外的其他字节可以随机填入英文字母或任意字符。
上述步骤S12中所述的将加密参数写入加密数据的数据头,具体实施方式如下:将各个加密参数依次按照“参数长度+参数内容”的格式写入所述数据头的参数标识字段。
即,数据头中每个加密参数字段中的数据既包括加密参数本身,也包括该加密参数所占用的字节数,格式如下:
加密参数i长度 | 加密参数i内容 |
4字节 | - |
其中,i=1,2,…,N;N为加密参数个数。
在本申请另一个可行的实施例中,上述步骤S13所述的将所述常量数据写入所述加密数据的数据体,具体实施方式如下:将各个常量数据依次按照“数据长度+数据内容”的格式所述数据体。
即,本申请实施例将各个常量数据均视为一个字符串,相应的,加密数据的数据体相当于由多个短字符串拼接而成的长字符串,每个短字符串中不仅包括常量数据本身,还包括该常量数据所占用的字节数,格式如下:
常量数据j长度 | 常量数据j内容 |
4字节 | - |
其中,j=1,2,…,M;M为常量数据的总个数。
基于上述数据体中常量数据的存储形式,本实施例提供的数据加密方法,在执行步骤S13生成加密数据体的同时,还包括以下步骤:
依次记录各个常量数据在所述数据体中的起始位偏移量,得到常量数据唯一标识列表;
将所述常量数据唯一标识列表写入所述应用程序的源代码。
由于加密数据的数据体相当于一个长字符串,每个常量数据分别对应其中的一段;为便于在应用程序运行时读取其中的某个常量数据,每写入一个常量数据对应的字符串,就在常量数据唯一标识列表中添加一个字符串标识,表征该常量数据对应的字符串(包括标识该常量数据长度的4个字节)在数据体中的起始位偏移量。如图2所示数据体,其对应的常量数据唯一标识列表如下:
字符串标识1=0;
字符串标识2=18;
字符串标识3=40;
字符串标识4=55;
……;
字符串标识M=2050。
可见,上述常量数据唯一标识列表实际为一组整数常量;为进一步保证常量数据的安全性,在将该常量数据唯一标识列表插入应用程序的源代码中时,可以按照预设修改规则将这一组整数常量中的各个标识名称进行修改。
根据上述常量数据唯一标识列表,可以准确、快速地从解密后的数据体对应的长字符串中读取某一个或几个常量数据的对应的短字符串。
与上述基于应用程序的数据加密方法相对应的,本申请实施例还提供了一种基于应用程序的数据访问方法,用于在应用程序运行时访问通过上述数据加密方法加密的常量数据。如图3所示,该数据方法方法包括如下步骤:
S21、确定应用程序的源代码中对加密数据的调用方法,并根据所述调用方法从所述应用程序对应的动态链接库中获取所述加密数据;
S22、从所述加密数据的数据头中读取预设加密算法和加密参数;
S23、根据所述预设加密算法和加密参数对所述加密参数的数据体进行解密;
S24、从解密后的数据体中读取所需的常量数据。
由以上技术方案可知,在应用程序运行时,要获取相关的常量数据,必须通过执行源代码中的调用方法,来从动态链接库中调取加密数据,再根据该加密数据的数据头中存储的预设加密算法对该加密数据的数据体进行解密,才能从解密后的数据体中读取到各个常量数据。可见,基于本申请实施例,常量数据的实际存储位置是动态链接库,即使对应用程序进行反编译也无法获取常量数据,更无法对常量数据进行修改;而对动态链接库进行反编译是很难操作的。因此,本实施例可以有效防止应用程序相关的常量数据被篡改,提高应用程序的安全性。
参照图4,基于上文数据加密方法实施例所述的常量数据唯一标识列表,上述步骤S24所述的从解密后的数据体中读取所需的常量数据,具体包括如下步骤:
S241、获取常量数据唯一标识列表;
S242、根据所述常量数据唯一标识列表确定所需的常量数据在所述解密后的数据体中的起始位偏移量;
S243、根据所述起始位偏移量在所述解密后的数据体中读取所需的常量数据。
仍以图2所示数据体为例,在应用程序运行时得到其解密后的数据体后,根据应用程序源代码中的常量数据体唯一标识列表,确定要读取的常量数据对应的起始位偏移量为55,则从解密后的数据体第55个字节开始读取,根据上文所述的“数据长度+数据内容”的存储格式,先读取4个字节,确定该常量数据的实际字节数x,再继续读取x个字节,即可得到相应的常量数据。
可见,上述实施例通过常量数据唯一标识列表实现从解密后的数据体对应的长字符串中读取某一个或几个常量数据对应的短字符串,可以提高数据读取速度及准确率。
另外,本申请实施例还提供了一种计算机存储介质,例如可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等;该计算机存储介质中存储有程序,当所述存储介质中的程序由相应设备的处理器执行时,使得该设备能够执行上述方法实施例中记载的任一种数据加密方法、数据访问方法中的部分或全部步骤。
与上述基于应用程序的数据加密方法的实施例相对应,本申请实施例还提供了一种基于应用程序的数据加密装置,图5为该装置的一种结构示意图。参照图5,该装置包括:预处理单元101、数据头编辑单元102、数据体编辑单元103和加密数据存储单元104。
其中,该预处理单元101用于,确定预设加密算法相关的各个加密参数;其中,所述预设加密算法用于加密应用程序的常量数据。
该数据头编辑单元102用于,将所述预设加密算法和加密参数分别写入加密数据的数据头;其中,所述加密数据用于存储加密后的常量数据。
该数据体编辑单元103用于,将所述常量数据写入所述加密数据的数据体,并根据所述预设加密算法所述数据体进行加密。
该加密数据存储单元104用于,将所述加密数据存入所述应用程序对应的动态链接库,并将对所述加密数据的调用方法写入所述应用程序的源代码。
由以上技术方案可知,本申请实施例将应用程序相关的各个常量数据均视为字符串,写入数据体,再通过预设加密算法对该数据体进行加密,使得常量数据称为不能直接读取的字节流;同时,将该预设加密算法和所采用的加密参数写入数据头,最终将上述数据头和数据体构成的加密数据不直接保留在应用程序的源代码中,而是存入该应用程序对应的动态链接库,仅将相应的调用方法写入应用程序的源代码;在应用程序运行时,可以先通过执行源代码中的调用方法获取上述加密数据,再通过解密等操作获取到所需的常量数据。基于上述数据加密方法,常量数据的实际存储位置是动态链接库,即使对应用程序进行反编译也无法获取常量数据,更无法对常量数据进行修改;而对动态链接库进行反编译是很难操作的。因此,本实施例可以有效防止应用程序相关的常量数据被篡改,提高应用程序的安全性。
在本申请一个可行的实施方式中,上述数据头编辑单元102,具体可以包括:加密算法编辑单元和加密参数编辑单元。
其中,该加密算法编辑单元,用于将所述预设加密算法写入所述数据头中算法标识字段的预设字节处,所述算法标识字段中除所述预设字节外的其他字节随机写入英文字母;
该加密参数编辑单元,用于将各个加密参数依次按照“参数长度+参数内容”的格式写入所述数据头的参数标识字段。
在本申请一个可行的实施方式中,上述数据体编辑单元103具体被配置为:将各个常量数据依次按照“数据长度+数据内容”的格式写入所述数据体。
参照图6,上述数据体中常量数据的存储形式,本实施例提供的数据加密装置还包括:唯一标识记录单元105和唯一标识存储单元106。
其中,唯一标识记录单元105用于,依次记录各个常量数据在所述数据体中的起始位偏移量,得到常量数据唯一标识列表;
唯一标识存储单元106用于,将所述常量数据唯一标识列表写入所述应用程序的源代码。
可见,上述实施例根据上述常量数据唯一标识列表,可以准确、快速地从解密后的数据体对应的长字符串中读取某一个或几个常量数据的对应的短字符串。
与上述基于应用程序的数据访问方法相对应的,本申请实施例还提供了一种基于应用程序的数据访问装置,用于在应用程序运行时访问通过上述数据加密方法加密的常量数据。如图7所示,该装置包括:加密数据获取单元201、数据体解密单元202和数据体读取单元203。
其中,该加密数据获取单元201用于,确定所述应用程序的源代码中对加密数据的调用方法,并根据所述调用方法从所述应用程序对应的动态链接库中获取所述加密数据;
该数据体解密单元202用于,从所述加密数据的数据头中读取预设加密算法和加密参数,并根据所述预设加密算法和加密参数对所述加密参数的数据体进行解密;
该数据体读取单元203用于,从解密后的数据体中读取所需的常量数据。
由以上技术方案可知,在应用程序运行时,要获取相关的常量数据,必须通过执行源代码中的调用方法,来从动态链接库中调取加密数据,再根据该加密数据的数据头中存储的预设加密算法对该加密数据的数据体进行解密,才能从解密后的数据体中读取到各个常量数据。可见,基于本申请实施例,常量数据的实际存储位置是动态链接库,即使对应用程序进行反编译也无法获取常量数据,更无法对常量数据进行修改;而对动态链接库进行反编译是很难操作的。因此,本实施例可以有效防止应用程序相关的常量数据被篡改,提高应用程序的安全性。
在本申请一个可行的实施方式中,对应于图6所示的数据加密装置,上述数据体读取单元203,具体可以包括:
唯一标识获取单元,用于获取常量数据唯一标识列表;
偏移量确定单元,用于根据所述常量数据唯一标识列表确定所需的常量数据在所述解密后的数据体中的起始位偏移量;
数据读取单元,用于根据所述起始位偏移量在所述解密后的数据体中读取所需的常量数据。
可见,上述实施例根据常量数据唯一标识列表实现从解密后的数据体对应的长字符串中读取某一个或几个常量数据对应的短字符串,可以提高数据读取速度及准确率。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种对应用程序的常量数据进行加密的方法,其特征在于,包括:
确定预设加密算法相关的各个加密参数;其中,所述预设加密算法用于加密应用程序的常量数据;
将所述预设加密算法写入加密数据的数据头中算法标识字段的多个预设字节处,所述算法标识字段中除所述预设字节外的其他字节随机写入英文字母,所述多个预设字节至少部分不连续;其中,所述加密数据用于存储加密后的常量数据;
将所述加密参数写入加密数据的数据头;
将所述常量数据写入所述加密数据的数据体,并根据所述预设加密算法对所述数据体进行加密;
将所述加密数据存入所述应用程序对应的动态链接库,并将对所述加密数据的调用方法写入所述应用程序的源代码。
2.根据权利要求1所述的方法,其特征在于,所述将所述加密参数写入加密数据的数据头的步骤包括:
将各个加密参数依次按照“参数长度+参数内容”的格式写入所述数据头的参数标识字段。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述常量数据写入所述加密数据的数据体的步骤包括:
将各个常量数据依次按照“数据长度+数据内容”的格式写入所述数据体。
4.根据权利要求3述的方法,其特征在于,还包括:
依次记录各个常量数据在所述数据体中的起始位偏移量,得到常量数据唯一标识列表;
将所述常量数据唯一标识列表写入所述应用程序的源代码。
5.一种对应用程序的常量数据进行访问的方法,其特征在于,包括:
确定应用程序的源代码中对加密数据的调用方法,并根据所述调用方法从所述应用程序对应的动态链接库中获取所述加密数据;
从所述加密数据的数据头中读取预设加密算法和加密参数,所述预设加密算法位于所述加密数据的数据头中算法标识字段的多个预设字节处,所述算法标识字段中除所述预设字节外的其他字节为随机写入的英文字母,所述多个预设字节至少部分不连续;
根据所述预设加密算法和加密参数对所述加密参数的数据体进行解密;
从解密后的数据体中读取所需的常量数据。
6.根据权利要求5所述的方法,其特征在于,所述从解密后的数据体中读取所需的常量数据的步骤包括:
获取常量数据唯一标识列表;
根据所述常量数据唯一标识列表确定所需的常量数据在所述解密后的数据体中的起始位偏移量;
根据所述起始位偏移量在所述解密后的数据体中读取所需的常量数据。
7.一种对应用程序的常量数据进行加密的装置,其特征在于,包括:
预处理单元,用于确定预设加密算法相关的各个加密参数;其中,所述预设加密算法用于加密应用程序的常量数据;
数据头编辑单元,用于将所述预设加密算法和加密参数分别写入加密数据的数据头;其中,所述加密数据用于存储加密后的常量数据;所述数据头编辑单元包括加密算法编辑单元,用于将所述预设加密算法写入所述数据头中算法标识字段的预设字节处,所述算法标识字段中除所述预设字节外的其他字节随机写入英文字母;
数据体编辑单元,用于将所述常量数据写入所述加密数据的数据体,并根据所述预设加密算法对所述数据体进行加密;
加密数据存储单元,用于将所述加密数据存入所述应用程序对应的动态链接库,并将对所述加密数据的调用方法写入所述应用程序的源代码。
8.根据权利要求7所述的装置,其特征在于,所述数据头编辑单元还包括:
加密参数编辑单元,用于将各个加密参数依次按照“参数长度+参数内容”的格式写入所述数据头的参数标识字段。
9.根据权利要求7或8所述的装置,其特征在于,所述数据体编辑单元具体被配置为:将各个常量数据依次按照“数据长度+数据内容”的格式写入所述数据体。
10.根据权利要求9所述的装置,其特征在于,还包括:
唯一标识记录单元,用于依次记录各个常量数据在所述数据体中的起始位偏移量,得到常量数据唯一标识列表;
唯一标识存储单元,用于将所述常量数据唯一标识列表写入所述应用程序的源代码。
11.一种对应用程序的常量数据进行访问的装置,其特征在于,包括:
加密数据获取单元,用于确定应用程序的源代码中对加密数据的调用方法,并根据所述调用方法从所述应用程序对应的动态链接库中获取所述加密数据;
数据体解密单元,用于从所述加密数据的数据头中读取预设加密算法和加密参数,并根据所述预设加密算法和加密参数对所述加密参数的数据体进行解密,所述预设加密算法位于所述加密数据的数据头中算法标识字段的多个预设字节处,所述算法标识字段中除所述预设字节外的其他字节为随机写入的英文字母,所述多个预设字节处至少部分不连续;
数据体读取单元,用于从解密后的数据体中读取所需的常量数据。
12.根据权利要求11所述的装置,其特征在于,所述数据体读取单元,包括:
唯一标识获取单元,用于获取常量数据唯一标识列表;
偏移量确定单元,用于根据所述常量数据唯一标识列表确定所需的常量数据在所述解密后的数据体中的起始位偏移量;
数据读取单元,用于根据所述起始位偏移量在所述解密后的数据体中读取所需的常量数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610016296.5A CN106960156B (zh) | 2016-01-08 | 2016-01-08 | 基于应用程序的数据加密及访问方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610016296.5A CN106960156B (zh) | 2016-01-08 | 2016-01-08 | 基于应用程序的数据加密及访问方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106960156A CN106960156A (zh) | 2017-07-18 |
CN106960156B true CN106960156B (zh) | 2020-03-13 |
Family
ID=59480703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610016296.5A Active CN106960156B (zh) | 2016-01-08 | 2016-01-08 | 基于应用程序的数据加密及访问方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106960156B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107920069A (zh) * | 2017-11-15 | 2018-04-17 | 中国联合网络通信集团有限公司 | 加密终端内应用程序安全处理方法及装置 |
CN108830092B (zh) * | 2018-05-29 | 2020-04-24 | 成都大象分形智能科技有限公司 | 涉及数据随机加密的神经网络模型加密保护系统及方法 |
CN108830096B (zh) * | 2018-06-21 | 2021-02-26 | 广州华多网络科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN110119601B (zh) * | 2019-03-28 | 2022-07-12 | 江苏通付盾信息安全技术有限公司 | 基于应用程序安装包的程序加固方法及装置 |
CN110119600A (zh) * | 2019-03-28 | 2019-08-13 | 江苏通付盾信息安全技术有限公司 | 基于应用程序安装包的程序加固方法及装置 |
CN110110506B (zh) * | 2019-03-28 | 2021-07-02 | 江苏通付盾信息安全技术有限公司 | 基于应用程序安装包的程序加固方法及装置 |
CN110647760A (zh) * | 2019-09-23 | 2020-01-03 | 北京信安世纪科技股份有限公司 | 一种脚本加密、执行方法及装置 |
CN111246480A (zh) * | 2020-01-10 | 2020-06-05 | 中移(杭州)信息技术有限公司 | 基于sim卡的应用通信方法、系统、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1873676B1 (en) * | 2005-03-25 | 2013-11-20 | Panasonic Corporation | Program converting device, secure processing device, computer program, and recording medium |
CN102402670A (zh) * | 2011-08-03 | 2012-04-04 | 广东欧珀移动通信有限公司 | 一种文件加解密方法 |
CN104239757B (zh) * | 2014-09-30 | 2017-04-19 | 北京奇虎科技有限公司 | 应用程序防止逆向的方法及装置、运行方法及终端 |
CN105005718B (zh) * | 2015-06-23 | 2018-02-13 | 电子科技大学 | 一种利用马尔可夫链实现代码混淆的方法 |
-
2016
- 2016-01-08 CN CN201610016296.5A patent/CN106960156B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106960156A (zh) | 2017-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106960156B (zh) | 基于应用程序的数据加密及访问方法、装置 | |
US20110271350A1 (en) | method for protecting software | |
KR101623096B1 (ko) | 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법 | |
CN108363911B (zh) | 一种Python脚本混淆、水印的方法及装置 | |
CN106599629B (zh) | 一种安卓应用程序加固方法及装置 | |
CN105095771B (zh) | 一种共享目标文件的保护方法及装置 | |
CN108399319B (zh) | 源代码保护方法、应用服务器及计算机可读存储介质 | |
CN113569269B (zh) | 一种代码混淆的加密方法、装置、设备及可读介质 | |
CN112115427A (zh) | 代码混淆方法、装置、电子设备及存储介质 | |
CN110825639A (zh) | 一种防篡改时间的软件License验证方法 | |
CN111914225A (zh) | 一种源代码保护系统及源代码加密方法 | |
CN108064382B (zh) | 一种基于Ukey的软件解密的方法及终端 | |
CN106570395A (zh) | 操作系统命令的安全保护方法 | |
US6675297B1 (en) | Method and apparatus for generating and using a tamper-resistant encryption key | |
CN109992974A (zh) | 虚拟机字节码文件的保护方法、设备及可读存储介质 | |
CN112532379A (zh) | 一种文件保护方法及装置 | |
EP3574425B1 (en) | Method to secure a software code | |
CN107577715B (zh) | So文件的保护方法及装置 | |
CN111198692A (zh) | 一种安装包的生成方法和装置 | |
CN106909469B (zh) | 一种文件校验方法和装置 | |
CN111291333A (zh) | 一种Java应用程序加密方法及装置 | |
CN107180188B (zh) | 一种基于动态污点分析对加密应用的明文提取的系统 | |
KR101556908B1 (ko) | 프로그램 보호 장치 | |
CN113010855B (zh) | 一种获取数据的方法、装置、介质及计算机设备 | |
KR102341431B1 (ko) | 피보호 실행 파일을 보호하는 방법 및 이러한 방법을 수행하는 장치 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200709 Address after: 310052 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: Alibaba (China) Co.,Ltd. Address before: 510627 Guangdong city of Guangzhou province Whampoa Tianhe District Road No. 163 Xiping Yun Lu Yun Ping B radio square 14 storey tower Patentee before: GUANGZHOU UCWEB COMPUTER TECHNOLOGY Co.,Ltd. |