一种支持应用软件检查第三方软件的证书的方法和装置
技术领域
本发明涉及Android应用软件的技术领域,尤其涉及一种支持应用软件检查第三方软件的证书的方法和装置。
背景技术
Android系统要求,所有的程序经过数字签名后才能安装。Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系。证书不是用于用户控制哪些程序可以安装。证书不需要授权中心来签名:Android应用程序上使用自己签名的证书是完全允许且普遍的。
在Android开发平台上,每个应用软件会有自己的签名证书,很多软件商店类的软件,会收集大量软件的证书形成自己的数据库,然后,这些软件商店类的软件,会读取第三方软件的证书,跟自己数据库里的做匹配,如果不一致,会提醒用户该软件为盗版。在验证的过程中,有时会出现误报的情况。
发明内容
本发明目的是解决现有技术中应用Android应用软件时软件商店类的软件出现误报的问题。
本发明解决技术问题采用如下技术方案:一种支持应用软件检查第三方软件的证书的方法,包括:应用软件为读取证书调取系统相应的api;启动证书解析模块;所述证书解析模块拦截所述api的参数;所述证书解析模块解析所述api的参数,获得所述应用软件正试图读取第三方软件包里证书的信息;调用证书替换模块;所述证书替换模块从第三方软件包中找到所述证书,并将所述证书返回给所述api。
可选的,所述api为系统的GetPackageInfo。
可选的,所述证书替换模块从第三方软件包中找到所述证书,并将所述证书返回给所述api的步骤更包括:所述证书替换模块将所述证书转换为GetPackageInfo所需数据格式。
可选的,所述证书替换模块从第三方软件包中找到所述证书的步骤更包括:找到的所述证书为原证书,所述原证书是相对于将虚拟机中的加载器模块打进原软件包中形成新的绿色软件包而言。
本发明解决技术问题采用如下技术方案:一种支持应用软件检查第三方软件的证书的装置,包括应用软件、android系统、证书解析模块、证书替换模块和第三方软件包,其中:所述应用软件,与所述android系统耦接,用于为读取证书调取系统相应的api;所述android系统,与所述应用软件、所述证书解析模块和所述第三方软件包耦接,用于接收所述应用软件发出的读取证书的请求、并根据请求启动证书解析模块、以及接收所述第三方软件包提供的证书;所述证书解析模块,与所述android系统和证书替换模块耦接,用于拦截所述api的参数,并解析所述api的参数,获得所述应用软件正试图读取第三方软件包里证书的信息,以及调用证书替换模块;所述证书替换模块,与所述证书解析模块和所述第三方软件包耦接,用于从所述第三方软件包中找到所述证书;所述第三方软件包,与所述证书替换模块和所述android系统耦接,用于将所述证书返回给所述api。
可选的,所述api为所述android系统的GetPackageInfo。
可选的,所述证书替换模块在从第三方软件包中找到所述证书,并将所述证书返回给所述api时更包括:所述证书替换模块将所述证书转换为GetPackageInfo所需数据格式。
可选的,所述证书替换模块从第三方软件包中找到的所述证书为原证书,所述原证书是相对于将虚拟机中的加载器模块打进原软件包中形成新的绿色软件包而言。
本发明具有如下有益效果:
本发明能够支持应用软件检查第三方软件的证书,确保了软件商店在使用应用软件时不出现误报,提升了用户使用体验。
附图说明
图1为本发明的所述一种支持应用软件检查第三方软件的证书的方法流程图;
图2为基于图1所述一种支持应用软件检查第三方软件的证书的装置的结构示意图。
具体实施方式
下面结合实施例及附图对本发明的技术方案作进一步阐述。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
实施例1
本实施例提供了一种支持应用软件检查第三方软件的证书的方法。参见图1所示为本申请支持应用软件检查第三方软件的证书的方法的具体实施例,本实施例中所述方法包括以下步骤:
步骤101:应用软件为读取证书调取系统相应的应用程序编程接口(ApplicationProgrammingInterface,以下简称api);
步骤102:启动证书解析模块;
步骤103:所述证书解析模块拦截所述api的参数;
步骤104:所述证书解析模块解析所述api的参数,获得所述应用软件正试图读取第三方软件包里证书的信息;
步骤105:调用证书替换模块;
步骤106:所述证书替换模块从第三方软件包中找到所述证书,并将所述证书返回给所述api。
其中,所述api为系统的GetPackageInfo。
其中,所述证书替换模块从第三方软件包中找到所述证书,并将所述证书返回给所述api的步骤更包括:所述证书替换模块将所述证书转换为GetPackageInfo所需数据格式。
其中,所述证书替换模块从第三方软件包中找到所述证书的步骤更包括:找到的所述证书为原证书,所述原证书是相对于将虚拟机中的加载器模块打进原软件包中形成新的绿色软件包而言。具体可参加本公司申请的另一篇专利“一种利用高效虚拟机技术管理Android应用软件的方法”,其中描述到原始软件包内只有一个证书,在“一种利用高效虚拟机技术管理Android应用软件的方法”专利生成的绿色版本的应用软件包内就会新增一个证书。那么,在绿色软件安装到移动终端后,系统的GetPackageInfo这个api只能找到新增的证书,而此时这个应用软件是想读取到原来的证书。这样,商店软件获得的证书就是应用软件正确的证书,就能避免误报了。
实施例2
本实施例提供了一种支持应用软件检查第三方软件的证书的装置。参见图2所示为本申请支持应用软件检查第三方软件的证书的装置的具体实施例,本实施例中所述装置包括应用软件201、android系统202、证书解析模块203、证书替换模块204和第三方软件包205,其中:
所述应用软件201,与所述android系统202耦接,用于为读取证书调取系统相应的api;
所述android系统202,与所述应用软件201、所述证书解析模块203和所述第三方软件包205耦接,用于接收所述应用软件201发出的读取证书的请求、并根据请求启动证书解析模块203、以及接收所述第三方软件包205提供的证书;
所述证书解析模块203,与所述android系统202和证书替换模块204耦接,用于拦截所述api的参数,并解析所述api的参数,获得所述应用软件201、正试图读取第三方软件包里证书的信息,以及调用证书替换模块204;
所述证书替换模块204,与所述证书解析模块203和所述第三方软件包205耦接,用于从所述第三方软件包205中找到所述证书;
所述第三方软件包205,与所述证书替换模块204和所述android系统202耦接,用于将所述证书返回给所述api。
其中,所述api为所述android系统202的GetPackageInfo。
其中,所述证书替换模块204在从第三方软件包205中找到所述证书,并将所述证书返回给所述api时更包括:所述证书替换模块204将所述证书转换为GetPackageInfo所需数据格式。
其中,所述证书替换模块204从第三方软件包205中找到的所述证书为原证书,所述原证书是相对于将虚拟机中的加载器模块打进原软件包中形成新的绿色软件包而言。具体可参加本公司申请的另一篇专利“一种利用高效虚拟机技术管理Android应用软件的方法”,其中描述到原始软件包内只有一个证书,在“一种利用高效虚拟机技术管理Android应用软件的方法”专利生成的绿色版本的应用软件包内就会新增一个证书。那么,在绿色软件安装到移动终端后,系统的GetPackageInfo这个api只能找到新增的证书,而此时这个应用软件是想读取到原来的证书。这样,商店软件获得的证书就是应用软件正确的证书,就能避免误报了。
以上实施例的先后顺序仅为便于描述,不代表实施例的优劣。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。