CN105678120A - 一种应用程序安全防护方法和服务器 - Google Patents
一种应用程序安全防护方法和服务器 Download PDFInfo
- Publication number
- CN105678120A CN105678120A CN201410669851.5A CN201410669851A CN105678120A CN 105678120 A CN105678120 A CN 105678120A CN 201410669851 A CN201410669851 A CN 201410669851A CN 105678120 A CN105678120 A CN 105678120A
- Authority
- CN
- China
- Prior art keywords
- application program
- sha1
- test value
- proof test
- server
- 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
Landscapes
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种应用程序安全防护方法和服务器,其中,所述方法包括:服务器接收客户端发来的第一应用程序;所述服务器对所述第一应用程序的参数和/或指令进行修改,得到第二应用程序,所述第二应用程序能够正常运行,且当使用逆向工具解析所述第二应用程序时,所述第二应用程序能够导致所述逆向工具报错退出;所述服务器将所述第二应用程序发给所述客户端。
Description
技术领域
本发明涉及通信技术,尤其涉及一种应用程序安全防护方法和服务器。
背景技术
目前,基于移动平台(也称移动操作系统)的应用程序(软件)越来越广泛,但应用程序的安全性较差。这里,应用程序的安全性主要是指应用程序被逆向工具反编译,反编译后的代码可读性强,易分析、易修改、易二次打包,且修改后不易追查。
以Android平台例,基于虚拟机(如Dalvik虚拟机)方式运行的应用程序(如Java应用程序)就极容易被逆向工具反编译。
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑。
Dalvik是用于Android平台的Java虚拟机,是Android移动设备平台的核心组成部分之一。Dalvik可以支持已转换为.dex(即DalvikExecutable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网。
发明内容
为解决现有存在的技术问题,本发明实施例提供一种应用程序安全防护方法和服务器。
本发明实施例提供的一种应用程序安全防护方法,所述方法包括:
服务器接收客户端发来的第一应用程序;
所述服务器对所述第一应用程序的参数和/或指令进行修改,得到第二应用程序,所述第二应用程序能够正常运行,且当使用逆向工具解析所述第二应用程序时,所述第二应用程序能够导致所述逆向工具报错退出;
所述服务器将所述第二应用程序发给所述客户端。
其中,所述服务器对所述第一应用程序的参数和/或指令进行修改,包括:
所述服务器将所述第一应用程序中的第一参数修改为非法参数,所述第一参数是所述第一应用程序在运行时不调用的参数;或者,
所述服务器将所述第一应用程序中的第一指令修改为非法指令,所述第一指令是所述第一应用程序在运行时不调用的指令;或者,
所述服务器在所述第一应用程序中加入第二参数,所述第二参数为非法参数,且所述第二参数是所述第一应用程序在运行时不调用的参数;或者,
所述服务器在所述第一应用程序中加入第二指令,所述第二指令为非法指令,且所述第二指令是所述第一应用程序在运行时不调用的指令。
其中,所述服务器将所述第一应用程序中的第一参数修改为非法参数,包括:
所述服务器将所述第一应用程序中的合法指令集操作码后的操作码参数修改为非法参数。
其中,所述操作码参数至少包括所述第一应用程序中的无效引用、不存在的地址、不存在的索引值中的一种。
其中,所述方法还包括:
所述服务器保存所述第二应用程序的第一安全哈希算法SHA1校验值;
所述服务器为所述第二应用程序设置校验模块,包含有所述校验模块的应用程序在运行时能够向所述服务器发送校验信息,所述校验信息包括所述应用程序的第二SHA1校验值;
所述服务器将收到的所述第二SHA1校验值与保存的所述第一SHA1校验值进行对比;
当所述第二SHA1校验值与所述第一SHA1校验值匹配时,所述服务器判定发出所述校验信息的应用程序是所述第二应用程序;
当所述第二SHA1校验值与所述第一SHA1校验值不匹配时,所述服务器判定发出所述校验信息的应用程序是基于所述第二应用程序进行逆向修改得到的。
其中,所述方法还包括:
所述服务器为所述第二应用程序生成一组公钥证书和私钥证书,给所述校验模块设置所述公钥证书,所述服务器自身保存所述私钥证书;
所述服务器为所述第二应用程序分配身份标识号码ID,并给所述校验模块设置所述ID,所述ID与所述私钥证书相对应;相应的,所述校验信息还包括加密SHA1校验值和所述ID,所述加密SHA1校验值是所述校验模块使用所述公钥证书对所述第二SHA1校验值进行加密生成的;
所述服务器根据收到的所述校验信息中的所述ID找到相对应的私钥证书,并使用所述私钥证书对所述加密SHA1校验值进行解码,得到第二SHA1校验值。
其中,所述方法还包括:
所述服务器给所述校验模块设置校验算法,所述服务器自身保存所述校验算法;相应的,所述校验信息还包括第二哈希运算消息认证码HMAC,所述第二HMAC为所述校验模块使用所述校验算法对所述ID和所述加密SHA1校验值进行校验得到的;
所述服务器使用所述校验算法对收到的所述校验信息中的所述ID和所述加密SHA1校验值进行校验得到第一HMAC;
将所述第一HMAC和所述第二HMAC进行对比,当所述第一HMAC和所述第二HMAC一致时,执行根据所述ID找到相对应的私钥证书的步骤。
其中,所述服务器将所述第二应用程序发给所述客户端之后,所述方法还包括:
所述服务器接收所述第二应用程序发送的校验信息,其中,所述检验信息包括:所述第二应用程序的ID、加密SHA1校验值和HMAC;其中,所述第二应用程序的ID与所述服务器为所述第一应用程序分配的ID相同;所述加密SHA1校验值为使用所述服务器预置入所述第一应用程序中的公钥,对所述第一应用程序的SHA1校验值进行加密后生成的校验值;所述HMAC为对所述第二应用程序的ID和所述加密SHA1校验值进行校验后生成的结果;
所述服务器根据所述校验信息,判断所述第二应用程序是否被修改。
其中,所述服务器根据所述校验信息,判断所述第二应用程序是否被修改,包括:
所述服务器使用所述校验信息中的HMAC判断所述检验信息是否正确;
在确定正确后,根据所述校验信息中的所述ID获取与所述第一应用程序中的公钥相对应的私钥,使用所述私钥对所述加密SHA1校验值进行解密,获得解密后的SHA1校验值;
当确定解密后的所述SHA1校验值与所述服务器中存储的所述第一应用程序的SHA1校验值不匹配时,确定所述第二应用程序被修改。
其中,所述服务器为所述第二应用程序设置校验模块,包括:
所述服务器以加入JAR库或SO库的方式为所述第二应用程序设置校验模块,包括:将编写的校验模块生成JAR库或SO库;调用所述JAR库或SO库,生成安卓安装包APK_A;将所述APK_A反编译为Smali_A;将所述第二应用程序反编译为Smali_B;分析、提取Smali_A中调用JAR库或SO库的部分,合并入Smali_B中,并进行相应的修改;将Smali_B编译为APK,完成校验模块的添加。
其中,所述服务器在收到所述第一应用程序之后,所述方法还包括:
所述服务器以加入JAR库或SO库的方式为所述第二应用程序设置在线升级功能模块,所述在线升级功能模块通过加入、修改软件字节码的方式被所述第二应用程序调用,所述在线升级功能模块用于连接所述服务器,对所述JAR库和/或SO库进行定期更新。
本发明实施例提供一种服务器,所述服务器包括:
接收单元,用于接收客户端发来的第一应用程序;
处理单元,用于对所述第一应用程序的参数和/或指令进行修改,得到第二应用程序,所述第二应用程序能够正常运行,且当使用逆向工具解析所述第二应用程序时,所述第二应用程序能够导致所述逆向工具报错退出;
发送单元,用于将所述第二应用程序发给所述客户端。
其中,所述处理单元,具体用于将所述第一应用程序中的第一参数修改为非法参数,所述第一参数是所述第一应用程序在运行时不调用的参数;或者,
将所述第一应用程序中的第一指令修改为非法指令,所述第一指令是所述第一应用程序在运行时不调用的指令;或者,
在所述第一应用程序中加入第二参数,所述第二参数为非法参数,且所述第二参数是所述第一应用程序在运行时不调用的参数;或者,
在所述第一应用程序中加入第二指令,所述第二指令为非法指令,且所述第二指令是所述第一应用程序在运行时不调用的指令。
其中,所述处理单元,具体用于将所述第一应用程序中的合法指令集操作码后的操作码参数修改为非法参数。
其中,所述操作码参数至少包括所述第一应用程序中的无效引用、不存在的地址、不存在的索引值中的一种。
其中,所述处理单元,还用于保存所述第二应用程序的第一安全哈希算法SHA1校验值;
为所述第二应用程序设置校验模块,包含有所述校验模块的应用程序在运行时能够向所述服务器发送校验信息,所述校验信息包括所述应用程序的第二SHA1校验值;
将所述收到的第二SHA1校验值与保存的所述第一SHA1校验值进行对比;
当所述第二SHA1校验值与所述第一SHA1校验值匹配时,判定发出所述校验信息的应用程序是所述第二应用程序;
当所述第二SHA1校验值与所述第一SHA1校验值不匹配时,判定发出所述校验信息的应用程序是基于所述第二应用程序进行逆向修改得到的。
其中,所述处理单元,还用于为所述第二应用程序生成一组公钥证书和私钥证书,给所述校验模块设置所述公钥证书,使所述服务器保存所述私钥证书;
为所述第二应用程序分配身份标识号码ID,并给所述校验模块设置所述ID,所述ID与所述私钥证书相对应;相应的,所述校验信息还包括加密SHA1校验值和所述ID,所述加密SHA1校验值是所述校验模块使用所述公钥证书对所述第二SHA1校验值进行加密生成的;
根据收到的所述校验信息中的所述ID找到相对应的私钥证书,并使用所述私钥证书对所述加密SHA1校验值进行解码,得到第二SHA1校验值。
其中,所述处理单元,还用于给所述校验模块设置校验算法,使所述服务器保存所述校验算法;相应的,所述校验信息还包括第二哈希运算消息认证码HMAC,所述第二HMAC为所述校验模块使用所述校验算法对所述ID和所述加密SHA1校验值进行校验得到的;
使用所述校验算法对收到的所述校验信息中的所述ID和所述加密SHA1校验值进行校验得到第一HMAC;
将所述第一HMAC和所述第二HMAC进行对比,当所述第一HMAC和所述第二HMAC一致时,执行根据所述ID找到相对应的私钥证书的操作。
其中,所述处理单元,还用于接收所述第二应用程序发送的校验信息,其中,所述检验信息包括:所述第二应用程序的ID、加密SHA1校验值和HMAC;其中,所述第二应用程序的ID与所述服务器为所述第一应用程序分配的ID相同;所述加密SHA1校验值为使用所述服务器预置入所述第一应用程序中的公钥,对所述第一应用程序的SHA1校验值进行加密后生成的校验值;所述HMAC为对所述第二应用程序的ID和所述加密SHA1校验值进行校验后生成的结果;
以及用于根据所述校验信息,判断所述第二应用程序是否被修改。
其中,所述处理单元,具体用于使用所述校验信息中的HMAC判断所述检验信息是否正确;
在确定正确后,根据所述校验信息中的所述ID获取与所述第一应用程序中的公钥相对应的私钥,使用所述私钥对所述加密SHA1校验值进行解密,获得解密后的SHA1校验值;
当确定解密后的所述SHA1校验值与所述服务器中存储的所述第一应用程序的SHA1校验值不匹配时,确定所述第二应用程序被修改。
其中,所述处理单元,具体用于以加入JAR库或SO库的方式为所述第二应用程序设置校验模块,包括:将编写的校验模块生成JAR库或SO库;调用所述JAR库或SO库,生成安卓安装包APK_A;将所述APK_A反编译为Smali_A;将所述第二应用程序反编译为Smali_B;分析、提取Smali_A中调用JAR库或SO库的部分,合并入Smali_B中,并进行相应的修改;将Smali_B编译为APK,完成校验模块的添加。
其中,所述处理单元,还用于以加入JAR库或SO库的方式为所述第二应用程序设置在线升级功能模块,所述在线升级功能模块通过加入、修改软件字节码的方式被所述第二应用程序调用,所述在线升级功能模块用于连接所述服务器,对所述JAR库和/或SO库进行定期更新。
由上可知,本发明实施例的技术方案包括:服务器接收客户端发来的第一应用程序;所述服务器对所述第一应用程序的参数和/或指令进行修改,得到第二应用程序,所述第二应用程序能够正常运行,且当使用逆向工具解析所述第二应用程序时,所述第二应用程序能够导致所述逆向工具报错退出;所述服务器将所述第二应用程序发给所述客户端。对第一应用程序的参数和/或指令进行修改得到的第二应用程序能够正常运行,且当使用逆向工具解析所述第二应用程序时,所述第二应用程序能够导致所述逆向工具报错退出。由此,本发明实施例能够避免被逆向工具反编译,从而达到应用程序安全防护的目的。
附图说明
图1为本发明提供的一种应用程序安全防护方法的另一实施例的实现流程图;
图2为DEX文件结构的示意图;
图3为本发明提供的一种应用程序安全防护方法的又一实施例的实现流程图;
图4为本发明提供的一种服务器的实施例的结构示意图。
具体实施方式
本发明实施例提供的一种应用程序安全防护方法,可以采用以下方式实现:通过修改应用程序中的加密标志位来欺骗逆向工具,但这种安全加固方法容易分析、容易还原,安全性较差,而且应用程序被逆向修改也无法追查,可追溯性差。
本发明实施例提供的另一种应用程序安全防护方法,可以采用以下方式实现:将真实的应用程序进行加密处理,运行时由壳程序进行解密并启动,但由于壳程序也会被逆向工具分析,因此安全性较差,此外,这种方法对移动平台的版本、运行环境有严格的限制,无法适应多种版本的移动平台,兼容性较差。
由此,本发明提供了一种应用程序安全防护方法的另一实施例,如图1所示,所述方法包括:
步骤101、服务器接收客户端发来的第一应用程序。
其中,所述第一应用程序适用于移动平台。但不限于此,在实际应用中,任意其它的适当平台也同样适用,例如,均使用Android系统作为操作系统的平台。
在实际应用中,当系统平台为Android系统时,所述第一应用程序可以是安卓安装包(AndroidPackage,APK)应用程序,所述APK应用程序包括DEX文件,所述APK应用程序可以采用Java语音编写。
如图2所示,DEX文件包括以下几个主要的结构体:字符串(string_ids)、类型(type_ids)、原型(proto_ids)、成员变量(field_ids)、成员函数(methods_ids)、类(class_defs),其中,字符串和类型为两个基础的结构体,其余结构体中的信息都以这两个基础结构体的索引形式存在,这样构成一个完整的有机体。数据(data)结构体中包括了应用程序的所有指令,各指令对字符串、类型、原型、类及类的成员变量、成员函数的操作都是以索引号的形式对应到上面的几个主要结构体的。目前,指令集通常以Dalvik字节码形式存在,指令集操作码长度占8Bit。
步骤102、所述服务器对所述第一应用程序的参数和/或指令进行修改,得到第二应用程序,所述第二应用程序能够正常运行,且当使用逆向工具解析所述第二应用程序时,所述第二应用程序能够导致所述逆向工具报错退出;
具体的,所述服务器对所述第一应用程序的参数和/或指令进行修改,包括:
所述服务器将所述第一应用程序中的第一参数修改为非法参数,所述第一参数是所述第一应用程序在运行时不调用的参数;或者,
所述服务器将所述第一应用程序中的第一指令修改为非法指令,所述第一指令是所述第一应用程序在运行时不调用的指令;或者,
所述服务器在所述第一应用程序中加入第二参数,所述第二参数为非法参数,且所述第二参数是所述第一应用程序在运行时不调用的参数;或者,
所述服务器在所述第一应用程序中加入第二指令,所述第二指令为非法指令,且所述第二指令是所述第一应用程序在运行时不调用的指令。
这里需要说明的是,所述服务器将所述第一应用程序中的第一参数修改为非法参数时,可以将所述第一应用程序中的合法指令集操作码后的操作码参数修改为非法参数。其中,所述非法参数可以是不存在的地址、索引值、无效引用等,当逆向工具解析到所述非法参数时,会因为无法找到所述非法参数的对应位置而报错退出,因此应用程序能够避免被逆向分析,达到安全防护的目的。相似的,所述非法指令可以包括0xFC、0xFD等,逆向工具解析到所述非法指令时,会报错并退出。
例如,对于应用程序的一个指令集const-stringv12,“xx”,所述指令集的字节码为1A0C5C00,其中,1A对应于const-string,0C对应于v12,5C00对应于“xx”,即5C00作为参数指示字符串“xx”的索引值。当所述5C00是所述应用程序在运行时不调用的参数时,将所述5C00修改为非法参数,如非法索引值5CFF,逆向工具解析到所述5CFF时,会因为无法找到5CFF的对应位置而出现错误并退出。相似的,当所述1A是所述应用程序在运行时不调用的指令时,将所述1A修改为非法指令,如FC,逆向工具解析到所述非法指令时,会报错并退出。
步骤103、所述服务器将所述第二应用程序发给所述客户端。
本实施例中对第一应用程序的参数和/或指令进行修改得到的第二应用程序能够正常运行,且当使用逆向工具解析所述第二应用程序时,所述第二应用程序能够导致所述逆向工具报错退出,由此,本发明实施例能够避免被逆向工具反编译,从而达到应用程序安全防护的目的。
本发明提供了一种应用程序安全防护方法的又一实施例,如图3所示,所述方法包括:
步骤301、服务器接收客户端发来的第一应用程序。
本实施例中,设定所述第一应用程序应用于移动平台。
步骤302、所述服务器对所述第一应用程序的参数和/或指令进行修改,得到第二应用程序,所述第二应用程序能够在所述移动平台上正常运行,且当使用逆向工具解析所述第二应用程序时,所述第二应用程序能够导致所述逆向工具报错退出;
具体的,所述服务器对所述第一应用程序的参数和/或指令进行修改,包括:
所述服务器将所述第一应用程序中的第一参数修改为非法参数,所述第一参数是所述第一应用程序在运行时不调用的参数;或者,
所述服务器将所述第一应用程序中的第一指令修改为非法指令,所述第一指令是所述第一应用程序在运行时不调用的指令;或者,
所述服务器在所述第一应用程序中加入第二参数,所述第二参数为非法参数,且所述第二参数是所述第一应用程序在运行时不调用的参数;或者,
所述服务器在所述第一应用程序中加入第二指令,所述第二指令为非法指令,且所述第二指令是所述第一应用程序在运行时不调用的指令。
步骤303、所述服务器保存所述第二应用程序的第一安全哈希算法SHA1校验值;
这里需要说明的是,DEX文件头中包含SHA1校验值,DEX文件生成后所述SHA1校验值保持不变,因此可以作为判断DEX文件是否被修改的依据。
步骤304、所述服务器为所述第二应用程序设置校验模块,包含有所述校验模块的应用程序在运行时能够向所述服务器发送校验信息,所述校验信息包括所述应用程序的第二SHA1校验值。
在实际应用中,所述服务器以加入JAR库或SO库的方式为所述第二应用程序设置校验模块。
具体的,以添加JAR库为例进行说明:
1、编写校验模块,生成JAR库;
2、编写Android应用程序1,调用JAR库,生成应用程序APK_A;
3、将应用程序APK_A反编译为Smali_A;
4、将待加固的APK反编译为Smali_B;
5、分析、提取Smali_A中调用JAR库的部分,合并入Smali_B中,并进行相应的修改;
6、最后将Smali_B编译为APK,就完成了校验模块的添加。
这里,可以理解的是,在实际应用中对上述步骤303、304的顺序不做限定。
步骤305、所述服务器将所述第二应用程序发给所述客户端。
步骤306、所述服务器将收到的所述第二SHA1校验值与保存的所述第一SHA1校验值进行对比,当所述第二SHA1校验值与所述第一SHA1校验值匹配时,进入步骤307,当所述第二SHA1校验值与所述第一SHA1校验值不匹配时,进入步骤308。
步骤307、所述服务器判定发出所述校验信息的应用程序是所述第二应用程序,结束本次流程。
步骤308、所述服务器判定发出所述校验信息的应用程序是基于所述第二应用程序进行逆向修改得到的,结束本次流程。
本实施例中,所述服务器为应用程序设置校验模块,由此服务器可以根据SHA1校验值判断发送校验信息的应用程序是否被修改,从而能对软件修改、二次打包等行为进行追查、监控。
在一实施例中,所述方法还包括:
所述服务器为所述第二应用程序生成一组公钥证书和私钥证书,给所述校验模块设置所述公钥证书,所述服务器自身保存所述私钥证书;
所述服务器为所述第二应用程序分配身份标识号码ID,并给所述校验模块设置所述ID,所述ID与所述私钥证书相对应;相应的,所述校验信息还包括加密SHA1校验值和所述ID,所述加密SHA1校验值是所述校验模块使用所述公钥证书对所述第二SHA1校验值进行加密生成的;
所述服务器根据收到的所述校验信息中的所述ID找到相对应的私钥证书,并使用所述私钥证书对所述加密SHA1校验值进行解码,得到第二SHA1校验值。
本实施例中,对SHA1校验值进行加密处理,以防数据在传输过程中被修改,从而保证最终判定结果的准确性。
在一实施例中,所述方法还包括:
所述服务器给所述校验模块设置校验算法,所述服务器自身保存所述校验算法;相应的,所述校验信息还包括第二哈希运算消息认证码HMAC,所述第二HMAC为所述校验模块使用所述校验算法对所述ID和所述加密SHA1校验值进行校验得到的;
所述服务器使用所述校验算法对收到的所述校验信息中的所述ID和所述加密SHA1校验值进行校验得到第一HMAC;
将所述第一HMAC和所述第二HMAC进行对比,当所述第一HMAC和所述第二HMAC一致时,执行根据所述ID找到相对应的私钥证书的步骤。
本实施例中,所述校验信息还包括第二HMAC,这样服务器可以通过所述第二HMAC判断客户端发来的数据是否在传输过程中被修改,进一步确保最终判定结果的准确性。
在一实施例中,所述服务器还可以以加入JAR库或SO库的方式为所述第二应用程序设置在线升级功能模块,所述在线升级功能模块通过加入、修改软件字节码的方式被所述第二应用程序调用,所述在线升级功能模块用于连接所述服务器,对所述JAR库和/或SO库进行定期更新。
需要说明的是,以上为了清楚说明,采用了多个实施例对如何判定第二应用程序是否被修改进行了介绍。但本领域技术人员应当了解,在实际使用中,上述多个实施例中的方式可以根据实际需要灵活结合使用。例如,服务器在将所述第二应用程序发给所述客户端之后,所述服务器接收所述第二应用程序发送的校验信息,其中,所述检验信息包括:所述第二应用程序的ID、加密SHA1校验值和HMAC;其中,所述第二应用程序的ID与所述服务器为所述第一应用程序分配的ID相同;所述加密SHA1校验值为使用所述服务器预置入所述第一应用程序中的公钥,对所述第一应用程序的SHA1校验值进行加密后生成的校验值;所述HMAC为对所述第二应用程序的ID和所述加密SHA1校验值进行校验后生成的结果;所述服务器根据所述校验信息,判断所述第二应用程序是否被修改。
优选地,所述服务器根据所述校验信息,判断所述第二应用程序是否被修改,包括:所述服务器使用所述校验信息中的HMAC判断所述检验信息是否正确;在确定正确后,根据所述校验信息中的所述ID获取与所述第一应用程序中的公钥相对应的私钥,使用所述私钥对所述加密SHA1校验值进行解密,获得解密后的SHA1校验值;当确定解密后的所述SHA1校验值与所述服务器中存储的所述第一应用程序的SHA1校验值不匹配时,确定所述第二应用程序被修改。
以下以一实例对上述过程进行说明,本实例以android系统下的DEX文件为例。
DEX文件头中包含SHA1校验字段,标识DEX文件的HASH值,DEX文件生成后该检验值即SHA1校验值保持不变,因此可以作为判断DEX文件是否修改过的依据。第二应用程序运行时可以取出DEX文件头中的SHA1校验字段,将SHA1校验值用公钥证书进行加密生成Ckey1(SHA1校验码),对ID、Ckey1(SHA1校验码)进行校验(记作HMAC),将三元组(ID、Ckey1(SHA1校验码)、HMAC)发送至服务端进行比对。其中,服务器在对第一应用程序即本实例的DEX文件进行软件加固处理生成第二应用程序的过程中,服务器首先为接收到的未加固过的DEX文件分配唯一ID号(该ID号在加固后的第二应用程序中继续沿用),并生成一组公、私钥证书,将公钥证书预置进加固后的第二应用程序(即加固后的DEX文件),服务器保存私钥证书。当服务器完成软件加固任务后,提取出加固后的DEX文件头的SHA1校验字段值,将(ID、SHA1校验码)二元组及软件的相关信息存储于服务器的数据库,作为比对依据。再将加固后的DEX文件发送给客户端。
相对应地,当服务器收到客户端发送的上述校验比对三元组后,首先根据HMAC校验三元组,确定正确后根据ID找到对应的私钥证书,用私钥解密Ckey1(SHA1校验码),提取出三元组中的SHA1校验码,与服务器已存储的SHA1校验码比对,内容不匹配时即可判断软件已被重打包。此时,当加固后的DEX文件在客户端运行时,还可以将二元组(ID、SHA1校验码)信息发送至服务器,服务器与存储的对应数据进行比较,当发现不匹配时即可判断软件已被修改。
通过本实例,不但实现了应用程序加固后可防止逆向工具分析,有较好的安全性;而且对原应用程序增加了比对校验功能,帮助用户掌握、追查软件修改、重打包等行为;此外,加固后的应用程序运行时不要求服务器必须参与,加固方案可适用于多个Android版本的系统,兼容性、适应性好。
本发明提供的一种服务器的实施例,如图4所示,所述服务器包括:
接收单元401,用于接收客户端发来的第一应用程序;
其中,所述第一应用程序可以适用于移动平台。但不限于此,在实际应用中,任意其它的适当平台也同样适用,例如,均使用Android系统作为操作系统的平台。
处理单元402,用于对所述第一应用程序的参数和/或指令进行修改,得到第二应用程序,所述第二应用程序能够正常运行,且当使用逆向工具解析所述第二应用程序时,所述第二应用程序能够导致所述逆向工具报错退出;
发送单元403,用于将所述第二应用程序发给所述客户端。
本实施例中对第一应用程序的参数和/或指令进行修改得到的第二应用程序能够正常运行,且当使用逆向工具解析所述第二应用程序时,所述第二应用程序能够导致所述逆向工具报错退出,由此,本发明实施例能够避免被逆向工具反编译,从而达到应用程序安全防护的目的。
在一实施例中,所述处理单元402,具体用于将所述第一应用程序中的第一参数修改为非法参数,所述第一参数是所述第一应用程序在运行时不调用的参数;或者,
将所述第一应用程序中的第一指令修改为非法指令,所述第一指令是所述第一应用程序在运行时不调用的指令;或者,
在所述第一应用程序中加入第二参数,所述第二参数为非法参数,且所述第二参数是所述第一应用程序在运行时不调用的参数;或者,
在所述第一应用程序中加入第二指令,所述第二指令为非法指令,且所述第二指令是所述第一应用程序在运行时不调用的指令。
在一实施例中,所述处理单元402,还用于保存所述第二应用程序的第一安全哈希算法SHA1校验值;
为所述第二应用程序设置校验模块,包含有所述校验模块的应用程序在运行时能够向所述服务器发送校验信息,所述校验信息包括所述应用程序的第二SHA1校验值;
将所述收到的第二SHA1校验值与保存的所述第一SHA1校验值进行对比;
当所述第二SHA1校验值与所述第一SHA1校验值匹配时,判定发出所述校验信息的应用程序是所述第二应用程序;
当所述第二SHA1校验值与所述第一SHA1校验值不匹配时,判定发出所述校验信息的应用程序是基于所述第二应用程序进行逆向修改得到的。
在一实施例中,所述处理单元402,还用于为所述第二应用程序生成一组公钥证书和私钥证书,给所述校验模块设置所述公钥证书,使所述服务器保存所述私钥证书;
为所述第二应用程序分配身份标识号码ID,并给所述校验模块设置所述ID,所述ID与所述私钥证书相对应;相应的,所述校验信息还包括加密SHA1校验值和所述ID,所述加密SHA1校验值是所述校验模块使用所述公钥证书对所述第二SHA1校验值进行加密生成的;
根据收到的所述校验信息中的所述ID找到相对应的私钥证书,并使用所述私钥证书对所述加密SHA1校验值进行解码,得到第二SHA1校验值。
在一实施例中,所述处理单元402,还用于给所述校验模块设置校验算法,使所述服务器保存所述校验算法;相应的,所述校验信息还包括第二哈希运算消息认证码HMAC,所述第二HMAC为所述校验模块使用所述校验算法对所述ID和所述加密SHA1校验值进行校验得到的;
使用所述校验算法对收到的所述校验信息中的所述ID和所述加密SHA1校验值进行校验得到第一HMAC;
将所述第一HMAC和所述第二HMAC进行对比,当所述第一HMAC和所述第二HMAC一致时,执行根据所述ID找到相对应的私钥证书的操作。
在一实施例中,所述处理单元402,还用于接收所述第二应用程序发送的校验信息,其中,所述检验信息包括:所述第二应用程序的ID、加密SHA1校验值和HMAC;其中,所述第二应用程序的ID与所述服务器为所述第一应用程序分配的ID相同;所述加密SHA1校验值为使用所述服务器预置入所述第一应用程序中的公钥,对所述第一应用程序的SHA1校验值进行加密后生成的校验值;所述HMAC为对所述第二应用程序的ID和所述加密SHA1校验值进行校验后生成的结果;
以及用于根据所述校验信息,判断所述第二应用程序是否被修改。
在一实施例中,所述处理单元402,具体用于使用所述校验信息中的HMAC判断所述检验信息是否正确;
在确定正确后,根据所述校验信息中的所述ID获取与所述第一应用程序中的公钥相对应的私钥,使用所述私钥对所述加密SHA1校验值进行解密,获得解密后的SHA1校验值;
当确定解密后的所述SHA1校验值与所述服务器中存储的所述第一应用程序的SHA1校验值不匹配时,确定所述第二应用程序被修改。
在一实施例中,所述处理单元402,具体用于以加入JAR库或SO库的方式为所述第二应用程序设置校验模块,包括:将编写的校验模块生成JAR库或SO库;调用所述JAR库或SO库,生成安卓安装包APK_A;将所述APK_A反编译为Smali_A;将所述第二应用程序反编译为Smali_B;分析、提取Smali_A中调用JAR库或SO库的部分,合并入Smali_B中,并进行相应的修改;将Smali_B编译为APK,完成校验模块的添加。
在一实施例中,所述处理单元402,还用于以加入JAR库或SO库的方式为所述第二应用程序设置在线升级功能模块,所述在线升级功能模块通过加入、修改软件字节码的方式被所述第二应用程序调用,所述在线升级功能模块用于连接所述服务器,对所述JAR库和/或SO库进行定期更新。
本发明实施例技术方案可以解决Android系统下APK/DEX文件安全性脆弱、容易被逆向分析、追查困难等问题。
本发明实施例技术方案中软件加固的具体过程在服务器端实现,用户只需要将待加固的软件上传至服务端,加固完成后取回。加固后的软件具有较好的安全性,不易被逆向工具分析;能对软件修改、二次打包等行为进行追查、监控;同时具有很好的兼容性,适用于Android2.2-4.4等多个版本的安卓系统;当软件无法连接服务器时,软件可独立运行,不依赖服务器;当软件可以与服务器连通时,也只需要上传校验信息,不需要与服务端频繁交互;不需要安装自定义的加载器等额外软件。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (22)
1.一种应用程序安全防护方法,其特征在于,所述方法包括:
服务器接收客户端发来的第一应用程序;
所述服务器对所述第一应用程序的参数和/或指令进行修改,得到第二应用程序,所述第二应用程序能够正常运行,且当使用逆向工具解析所述第二应用程序时,所述第二应用程序能够导致所述逆向工具报错退出;
所述服务器将所述第二应用程序发给所述客户端。
2.根据权利要求1所述的方法,其特征在于,所述服务器对所述第一应用程序的参数和/或指令进行修改,包括:
所述服务器将所述第一应用程序中的第一参数修改为非法参数,所述第一参数是所述第一应用程序在运行时不调用的参数;或者,
所述服务器将所述第一应用程序中的第一指令修改为非法指令,所述第一指令是所述第一应用程序在运行时不调用的指令;或者,
所述服务器在所述第一应用程序中加入第二参数,所述第二参数为非法参数,且所述第二参数是所述第一应用程序在运行时不调用的参数;或者,
所述服务器在所述第一应用程序中加入第二指令,所述第二指令为非法指令,且所述第二指令是所述第一应用程序在运行时不调用的指令。
3.根据权利要求2所述的方法,其特征在于,所述服务器将所述第一应用程序中的第一参数修改为非法参数,包括:
所述服务器将所述第一应用程序中的合法指令集操作码后的操作码参数修改为非法参数。
4.根据权利要求3所述的方法,其特征在于,所述操作码参数至少包括所述第一应用程序中的无效引用、不存在的地址、不存在的索引值中的一种。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述服务器保存所述第二应用程序的第一安全哈希算法SHA1校验值;
所述服务器为所述第二应用程序设置校验模块,包含有所述校验模块的应用程序在运行时能够向所述服务器发送校验信息,所述校验信息包括所述应用程序的第二SHA1校验值;
所述服务器将收到的所述第二SHA1校验值与保存的所述第一SHA1校验值进行对比;
当所述第二SHA1校验值与所述第一SHA1校验值匹配时,所述服务器判定发出所述校验信息的应用程序是所述第二应用程序;
当所述第二SHA1校验值与所述第一SHA1校验值不匹配时,所述服务器判定发出所述校验信息的应用程序是基于所述第二应用程序进行逆向修改得到的。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
所述服务器为所述第二应用程序生成一组公钥证书和私钥证书,给所述校验模块设置所述公钥证书,所述服务器自身保存所述私钥证书;
所述服务器为所述第二应用程序分配身份标识号码ID,并给所述校验模块设置所述ID,所述ID与所述私钥证书相对应;相应的,所述校验信息还包括加密SHA1校验值和所述ID,所述加密SHA1校验值是所述校验模块使用所述公钥证书对所述第二SHA1校验值进行加密生成的;
所述服务器根据收到的所述校验信息中的所述ID找到相对应的私钥证书,并使用所述私钥证书对所述加密SHA1校验值进行解码,得到第二SHA1校验值。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述服务器给所述校验模块设置校验算法,所述服务器自身保存所述校验算法;相应的,所述校验信息还包括第二哈希运算消息认证码HMAC,所述第二HMAC为所述校验模块使用所述校验算法对所述ID和所述加密SHA1校验值进行校验得到的;
所述服务器使用所述校验算法对收到的所述校验信息中的所述ID和所述加密SHA1校验值进行校验得到第一HMAC;
将所述第一HMAC和所述第二HMAC进行对比,当所述第一HMAC和所述第二HMAC一致时,执行根据所述ID找到相对应的私钥证书的步骤。
8.根据权利要求3所述的方法,其特征在于,所述服务器将所述第二应用程序发给所述客户端之后,所述方法还包括:
所述服务器接收所述第二应用程序发送的校验信息,其中,所述检验信息包括:所述第二应用程序的ID、加密SHA1校验值和HMAC;其中,所述第二应用程序的ID与所述服务器为所述第一应用程序分配的ID相同;所述加密SHA1校验值为使用所述服务器预置入所述第一应用程序中的公钥,对所述第一应用程序的SHA1校验值进行加密后生成的校验值;所述HMAC为对所述第二应用程序的ID和所述加密SHA1校验值进行校验后生成的结果;
所述服务器根据所述校验信息,判断所述第二应用程序是否被修改。
9.根据权利要求8所述的方法,其特征在于,所述服务器根据所述校验信息,判断所述第二应用程序是否被修改,包括:
所述服务器使用所述校验信息中的HMAC判断所述检验信息是否正确;
在确定正确后,根据所述校验信息中的所述ID获取与所述第一应用程序中的公钥相对应的私钥,使用所述私钥对所述加密SHA1校验值进行解密,获得解密后的SHA1校验值;
当确定解密后的所述SHA1校验值与所述服务器中存储的所述第一应用程序的SHA1校验值不匹配时,确定所述第二应用程序被修改。
10.根据权利要求5-7任一项所述的方法,其特征在于,所述服务器为所述第二应用程序设置校验模块,包括:
所述服务器以加入JAR库或SO库的方式为所述第二应用程序设置校验模块,包括:将编写的校验模块生成JAR库或SO库;调用所述JAR库或SO库,生成安卓安装包APK_A;将所述APK_A反编译为Smali_A;将所述第二应用程序反编译为Smali_B;分析、提取Smali_A中调用JAR库或SO库的部分,合并入Smali_B中,并进行相应的修改;将Smali_B编译为APK,完成校验模块的添加。
11.根据权利要求3所述的方法,其特征在于,所述服务器在收到所述第一应用程序之后,所述方法还包括:
所述服务器以加入JAR库或SO库的方式为所述第二应用程序设置在线升级功能模块,所述在线升级功能模块通过加入、修改软件字节码的方式被所述第二应用程序调用,所述在线升级功能模块用于连接所述服务器,对所述JAR库和/或SO库进行定期更新。
12.一种服务器,其特征在于,所述服务器包括:
接收单元,用于接收客户端发来的第一应用程序;
处理单元,用于对所述第一应用程序的参数和/或指令进行修改,得到第二应用程序,所述第二应用程序能够正常运行,且当使用逆向工具解析所述第二应用程序时,所述第二应用程序能够导致所述逆向工具报错退出;
发送单元,用于将所述第二应用程序发给所述客户端。
13.根据权利要求12所述的服务器,其特征在于,所述处理单元,具体用于将所述第一应用程序中的第一参数修改为非法参数,所述第一参数是所述第一应用程序在运行时不调用的参数;或者,
将所述第一应用程序中的第一指令修改为非法指令,所述第一指令是所述第一应用程序在运行时不调用的指令;或者,
在所述第一应用程序中加入第二参数,所述第二参数为非法参数,且所述第二参数是所述第一应用程序在运行时不调用的参数;或者,
在所述第一应用程序中加入第二指令,所述第二指令为非法指令,且所述第二指令是所述第一应用程序在运行时不调用的指令。
14.根据权利要求13所述的服务器,其特征在于,所述处理单元,具体用于将所述第一应用程序中的合法指令集操作码后的操作码参数修改为非法参数。
15.根据权利要求14所述的服务器,其特征在于,所述操作码参数至少包括所述第一应用程序中的无效引用、不存在的地址、不存在的索引值中的一种。
16.根据权利要求12或13所述的服务器,其特征在于,所述处理单元,还用于保存所述第二应用程序的第一安全哈希算法SHA1校验值;
为所述第二应用程序设置校验模块,包含有所述校验模块的应用程序在运行时能够向所述服务器发送校验信息,所述校验信息包括所述应用程序的第二SHA1校验值;
将所述收到的第二SHA1校验值与保存的所述第一SHA1校验值进行对比;
当所述第二SHA1校验值与所述第一SHA1校验值匹配时,判定发出所述校验信息的应用程序是所述第二应用程序;
当所述第二SHA1校验值与所述第一SHA1校验值不匹配时,判定发出所述校验信息的应用程序是基于所述第二应用程序进行逆向修改得到的。
17.根据权利要求16所述的服务器,其特征在于,所述处理单元,还用于为所述第二应用程序生成一组公钥证书和私钥证书,给所述校验模块设置所述公钥证书,使所述服务器保存所述私钥证书;
为所述第二应用程序分配身份标识号码ID,并给所述校验模块设置所述ID,所述ID与所述私钥证书相对应;相应的,所述校验信息还包括加密SHA1校验值和所述ID,所述加密SHA1校验值是所述校验模块使用所述公钥证书对所述第二SHA1校验值进行加密生成的;
根据收到的所述校验信息中的所述ID找到相对应的私钥证书,并使用所述私钥证书对所述加密SHA1校验值进行解码,得到第二SHA1校验值。
18.根据权利要求17所述的服务器,其特征在于,所述处理单元,还用于给所述校验模块设置校验算法,使所述服务器保存所述校验算法;相应的,所述校验信息还包括第二哈希运算消息认证码HMAC,所述第二HMAC为所述校验模块使用所述校验算法对所述ID和所述加密SHA1校验值进行校验得到的;
使用所述校验算法对收到的所述校验信息中的所述ID和所述加密SHA1校验值进行校验得到第一HMAC;
将所述第一HMAC和所述第二HMAC进行对比,当所述第一HMAC和所述第二HMAC一致时,执行根据所述ID找到相对应的私钥证书的操作。
19.根据权利要求14所述的服务器,其特征在于,所述处理单元,还用于接收所述第二应用程序发送的校验信息,其中,所述检验信息包括:所述第二应用程序的ID、加密SHA1校验值和HMAC;其中,所述第二应用程序的ID与所述服务器为所述第一应用程序分配的ID相同;所述加密SHA1校验值为使用所述服务器预置入所述第一应用程序中的公钥,对所述第一应用程序的SHA1校验值进行加密后生成的校验值;所述HMAC为对所述第二应用程序的ID和所述加密SHA1校验值进行校验后生成的结果;
以及用于根据所述校验信息,判断所述第二应用程序是否被修改。
20.根据权利要求19所述的服务器,其特征在于,所述处理单元,具体用于使用所述校验信息中的HMAC判断所述检验信息是否正确;
在确定正确后,根据所述校验信息中的所述ID获取与所述第一应用程序中的公钥相对应的私钥,使用所述私钥对所述加密SHA1校验值进行解密,获得解密后的SHA1校验值;
当确定解密后的所述SHA1校验值与所述服务器中存储的所述第一应用程序的SHA1校验值不匹配时,确定所述第二应用程序被修改。
21.根据权利要求16-18任一项所述的服务器,其特征在于,所述处理单元,具体用于以加入JAR库或SO库的方式为所述第二应用程序设置校验模块,包括:将编写的校验模块生成JAR库或SO库;调用所述JAR库或SO库,生成安卓安装包APK_A;将所述APK_A反编译为Smali_A;将所述第二应用程序反编译为Smali_B;分析、提取Smali_A中调用JAR库或SO库的部分,合并入Smali_B中,并进行相应的修改;将Smali_B编译为APK,完成校验模块的添加。
22.根据权利要求14所述的服务器,其特征在于,所述处理单元,还用于以加入JAR库或SO库的方式为所述第二应用程序设置在线升级功能模块,所述在线升级功能模块通过加入、修改软件字节码的方式被所述第二应用程序调用,所述在线升级功能模块用于连接所述服务器,对所述JAR库和/或SO库进行定期更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410669851.5A CN105678120B (zh) | 2014-11-20 | 2014-11-20 | 一种应用程序安全防护方法和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410669851.5A CN105678120B (zh) | 2014-11-20 | 2014-11-20 | 一种应用程序安全防护方法和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105678120A true CN105678120A (zh) | 2016-06-15 |
CN105678120B CN105678120B (zh) | 2019-06-07 |
Family
ID=56957928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410669851.5A Active CN105678120B (zh) | 2014-11-20 | 2014-11-20 | 一种应用程序安全防护方法和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105678120B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106412102A (zh) * | 2016-10-28 | 2017-02-15 | 努比亚技术有限公司 | 一种防止应用被反编译的装置和方法 |
CN108304697A (zh) * | 2017-12-11 | 2018-07-20 | 深圳壹账通智能科技有限公司 | 检测app二次打包的方法、装置及移动终端 |
CN108427552A (zh) * | 2018-03-01 | 2018-08-21 | 深圳市创梦天地科技有限公司 | 安卓应用安装包制作装置、方法、电子设备以及存储介质 |
CN109766141A (zh) * | 2018-12-26 | 2019-05-17 | 北京思源互联科技有限公司 | 一种基于动态链接库的数据动态更新方法及其装置 |
CN110378110A (zh) * | 2019-06-28 | 2019-10-25 | 北京威努特技术有限公司 | 软件加密处理方法、软件验证方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101783801A (zh) * | 2010-01-29 | 2010-07-21 | 福建星网锐捷网络有限公司 | 一种基于网络的软件保护方法、客户端及服务器 |
CN102609666A (zh) * | 2012-01-20 | 2012-07-25 | 飞天诚信科技股份有限公司 | 一种可执行程序加壳保护方法 |
CN102831342A (zh) * | 2012-07-28 | 2012-12-19 | 北京深思洛克软件技术股份有限公司 | 一种提高安卓系统中应用程序保护强度的方法 |
CN103838572A (zh) * | 2013-12-20 | 2014-06-04 | 北京掌阔技术有限公司 | 一种安卓开发包的打包系统和方法 |
-
2014
- 2014-11-20 CN CN201410669851.5A patent/CN105678120B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101783801A (zh) * | 2010-01-29 | 2010-07-21 | 福建星网锐捷网络有限公司 | 一种基于网络的软件保护方法、客户端及服务器 |
CN102609666A (zh) * | 2012-01-20 | 2012-07-25 | 飞天诚信科技股份有限公司 | 一种可执行程序加壳保护方法 |
CN102831342A (zh) * | 2012-07-28 | 2012-12-19 | 北京深思洛克软件技术股份有限公司 | 一种提高安卓系统中应用程序保护强度的方法 |
CN103838572A (zh) * | 2013-12-20 | 2014-06-04 | 北京掌阔技术有限公司 | 一种安卓开发包的打包系统和方法 |
Non-Patent Citations (1)
Title |
---|
王祥根: "自修改代码逆向分析方法研究", 《中国博士学位论文全文数据库》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106412102A (zh) * | 2016-10-28 | 2017-02-15 | 努比亚技术有限公司 | 一种防止应用被反编译的装置和方法 |
CN108304697A (zh) * | 2017-12-11 | 2018-07-20 | 深圳壹账通智能科技有限公司 | 检测app二次打包的方法、装置及移动终端 |
CN108304697B (zh) * | 2017-12-11 | 2020-05-19 | 深圳壹账通智能科技有限公司 | 检测app二次打包的方法、装置及移动终端 |
CN108427552A (zh) * | 2018-03-01 | 2018-08-21 | 深圳市创梦天地科技有限公司 | 安卓应用安装包制作装置、方法、电子设备以及存储介质 |
CN109766141A (zh) * | 2018-12-26 | 2019-05-17 | 北京思源互联科技有限公司 | 一种基于动态链接库的数据动态更新方法及其装置 |
CN110378110A (zh) * | 2019-06-28 | 2019-10-25 | 北京威努特技术有限公司 | 软件加密处理方法、软件验证方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105678120B (zh) | 2019-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101471589B1 (ko) | 공통중간언어 기반 프로그램을 위한 보안 제공 방법 | |
CN105678120A (zh) | 一种应用程序安全防护方法和服务器 | |
CN102880456B (zh) | 插件加载方法及系统 | |
CN104680039B (zh) | 一种应用程序安装包的数据保护方法及装置 | |
CN110333868B (zh) | 用于生成子应用的安装包的方法和系统 | |
CN104702631A (zh) | 一种客户端软件的升级方法和系统 | |
KR20170088858A (ko) | 애플리케이션 무결성 검증을 제공하기 위한 방법 및 디바이스 | |
CN109284585B (zh) | 一种脚本加密方法、脚本解密运行方法和相关装置 | |
CN103827880A (zh) | 保护非本机代码安全的方法 | |
TWI541669B (zh) | Detection systems and methods for static detection applications, and computer program products | |
US20130139217A1 (en) | Method and apparatus for executing security policy script, security policy system | |
CN108259479B (zh) | 业务数据处理方法、客户端与计算机可读存储介质 | |
CN114021142A (zh) | 一种安卓应用程序漏洞检测方法 | |
CN107508846B (zh) | 应用客户端的更新方法和系统及终端设备 | |
CN105468970B (zh) | 一种基于防御网的Android应用程序防篡方法及系统 | |
CN115580491A (zh) | 一种基于国密算法的工控编程平台及构建方法与运行方法 | |
CN105897745A (zh) | 升级包传输服务器、系统及方法 | |
CN105873030A (zh) | 一种对终端应用进行副署签名的方法 | |
CN102695169A (zh) | 一种移动终端应用程序运行方法和系统 | |
CN112115430A (zh) | 一种apk的加固方法、电子设备及存储介质 | |
Feichtner | A comparative study of misapplied crypto in Android and iOS applications | |
CN111400771A (zh) | 目标分区的校验方法及装置、存储介质、计算机设备 | |
CN111522555B (zh) | apk文件的加固方法、解密方法及相关装置 | |
CN113114681A (zh) | 测试报文处理方法、装置、计算机系统及可读存储介质 | |
DONG et al. | Sesoa: Security enhancement system with online authentication for android apk |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |