CN109934016B - 应用的签名校验方法、装置及电子设备 - Google Patents
应用的签名校验方法、装置及电子设备 Download PDFInfo
- Publication number
- CN109934016B CN109934016B CN201910172469.6A CN201910172469A CN109934016B CN 109934016 B CN109934016 B CN 109934016B CN 201910172469 A CN201910172469 A CN 201910172469A CN 109934016 B CN109934016 B CN 109934016B
- Authority
- CN
- China
- Prior art keywords
- information
- application
- signature verification
- file
- signature
- 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
Abstract
本发明公开了一种应用的签名校验方法、装置及电子设备,其中,方法包括:提取应用的签名验证信息;将预设签名校验工具集成在应用中;在运行已集成预设签名校验工具的应用的过程中,调用预设签名校验工具,以根据签名验证信息对已集成预设签名校验工具的应用所对应的签名信息进行验证。该方式在应用导出前进行应用的签名校验信息的筛选采集,可以最大程度保证信息的完整性、一致性和多样性,加大了应用的破解难度;其次,将检测方案独立成签名校验工具,能够更好地集成与兼容不同的应用开发框架。
Description
技术领域
本发明涉及应用安全技术领域,具体涉及一种应用的签名校验方法、装置及电子设备。
背景技术
随着科学技术的不断发展,破解应用不再是一件难事,将应用进行破解修改,例如做游戏外挂、应用脱壳、免费下载安装等,都严重损害了应用开发者的利益。若应用被修改之后重新上线,则需要修改应用的签名,因此为了保障应用开发者的利益,有效防止应用被破解重签,可以在运用运行时增加签名校验功能。
在一种现有的IOS签名校验方式中,首先在开发者的开发机器上生成一对公私钥L。同时系统有一对固定的公私钥A,公钥放在每一个IOS设备上,私钥放在系统后台。当开发者将公钥L传输到系统后台,系统用私钥L去签名公钥L,生成一份证书;系统根据开发者提供的证书、AppleID、可用权限和设备列表组成的数据,用私钥A签名生成描述文件;开发时用私钥L对应用进行签名得到数字签名文件,安装运行时IOS设备用私钥A去验证应用的数字签名是否正确。
在另一种现有的IOS签名校验方式中,应用的签名校验主要通过首页启动时,调用API接口与后台服务器进行验证,API对相关数据进行哈希,相关数据具体包括:原始URL、应用BundleIdentifier和时间戳,后台服务器通过算法进行校验,判断签名是否正确,若正确再返回访问令牌。
但是,发明人在实现本发明的过程中发现:针对于上述第一种签名校验方式,现如今应用破解的工具有很多,可以很方便地对应用进行重签名,并且依据其签名验证功能的原理,第三方只需拥有开发账号,使用签名机制重新打包签名,就可以避免签名检测功能,伪装成新的应用继续上架。针对上述第二种签名校验方式,该方式仅适合开发者单个使用,且需要后台服务器提供API接口支持,成本较高,不具备通用性,并且由于在该模式下进行重签,无需修改BundleIdentifier,一旦应用被逆向,第三方只需使用通配符的描述文件或企业签名进行重打包,很容易被破解。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用的签名校验方法、装置及电子设备。
根据本发明的一个方面,提供了一种应用的签名校验方法,包括:
提取应用的签名验证信息;
将预设签名校验工具集成在应用中;
在运行已集成预设签名校验工具的应用的过程中,调用预设签名校验工具,以根据签名验证信息对已集成预设签名校验工具的应用所对应的签名信息进行验证。
可选地,预设签名校验工具具体为签名校验SDK或者签名校验脚本。
可选地,将预设签名校验工具集成在应用中具体包括:
在应用的源码中配置预设签名校验工具;
或者,在应用的程序应用文件中集成预设签名校验工具。
可选地,根据签名验证信息对已集成预设签名校验工具的应用所对应的签名信息进行验证具体包括:
获取已集成签名校验工具的应用在安装过程中存储在数据磁盘中的文件信息,将文件信息与签名验证信息进行比对;
获取已集成签名校验工具的应用在运行内存中的签名段信息,将签名验证信息与运行内存中的签名段信息进行比对。
可选地,将文件信息与签名验证信息进行比对之后,方法进一步包括:
若文件信息与签名验证信息相匹配,则继续运行已集成签名校验工具的应用;
若文件信息与签名验证信息不匹配,则停止运行已集成签名校验工具的应用,并生成停止运行的提示信息。
可选地,提取应用的签名校验信息具体包括:
根据应用所对应的各个签名信息文件,提取应用的签名验证信息;
其中,签名信息文件包括以下中的至少一个:
Info.plist文件、embedded.mobileprovision文件、资源文件、二进制文件。
可选地,根据应用的Info.plist文件,提取应用的签名验证信息具体包括:提取Info.plist文件中的应用信息作为应用的签名验证信息;其中,应用信息包含以下中的至少一个信息项:应用包名称信息、应用显示名称信息、应用名称信息、应用版本号信息、应用用户权限信息;
根据应用的embedded.mobileprovision文件,提取的应用的签名验证信息具体包括:提取embedded.mobileprovision文件中的应用签名信息作为应用的签名验证信息;其中,应用的签名信息包含以下中的至少一个信息项:已签的应用包名称信息、已签的应用开发者名称信息、已签的应用所属组别信息、已签的应用支持设备信息、已签的特殊权限信息;
根据应用的资源文件,提取应用的签名验证信息具体包括:计算资源文件的哈希值作为应用的签名验证信息;其中,资源文件包含以下中的至少一个:图片文件、音频文件、视频文件、链接库文件;
根据应用的二进制文件,提取应用的签名验证信息具体包括:提取应用的二进制文件中的签名段信息作为应用的签名验证信息;签名段信包含以下中的至少一个信息项:应用包名称信息、应用开发者名称信息、应用所属组别信息。
根据本发明的另一方面,提供了一种应用的签名校验装置,包括:
提取模块,适于提取应用的签名验证信息;
集成模块,适于将预设签名校验工具集成在应用中;
验证模块,适于在运行已集成预设签名校验工具的应用的过程中,调用预设签名校验工具,以根据签名验证信息对已集成预设签名校验工具的应用所对应的签名信息进行验证。
可选地,预设签名校验工具具体为签名校验SDK或者签名校验脚本。
可选地,集成模块具体用于:
在应用的源码中配置预设签名校验工具;
或者,在应用的程序应用文件中集成预设签名校验工具。
可选地,验证模块进一步适于:
获取已集成签名校验工具的应用在安装过程中存储在数据磁盘中的文件信息,将文件信息与签名验证信息进行比对;
获取已集成签名校验工具的应用在运行内存中的签名段信息,将签名验证信息与运行内存中的签名段信息进行比对。
可选地,验证模块进一步适于:
若文件信息与签名验证信息相匹配,则继续运行已集成签名校验工具的应用;
若文件信息与签名验证信息不匹配,则停止运行已集成签名校验工具的应用,并生成停止运行的提示信息。
可选地,提取模块具体适于:
根据应用所对应的各个签名信息文件,提取应用的签名验证信息;
其中,签名信息文件包括以下中的至少一个:
Info.plist文件、embedded.mobileprovision文件、资源文件、二进制文件。
可选地,提取模块进一步适于:
提取Info.plist文件中的应用信息作为应用的签名验证信息;其中,应用信息包含以下中的至少一个信息项:应用包名称信息、应用名称信息、应用版本号信息、应用用户权限信息;
提取embedded.mobileprovision文件中的应用签名信息作为应用的签名验证信息;其中,应用的签名信息包含以下中的至少一个信息项:已签的应用包名称信息、已签的应用开发者名称信息、已签的应用所属组别信息、已签的应用支持设备信息、已签的特殊权限信息;
计算资源文件的哈希值作为应用的签名验证信息;其中,资源文件包含以下中的至少一个:图片文件、音频文件、视频文件、链接库文件;
提取应用的二进制文件中的签名段信息作为应用的签名验证信息;签名段信包含以下中的至少一个信息项:应用包名称信息、应用开发者名称信息、应用所属组别信息。
可选地,装置进一步包括:
加密模块,适于将提取的应用的签名验证信息进行加密处理。
根据本发明的又一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述应用的签名校验方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述应用的签名校验方法对应的操作。
根据本本发明所提供的应用的签名校验方法、装置及电子设备,其中,方法包括:提取应用的签名验证信息;将预设签名校验工具集成在应用中;在运行已集成预设签名校验工具的应用的过程中,调用预设签名校验工具,以根据签名验证信息对已集成预设签名校验工具的应用所对应的签名信息进行验证。该方式在应用导出前进行应用的签名校验信息的筛选采集,可以最大程度保证信息的完整性、一致性和多样性,加大了应用的破解难度;其次,将检测方案独立成签名校验工具,能够更好地集成与兼容不同的应用开发框架。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的应用的签名校验方法的流程示意图;
图2示出了根据本发明另一个实施例的应用的签名校验方法的流程示意图;
图3示出了一种实施方式中步骤S202所包含的各个子步骤的示意图;
图4示出了另一种实施方式中步骤S202所包含的各个子步骤的示意图;
图5示出了根据本发明一个实施例的应用的签名校验装置的结构示意图;
图6示出了根据本发明实施例的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的应用的签名校验方法的流程示意图,本实施例中具体以IOS应用为例进行说明,如图1所示,该方法包括:
步骤S101,提取应用的签名验证信息。
针对于IOS应用,将应用的.xcarchive文件或者.ipa文件进行解压,遍历查找Payload文件夹,从Payload文件夹中所存放的关于应用的所有资源数据中提取应用的签名验证信息。然后,将提取的签名验证信息采用隐写入的方式保存到指定的文件中。本实施例方法可适用于已上架的可供用户下载的应用,或者签名后直接可以给用户安装使用的应用,总之,适用于已被签名的应用。
步骤S102,将预设签名校验工具集成在应用中。
其中,预设签名校验工具可以是签名校验SDK(SoftwareDevelopmentKit,软件开发工具包),或者可以是签名校验脚本。签名校验工具用于根据上述步骤S101提取的签名验证信息对应用进行签名校验。
步骤S103,在运行已集成预设签名校验工具的应用的过程中,调用预设签名校验工具,以根据签名验证信息对已集成预设签名校验工具的应用所对应的签名信息进行验证。
经过上述步骤S101-S102之后,该已集成预设签名校验工具的应用有可能会被重签名,也有可能不会被重签名。但无论如何,由于应用中已经集成了预设签名校验工具,并且已经存储了应用的验证信息,那么该已集成预设签名校验工具的应用在运行时,会调用预设签名校验工具进行签名校验处理。具体地,预设调用签名校验工具,将运行的应用的签名信息与预先提取的签名验证信息进行比对,判断运行的应用的签名信息与预先提取的签名验证信息是否一致,从而完成应用的签名校验。
根据本实施例所提供的应用的签名校验方法,首先提取应用的签名验证信息;然后,将预设签名校验工具集成在应用中;在运行已集成预设签名校验工具的应用的过程中,调用预设签名校验工具,以根据签名验证信息对已集成预设签名校验工具的应用所对应的签名信息进行验证。该方式提供了一种在应用导出前进行应用的签名校验信息的筛选采集,可以最大程度保证信息的完整性、一致性和多样性,加大了应用的破解难度;其次,将检测方案独立成签名校验工具,能够更好地集成与兼容不同的应用开发框架。
图2示出了根据本发明另一个实施例的应用的签名校验方法的流程示意图,本实施例中具体以IOS应用为例进行说明,如图2所示,该方法包括:
步骤S201,根据应用所对应的各个签名信息文件,提取应用的签名验证信息,将提取的应用的签名验证信息进行加密处理。
针对于IOS应用,将应用的.xcarchive文件或者.ipa文件进行解压,遍历查找Payload文件夹,从Payload文件夹中所存放的关于应用的所有资源数据中提取应用的签名验证信息。然后,将提取的签名验证信息采用隐写入的方式保存到指定的文件中。本实施例方法可适用于已上架的可供用户下载的应用,或者签名后直接可以给用户安装使用的应用,总之,适用于已被签名的应用。
具体地,对Payload文件夹中所包含的各个签名信息文件进行数据提取筛选处理,提取出应用的签名验证信息,并将提取出的各个签名验证信息进行加密保存。其中,签名信息文件具体包括:Info.plist文件、embedded.mobileprovision文件、资源文件和二进制文件等等。
针对于Info.plist文件,提取Info.plist文件中存放的大量的应用信息作为应用的签名验证信息,例如应用包名称信息、应用显示名称信息、应用名称信息、应用版本号信息、应用用户权限等等。具体通过文件路径读取Info.plist文件的字典集数据,筛选出上述各个信息项,并对各个信息项进行加密处理,将加密的各个信息项作为应用的签名验证信息。
针对于embedded.mobileprovision文件,提取embedded.mobileprovision文件中存放的大量的应用签名信息作为应用的签名验证信息,例如已签的应用包名称信息、已签的应用开发者名称信息、已签的应用所属组别信息、已签的应用支持设备信息、已签的特殊权限信息。具体通过将该文件转化成字典集数据,根据字典集数据提取出上述各个信息项,并对提取的各个信息项进行加密处理,将加密的各个信息项作为应用的签名验证信息。
针对于应用的二进制文件,提取二进制文件中的签名段信息作为应用的签名验证信息,例如应用包名称信息、应用开发者名称信息、应用所属组别信息等等。
针对于应用的资源文件,遍历Payload文件夹中的所有资源文件,包括图片文件、音频文件、视频文件、链接库文件等等,分别计算各个资源文件哈希值,将各个资源文件的哈希值作为应用的签名验证信息。
步骤S202,将预设签名校验工具集成在应用中。
将预设签名校验工具集成在应用中,预设签名校验工具可以是签名校验SDK(SoftwareDevelopmentKit,软件开发工具包),或者可以是签名校验脚本。签名校验工具用于根据上述步骤S101提取的签名验证信息进行校验。
其中,当预设签名校验工具为签名校验SDK时,可以基于应用的源码层面集成SDK,具体在应用的源码中配置预设签名校验工具,或者,也可以在程序应用文件层面集成SDK。
图3示出了一种实施方式中步骤S202所包含的各个子步骤的示意图,该方式在IOS应用的ipa文件层面集成签名校验SDK,如图3所示,该方式中步骤S202具体包括:
子步骤S20211,将SDK集成到应用中,按照预设加载顺序在应用的可执行文件的动态库信息列表中嵌入SDK的加载信息。
将SDK集成到应用中,在应用的可执行文件的加载命令中查找动态库信息列表,根据预设加载顺序,在动态库信息列表中插入SDK的加载信息,例如SDK的文件路径和名称等等。其中,预设加载顺序也就是嵌入的代码的运行顺序,例如可以让嵌入的代码最先运行或者按照其他指定的顺序运行,本领域技术人员可以根据实际需要对预设加载顺序进行设置。
子步骤S20212,根据SDK的文件信息,对可执行文件包含的动态库加载信息的偏移量信息和长度信息进行修改。
首先,读取可执行文件中的动态库加载信息,例如重定向信息、静态绑定信息等等;然后,根据嵌入的SDK的文件信息,例如动态库名称、文件存放路径、文件大小信息以及结构信息等,修改动态库加载信息的偏移量和长度。
子步骤S20213,对可执行文件包含的原始动态库的加载序号信息和原始动态库对应的代码在可执行文件中的偏移地址信息进行修改,以及对代码段中原始动态库的位置信息的序号信息进行修改。
由于新添加了SDK,需要修改可执行文件中的动态库绑定信息,具体修改原始动态库的加载序号信息和原始动态库对应的代码在文件中的偏移地址信息。同时,还需要修改代码段中原始动态库的位置信息的序号。
子步骤S20214,根据已修改的可执行文件生成更新应用文件。
利用已修改的可执行文件对原始可执行文件进行替换,并根据已修改的可执行文件重新打包生成更新应用文件。在后续过程中,启动该更新应用时,根据已修改的动态库信息列表,新添加的SDK会按照上述预设加载顺序植入的SDK代码。
该方式能够脱离源码针对任一应用按照指定的加载顺序嵌入SDK,使得新添加了SDK的应用运行时能够按照指定的加载顺序动态调用SDK代码,兼容性更高。
图4示出了另一种实施方式中步骤S202所包含的各个子步骤的示意图,该方式在IOS应用的ipa文件层面集成签名校验SDK,如图4所示,该方式中步骤S202具体包括:
子步骤S20221,将IOS应用的程序应用文件进行解压,提取IOS应用的可执行文件,将SDK集成到应用中。
将IOS应用的ipa安装包进行解压,提取Mach-o文件(可执行文件),并将SDK集成在应用中。
子步骤S20222,按照预设加载顺序在应用的可执行文件的动态库信息列表中嵌入SDK的加载信息。
将SDK集成到应用中,在应用的可执行文件的加载命令中查找动态库信息列表,根据预设加载顺序,在动态库信息列表中插入SDK的加载信息,例如SDK的文件路径和名称等等。其中,预设加载顺序也就是嵌入的代码的运行顺序,例如可以让嵌入的代码最先运行或者按照其他指定的顺序运行,本领域技术人员可以根据实际需要对预设加载顺序进行设置。
需要特别指出的是:现有技术将SDK插入到系统库之后,由于优先加载了系统库以及应用本身的所添加的第三方库,可能会导致新添加的SDK部分功能不能正常加载而导致闪退。因此,现有技术中缺乏一种能够优先加载新添加的SDK的技术方案。该方式能够使新添加的SDK按照任意的加载顺序加载,其中,当预设加载顺序具体为首位加载顺序(即最先加载)时,就能够解决上述因系统库以及应用本身所添加的第三方库优先加载导致的错误崩溃问题。
具体地,在可执行文件的加载命令中查找动态库信息的列表,按照预设加载顺序,例如首位加载顺序,在动态库信息的列表中插入SDK的加载信息,其中,SDK的加载信息包括以下中的至少一个:文件路径信息、名称信息。
子步骤S20223,根据SDK的文件信息,对可执行文件包含的动态库加载信息的偏移量信息和长度信息进行修改。
读取可执行文件中的动态库加载信息,然后,根据SDK的文件信息,修改动态加载信息的偏移量信息和长度信息,其中,动态库加载信息具体包括以下中的至少一个:重定向信息、静态绑定信息。SDK的文件信息具体包括以下中的至少一个:动态库名称信息、文件存放路径信息、文件大小信息、结构信息。
以添加PayegisSharkIV.framework为例,其中通过文件路径“@executable_path/Frameworks/PayegisSharkIV.framework/PayegisSharkIV”计算可得加载命令中增加的偏移长度为96,通过遍历重定向信息和静态绑定信息表中OPCODE和IMMEDIATE的值,可得重定向信息表增加为0,静态绑定信息表增加长度为6,补齐0位后得到增加长度为16。
子步骤S20224,对可执行文件包含的原始动态库的加载序号信息和原始动态库对应的代码在可执行文件中的偏移地址信息进行修改。
遍历可执行文件中的动态库绑定信息,由于新添加了SDK,需要修改原始动态库的加载序号和原始动态库对应的代码在可执行文件中的偏移地址。
以预设加载顺序为首位加载顺序为例,简单地来讲,原始动态库共有10个,序号分别为1、2、3……10,在所有原始动态库之前加入SDK对应的动态库,那么新添加的动态库的序号为1,原始动态库的序号依次修改为2、3、4……11,同时,还需要对原始动态库对应的代码在可执行文件中的偏移地址进行修改。
子步骤S20225,根据动态库的段落号信息以及偏移信息计算符号指针信息,根据符号指针信息确定原始动态库的起始位置信息以及调用代码位置信息;对原始动态库的起始位置信息以及调用代码位置信息的序号信息进行修改。
根据动态库的段落号信息以及偏移信息计算出的符号指针信息,可以得到代码段下原始动态库的起始位置信息以及调用代码位置信息,然后对原始动态库的起始位置信息以及调用代码位置信息的序号进行修改。
子步骤S20226,根据已修改的可执行文件生成更新应用文件,对更新应用文件进行重签名认证处理。
将已修改的可执行文件对原始可执行文件进行替换,并根据已修改的可执行文件重新打包生成更新应用文件,使用重签名工具进行重新签名认证。在后续过程中,启动该更新应用时,根据已修改的动态库信息的列表,添加的SDK会按照预设加载顺序调植入的代码。
由此可知,此在IOS应用的ipa文件层面集成SDK的方式可总结为以下几个处理阶段:(1)解压提取阶段。(2)可执行文件修改处理阶段,具体修改可执行文件的加载信息以及绑定信息等。(3)重打包阶段,具体用已修改的可执行文件替换原始可执行文件生成新的应用文件,并对新的应用文件进行重签名形成新的ipa包。
由此可知,该方式能够脱离源码,针对任一应用按照指定的加载顺序嵌入SDK,例如安全组件(签名校验、二次打包检测、越狱检测、防注入等)、动态监控租金、调试模块等等,使得应用运行时能够按照指定的加载顺序调用SDK代码,应用场景广。其中当指预设加载顺序为首位加载顺序时,还能够解决现有技术中存在的SDK插入系统库以后,由于其他库信息被优先加载而导致新添加的SDK出现错误甚至崩溃,兼容性更好。
因此,利用上述方法能够按照首位加载顺序将签名校验SDK集成在应用中,并且保证在应用启动时首先调用签名校验SDK。
步骤S203,在运行已集成预设签名校验工具的应用的过程中,调用预设签名校验工具,以获取已集成签名校验工具的应用在安装过程中存储在数据磁盘中的文件信息,将文件信息与签名验证信息进行比对,以及,获取已集成签名校验工具的应用在运行内存中的签名段信息,将签名验证信息与运行内存中的签名段信息进行比对。
经过上述步骤S101-S102之后,该已集成预设签名校验工具的应用有可能会被重签名,也有可能不会被重签名。但无论如何,由于应用中已经集成了预设签名校验工具,并且已经存储了应用的验证信息,那么该已集成预设签名校验工具的应用在运行时,会调用预设签名校验工具进行签名校验处理。
本实施例中,采用多点检测、交叉校验的方式进行签名校验,具体在运行已集成预设签名校验工具的应用的过程中,通过从不同的采集样本点提取用于签名校验的信息。
首先,预设签名校验工具会获取该已集成预设签名校验工具的应用的签名相关信息,然后调用校验API接口与已存储的签名校验信息进行比对,如果一致则继续正常运行,如果不一致则提示并退出运行。其中,签名相关信息具体指该已集成预设签名校验工具的应用在安装过程中存储在数据磁盘中的文件信息。
其次,预设签名校验工具提取该已集成预设签名校验工具的应用在内存中的签名信息,将其与已存储的签名验证信息进行比对,再次对应用的签名信息进行校验,加强签名校验的保护强度。其中,内存中的签名信息具体指该已集成预设签名校验工具的应用在运行内存中的二进制信息中的签名段信息。
综上所述,该方式在应用导出前进行应用的签名校验信息的筛选采集,可以最大程度保证信息的完整性、一致性和多样性;其次,将检测方案独立成签名校验工具,能够更好地集成与兼容不同的应用开发框架;另外,该方式采用多点检测、交叉校验的方式,加大了应用的破解难度。
图5示出了根据本发明一个实施例的应用的签名校验装置的结构示意图,如图5所示,该装置包括:
提取模块51,适于提取应用的签名验证信息;
集成模块52,适于将预设签名校验工具集成在应用中;
验证模块53,适于在运行已集成预设签名校验工具的应用的过程中,调用预设签名校验工具,以根据签名验证信息对已集成预设签名校验工具的应用所对应的签名信息进行验证。
可选地,预设签名校验工具具体为签名校验SDK或者签名校验脚本。
可选地,集成模块52具体用于:
在应用的源码中配置预设签名校验工具;
或者,在应用的程序应用文件中集成预设签名校验工具。
可选地,验证模块53进一步适于:
获取已集成签名校验工具的应用在安装过程中存储在数据磁盘中的文件信息,将文件信息与签名验证信息进行比对;
获取已集成签名校验工具的应用在运行内存中的签名段信息,将签名验证信息与运行内存中的签名段信息进行比对。
可选地,验证模块53进一步适于:
若文件信息与签名验证信息相匹配,则继续运行已集成签名校验工具的应用;
若文件信息与签名验证信息不匹配,则停止运行已集成签名校验工具的应用,并生成停止运行的提示信息。
可选地,提取模块51具体适于:
根据应用所对应的各个签名信息文件,提取应用的签名验证信息;
其中,签名信息文件包括以下中的至少一个:
Info.plist文件、embedded.mobileprovision文件、资源文件、二进制文件。
可选地,提取模块51进一步适于:
提取Info.plist文件中的应用信息作为应用的签名验证信息;其中,应用信息包含以下中的至少一个信息项:应用包名称信息、应用名称信息、应用版本号信息、应用用户权限信息;
提取embedded.mobileprovision文件中的应用签名信息作为应用的签名验证信息;其中,应用的签名信息包含以下中的至少一个信息项:已签的应用包名称信息、已签的应用开发者名称信息、已签的应用所属组别信息、已签的应用支持设备信息、已签的特殊权限信息;
计算资源文件的哈希值作为应用的签名验证信息;其中,资源文件包含以下中的至少一个:图片文件、音频文件、视频文件、链接库文件;
提取应用的二进制文件中的签名段信息作为应用的签名验证信息;签名段信包含以下中的至少一个信息项:应用包名称信息、应用开发者名称信息、应用所属组别信息。
可选地,上述装置进一步包括:
加密模块,适于将提取的应用的签名验证信息进行加密处理。
本申请实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的应用的签名校验方法。
图6示出了根据本发明实施例的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图6所示,该电子设备可以包括:处理器(processor)602、通信接口(CommunicationsInterface)604、存储器(memory)606、以及通信总线608。
其中:
处理器602、通信接口604、以及存储器606通过通信总线608完成相互间的通信。
通信接口604,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器602,用于执行程序610,具体可以执行上述应用的签名校验方法实施例中的相关步骤。
具体地,程序610可以包括程序代码,该程序代码包括计算机操作指令。
处理器602可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器606,用于存放程序610。存储器606可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
程序610具体可以用于使得处理器602执行上述任意方法实施例中的应用的签名校验方法。程序610中各步骤的具体实现可以参见上述应用的签名校验方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的电子设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (14)
1.一种应用的签名校验方法,包括:
根据应用所对应的签名信息文件,提取所述应用的签名验证信息;
将预设签名校验工具集成在所述应用中,所述预设签名校验工具为SDK,该步骤具体通过以下子步骤实现:
将SDK集成到应用中,按照首位加载顺序在应用的可执行文件的动态库信息列表中嵌入SDK的加载信息;
根据SDK的文件信息,对可执行文件包含的动态库加载信息的偏移量信息和长度信息进行修改;
对可执行文件包含的原始动态库的加载序号信息和原始动态库对应的代码在可执行文件中的偏移地址信息进行修改,以及对代码段中原始动态库的位置信息的序号信息进行修改;
根据已修改的可执行文件生成更新应用文件;
在运行已集成预设签名校验工具的应用的过程中,调用所述预设签名校验工具,以根据所述签名验证信息对所述已集成预设签名校验工具的应用所对应的签名信息进行验证。
2.根据权利要求1所述的方法,其中,所述根据所述签名验证信息对所述已集成预设签名校验工具的应用所对应的签名信息进行验证具体包括:
获取所述已集成预设签名校验工具的应用在安装过程中存储在数据磁盘中的文件信息,将所述文件信息与所述签名验证信息进行比对;
获取所述已集成预设签名校验工具的应用在运行内存中的签名段信息,将所述签名验证信息与所述运行内存中的签名段信息进行比对。
3.根据权利要求2所述的方法,其中,在将所述文件信息与所述签名验证信息进行比对之后,所述方法进一步包括:
若所述文件信息与所述签名验证信息相匹配,则继续运行所述已集成预设签名校验工具的应用;
若所述文件信息与所述签名验证信息不匹配,则停止运行所述已集成预设签名校验工具的应用,并生成停止运行的提示信息。
4.根据权利要求1所述的方法,其中,所述签名信息文件包括以下中的至少一个:
Info.plist文件、embedded.mobileprovision文件、资源文件、二进制文件。
5.根据权利要求4所述的方法,其中,根据应用的Info.plist文件,提取所述应用的签名验证信息具体包括:提取所述Info.plist文件中的应用信息作为所述应用的签名验证信息;其中,所述应用信息包含以下中的至少一个信息项:应用包名称信息、应用显示名称信息、应用名称信息、应用版本号信息、应用用户权限信息;
根据应用的embedded.mobileprovision文件,提取所述应用的签名验证信息具体包括:提取所述embedded.mobileprovision文件中的应用签名信息作为所述应用的签名验证信息;其中,所述应用签名信息包含以下中的至少一个信息项:已签的应用包名称信息、已签的应用开发者名称信息、已签的应用所属组别信息、已签的应用支持设备信息、已签的特殊权限信息;
根据应用的资源文件,提取所述应用的签名验证信息具体包括:计算资源文件的哈希值作为所述应用的签名验证信息;其中,所述资源文件包含以下中的至少一个:图片文件、音频文件、视频文件、链接库文件;
根据应用的二进制文件,提取所述应用的签名验证信息具体包括:提取应用的二进制文件中的签名段信息作为所述应用的签名验证信息;所述签名段信包含以下中的至少一个信息项:应用包名称信息、应用开发者名称信息、应用所属组别信息。
6.根据权利要求1-5中任一项所述的方法,其中,在提取所述应用的签名验证信息之后,所述方法进一步包括:
将提取的应用的签名验证信息进行加密处理。
7.一种应用的签名校验装置,包括:
提取模块,适于根据应用所对应的签名信息文件;
集成模块,适于将预设签名校验工具SDK集成到应用中,按照首位加载顺序在应用的可执行文件的动态库信息列表中嵌入SDK的加载信息;根据SDK的文件信息,对可执行文件包含的动态库加载信息的偏移量信息和长度信息进行修改;对可执行文件包含的原始动态库的加载序号信息和原始动态库对应的代码在可执行文件中的偏移地址信息进行修改,以及对代码段中原始动态库的位置信息的序号信息进行修改;根据已修改的可执行文件生成更新应用文件;
验证模块,适于在运行已集成预设签名校验工具的应用的过程中,调用所述预设签名校验工具,以根据所述签名验证信息对所述已集成预设签名校验工具的应用所对应的签名信息进行验证。
8.根据权利要求7所述的装置,其中,所述验证模块进一步适于:
获取所述已集成预设签名校验工具的应用在安装过程中存储在数据磁盘中的文件信息,将所述文件信息与所述签名验证信息进行比对;
获取所述已集成预设签名校验工具的应用在运行内存中的签名段信息,将所述签名验证信息与所述运行内存中的签名段信息进行比对。
9.根据权利要求8所述的装置,其中,所述验证模块进一步适于:
若所述文件信息与所述签名验证信息相匹配,则继续运行所述已集成预设签名校验工具的应用;
若所述文件信息与所述签名验证信息不匹配,则停止运行所述已集成预设签名校验工具的应用,并生成停止运行的提示信息。
10.根据权利要求7所述的装置,其中,所述签名信息文件包括以下中的至少一个:Info.plist文件、embedded.mobileprovision文件、资源文件、二进制文件。
11.根据权利要求10所述的装置,其中,所述提取模块进一步适于:
提取应用的Info.plist文件中的应用信息作为所述应用的签名验证信息;其中,所述应用信息包含以下中的至少一个信息项:应用包名称信息、应用名称信息、应用版本号信息、应用用户权限信息;
提取应用的embedded.mobileprovision文件中的应用签名信息作为所述应用的签名验证信息;其中,所述应用签名信息包含以下中的至少一个信息项:已签的应用包名称信息、已签的应用开发者名称信息、已签的应用所属组别信息、已签的应用支持设备信息、已签的特殊权限信息;
计算应用的资源文件的哈希值作为所述应用的签名验证信息;其中,所述资源文件包含以下中的至少一个:图片文件、音频文件、视频文件、链接库文件;
提取应用的二进制文件中的签名段信息作为所述应用的签名验证信息;所述签名段信包含以下中的至少一个信息项:应用包名称信息、应用开发者名称信息、应用所属组别信息。
12.根据权利要求7-11中任一项所述的装置,其中,所述装置进一步包括:
加密模块,适于将提取的应用的签名验证信息进行加密处理。
13.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-6中任一项所述的应用的签名校验方法对应的操作。
14.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-6中任一项所述的应用的签名校验方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910172469.6A CN109934016B (zh) | 2019-03-07 | 2019-03-07 | 应用的签名校验方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910172469.6A CN109934016B (zh) | 2019-03-07 | 2019-03-07 | 应用的签名校验方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109934016A CN109934016A (zh) | 2019-06-25 |
CN109934016B true CN109934016B (zh) | 2021-11-26 |
Family
ID=66986626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910172469.6A Active CN109934016B (zh) | 2019-03-07 | 2019-03-07 | 应用的签名校验方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109934016B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110334486B (zh) * | 2019-06-28 | 2021-10-08 | 潍柴动力股份有限公司 | 应用程序完整性校验方法及设备 |
CN113064601A (zh) * | 2019-12-30 | 2021-07-02 | Oppo广东移动通信有限公司 | 动态加载文件的确定方法、装置、终端及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106529218A (zh) * | 2016-10-28 | 2017-03-22 | 杭州华三通信技术有限公司 | 一种应用校验方法和装置 |
CN107305495A (zh) * | 2016-04-19 | 2017-10-31 | 华为技术有限公司 | 实现软件安装包功能修改的方法及终端 |
CN109376087A (zh) * | 2018-10-22 | 2019-02-22 | 北京奇艺世纪科技有限公司 | 一种软件测试方法、装置及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107463359A (zh) * | 2016-06-02 | 2017-12-12 | 深圳市慧动创想科技有限公司 | 一种在iOS ipa包植入代码的便捷方法 |
KR20180079852A (ko) * | 2017-01-03 | 2018-07-11 | 삼성에스디에스 주식회사 | 애플리케이션 변환 장치 및 방법 |
-
2019
- 2019-03-07 CN CN201910172469.6A patent/CN109934016B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107305495A (zh) * | 2016-04-19 | 2017-10-31 | 华为技术有限公司 | 实现软件安装包功能修改的方法及终端 |
CN106529218A (zh) * | 2016-10-28 | 2017-03-22 | 杭州华三通信技术有限公司 | 一种应用校验方法和装置 |
CN109376087A (zh) * | 2018-10-22 | 2019-02-22 | 北京奇艺世纪科技有限公司 | 一种软件测试方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109934016A (zh) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108229112B (zh) | 一种保护应用程序、应用程序的运行方法以及装置 | |
CN106295255B (zh) | 应用程序的加固方法和装置 | |
CN109933350B (zh) | 在应用中嵌入代码的方法、装置及电子设备 | |
CN105786538B (zh) | 基于安卓系统的软件升级方法和装置 | |
US20080216071A1 (en) | Software Protection | |
WO2016078130A1 (zh) | 一种防逆向apk文件的动态加载方法 | |
US10579592B2 (en) | Method and apparatus for compressing an application | |
CN111143869B (zh) | 应用程序包处理方法、装置、电子设备及存储介质 | |
WO2016029595A1 (zh) | 开放平台的调用方法、装置、设备及非易失性计算机存储介质 | |
EP2854070A1 (en) | Method and apparatus of creating application package, method and apparatus of executing application package, and recording medium storing application package | |
CN107220547B (zh) | 终端设备及其启动方法 | |
CN111149106B (zh) | 使用多个设备证书进行密钥认证的设备和方法 | |
CN104866739A (zh) | 安卓系统中应用程序加密方法及系统 | |
CN109474600B (zh) | 一种账号绑定方法、系统、装置及其设备 | |
RU2734027C2 (ru) | Способ и устройство для предотвращения атаки на сервер | |
CN109634641B (zh) | 一种应用程序更新方法、装置、电子设备及介质 | |
CN109934016B (zh) | 应用的签名校验方法、装置及电子设备 | |
CN106548065B (zh) | 应用程序安装检测方法及装置 | |
CN108599959B (zh) | 授权证书校验方法、装置及可读存储介质、应用设备 | |
CN108197469B (zh) | 校验应用程序的方法、装置和存储介质以及电子设备 | |
CN111382447B (zh) | 安装包的加密方法、存储介质及计算机设备 | |
CN113535263A (zh) | 动态库调用方法、装置、计算机设备及存储介质 | |
KR101482700B1 (ko) | 해시를 이용한 프로그램의 무결성 검증 방법 | |
WO2020233044A1 (zh) | 一种插件校验方法、设备、服务器及计算机可读存储介质 | |
CN109002710B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211025 Address after: 4f, building C2, Suzhou 2.5 Industrial Park, 88 Dongchang Road, Suzhou Industrial Park, Jiangsu Province, 215021 Applicant after: JIANGSU PAYEGIS INFORMATION SECURITY TECHNOLOGY Co.,Ltd. Applicant after: JIANGSU PAY EGIS TECHNOLOGY Co.,Ltd. Address before: 215021 4 building, 2.5 Industrial Park, building 2.5, Dongchang Road, Suzhou Industrial Park, Jiangsu, China, C2 Applicant before: JIANGSU PAYEGIS INFORMATION SECURITY TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |