一种用于对应用程序进行校验的装置、方法和相关产品与流程

文档序号:28956438发布日期:2022-02-19 11:53阅读:57来源:国知局
一种用于对应用程序进行校验的装置、方法和相关产品与流程

1.本公开一般地涉及应用程序安全问题技术领域。更具体地,本公开涉及一种用于对应用程序进行校验的装置和方法以及壳启动模块、计算机可读存储介质。


背景技术:

2.随着移动端应用程序(application,“app”)的不断普及,其面临的安全性问题也越来越重要。目前,为了增加移动端app的安全性,通常是通过对app进行加固的方式来防止其被反编译或破解。然而,采用加固的方式一般只注重于app是否会被反编译以及是否会被调试,而往往会忽略对移动端app的完整性的校验。在缺少对移动端app的完整性的校验时,将面临着app被重打包或者被篡改的风险。例如重打包之后的app被替换了重要的文件,甚至被插入了含有安全隐患的代码。因此,如何实现对移动端app的完整性的校验成为亟需解决的技术问题。


技术实现要素:

3.为了至少解决在上文中所提到的一个或多个技术问题,本公开的方案提供了一种用于对应用程序进行校验的方案。利用本公开的方案,可以实现应用程序的完整性的自校验,从而能够提高应用程序运行的安全性。为此,本公开在如下的多个方面提供解决方案。
4.在一个方面中,本公开提供一种用于对应用程序进行校验的装置,包括:计算单元,其配置用于在待校验应用程序启动前,计算所述待校验应用程序内的安装包对应的当前校验值;比较单元,其配置用于:比较所述当前校验值与所述待校验应用程序内的安装包对应的原始校验值是否一致;以及基于对所述当前校验值和所述原始校验值的比较结果对所述待校验应用程序进行校验。
5.在一个实施例中,其中在计算所述待校验应用程序内的安装包对应的当前校验值中,所述计算单元进一步配置用于:计算所述待校验应用程序内的安装包对应的哈希值;以及根据所述哈希值确定所述待校验应用程序内的安装包对应的当前校验值。
6.在另一个实施例中,其中在计算所述待校验应用程序内的安装包对应的哈希值中,所述计算单元进一步配置用于:对所述待校验应用程序内的安装包进行解压缩操作,以获得所述待校验应用程序内的安装包的多个文件;遍历所述多个文件并且利用哈希算法计算每个所述文件对应的哈希值;以及基于每个所述文件对应的哈希值再次执行所述哈希算法获得所述待校验应用程序内的安装包对应的哈希值。
7.在又一个实施例中,其中所述哈希算法至少包括sm3哈希算法、md5哈希算法或者sha1哈希算法。
8.在又一个实施例中,其中在根据所述哈希值确定所述待校验应用程序内的安装包对应的当前校验值中,所述计算单元还进一步配置用于:对所述待校验应用程序内的安装包对应的哈希值执行加密或者混淆操作,以确定所述待校验应用程序内的安装包对应的当前校验值。
9.在又一个实施例中,本公开的装置还包括处理单元,所述处理单元配置用于基于对所述当前校验值和所述原始校验值的比较结果对所述待校验应用程序进行处理。
10.在又一个实施例中,其中在基于对所述当前校验值和所述原始校验值的比较结果对所述待校验应用程序进行处理中,所述处理单元进一步配置用于:响应于所述当前校验值和所述原始校验值一致,启动所述待校验应用程序;或者响应于所述当前校验值和所述原始校验值不一致,退出所述待校验应用程序。
11.在另一个方面,本公开还提供一种壳启动模块,包括根据前述多个实施例所述的装置。
12.在又一个方面,本公开还提供一种用于对应用程序进行校验的方法,包括:在待校验应用程序启动前,计算所述待校验应用程序内的安装包对应的当前校验值;比较所述当前校验值与所述待校验应用程序内的安装包对应的原始校验值是否一致;以及基于对所述当前校验值和所述原始校验值的比较结果对所述待校验应用程序进行校验。
13.在又一个方面,本公开还提供一种计算机可读存储介质,其上存储有用于对应用程序进行校验的计算机可读指令,该计算机可读指令被一个或多个处理器执行时,实现如前述的多个实施例。
14.通过本公开的方案,通过在待校验应用程序启动前,将该待校验应用程序内的安装包对应的当前校验值与其原始校验值进行比较来实现应用程序的自校验,可以有效防止应用程序被重打包或者被篡改,提高了应用程序运行的安全性。进一步地,本公开的实施例通过计算安全包内所有文件的哈希值,以实现应用程序的完整性的自校验。此外,本公开的实施例在启动前对应用程序进行校验,并且通过校验结果执行启动应用程序或者直接退出应用程序来保证应用程序的安全性。
附图说明
15.通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
16.图1是示出根据本公开实施例的用于对应用程序进行校验的装置的示例性结构框图;
17.图2是示出根据本公开实施例的用于对应用程序进行校验的装置的另一示例性结构框图;
18.图3是示出根据本公开实施例的壳启动模块的示例性结构框图;
19.图4是示出根据本公开实施例的用于对应用程序进行校验的方法的示例性流程图;以及
20.图5是示出根据本公开实施例的计算待校验应用程序内的安装包对应的哈希值的示例性流程图。
具体实施方式
21.下面将结合附图对本公开实施例中的技术方案进行清楚和完整地描述。应当理解的是本说明书所描述的实施例仅是本公开为了便于对方案的清晰理解和符合法律的要求
而提供的部分实施例,而并非可以实现本公开的所有实施例。基于本说明书公开的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
22.图1是示出根据本公开实施例的用于对应用程序进行校验的装置100的示例性结构框图。如图1中所示,该装置100可以包括计算单元101和比较单元102。在一个实施例中,前述计算单元101可以用于在待校验应用程序启动前,计算该待校验应用程序内的安装包对应的当前校验值。前述比较单元102可以用于比较当前校验值与待校验应用程序内的安装包对应的原始校验值是否一致,进而基于对当前校验值和原始校验值的比较结果对待校验应用程序进行校验,从而实现对应用程序的自校验。
23.在一个实现场景中,在计算该待校验应用程序内的安装包对应的当前校验值时,上述计算单元首先可以用于计算该待校验应用程序内的安装包对应的哈希值。接着,根据哈希值确定待校验应用程序内的安装包对应的当前校验值。更为具体地,上述计算单元首先可以对待校验应用程序内的安装包进行解压缩操作,以获得待校验应用程序内安装包的多个文件。进一步地,遍历多个文件并且利用哈希算法计算每个文件对应的哈希值,进而基于每个文件对应的哈希值再次执行哈希算法获得待校验应用程序内的安装包对应的哈希值。
24.可以理解,待校验应用程序内的安装包是指可自行解压缩文件的集合,其中包括待校验应用程序安装的所有文件,并且安装包文件多为exe文件格式。当运行安装包时,可以将应用程序的所有文件释放到硬盘上,便于完成修改注册表、修改系统设置、创建快捷方式等工作。在一个实施例中,本公开实施例的计算单元可以通过调用解压缩工具或者执行解压缩算法命令来将待校验应用程序内的安装包进行解压缩,以获得待校验应用程序内安装包的所有文件。
25.在一个实施例中,在遍历多个文件并且利用哈希算法计算每个文件对应的哈希值中,计算单元可以通过执行例如前序遍历、中序遍历或者后序遍历等方式遍历待校验应用程序内的安装包的所有文件。接着,按照一定顺序计算待校验应用程序内的安装包的每个文件对应的哈希值,并根据前述顺序记录每个文件名称和对应的哈希值。关于前述遍历方法本公开在此方面不作任何限制。最后,计算单元再基于每个文件对应的哈希值再次执行哈希算法获得待校验应用程序内的安装包对应的哈希值。
26.在一些实施例中,上述哈希算法可以包括但不仅限于sm3哈希算法、md5哈希算法或者sha1哈希算法。可以理解,前述sm3哈希算法是基于一种密码散列函数标准,其主要用于数字签名及验证、消息认证码生成及验证以及随机数生成等。该密码散列函数(或者称为加密散列函数)通常包括以下四个特性:即对于任何一个给定的消息,较容易运算出散列数值;难以由一个已知的散列数值推算出原始的消息;在不更动散列数值的前提下,不可修改消息内容以及对于两个不同的消息无法给与相同的散列数值。也即基于散列函数输出的结果,较难回推出其输入的数据,由此使得sm3哈希算法安全性以及运算效率较高。本公开优选通过sm3哈希算法计算所有文件的哈希值,在提升计算效率的同时,还可以提高应用程序的安全性。
27.与上述sm3哈希算法相比,md5哈希算法和sha1哈希算法的安全性相对较弱,但其本质均与前述sm3哈希算法相同,即从任何一种数据中创建小的数字“指纹”。在应用场景
中,前述sm3哈希算法、md5哈希算法以及sha1哈希算法均经过数据填充、数据分组以及迭代压缩后获得最终的哈希值。在本公开实施例中,计算单元首先可以利用例如sm3哈希算法对应用程序内的安装包的每个文件执行哈希算法经过例如前述数据填充、数据分组以及迭代压缩等过程获得每个文件对应的哈希值。接着,再利用例如sm3哈希算法对每个文件对应的哈希值执行哈希算法可以获得待校验应用程序内的安装包对应的哈希值。即待校验应用程序内的安装包的所有文件最终对应一个哈希值。
28.基于上述获得的待校验应用程序内的安装包对应的哈希值,本公开实施例的计算单元可以根据该哈希值确定待校验应用程序内的安装包对应的当前校验值。具体而言,计算单元通过对待校验应用程序内的安装包对应的哈希值执行加密或者混淆操作,以确定待校验应用程序内的安装包对应的当前校验值。在一个实施例中,计算单元可以通过调用加密算法或者混淆工具对待校验应用程序内的安装包对应的哈希值执行加密或者混淆操作,以获得待校验应用程序内的安装包对应的当前校验值。
29.如前所述,比较单元可以用于比较当前校验值与待校验应用程序内的安装包对应的原始校验值是否一致,进而基于比较结果来判断待校验应用程序的安装包是否被替换或者被篡改,以实现对待校验应用程序的自校验。在一个实现场景中,待校验应用程序内的安装包对应的当前校验值可以是一个字符串。
30.结合上述描述可知,本公开实施例通过比较待校验应用程序内的安装包对应的当前校验值和待校验应用程序内的安装包对应的原始校验值是否一致,以对待校验应用程序进行自校验,从而避免待校验应用程序被篡改或者被重打包。进一步地,本公开实施例通过利用例如sm3哈希算法计算安装包所有文件的哈希值,实现了待校验应用程序的完整性的自校验,从而极大地提高了待校验应用程序的安全性。特别地,本公开实施例较适用于安卓系统下的应用程序的自校验,以便避免安卓系统下的应用程序中的核心代码或者资源文件被篡改或者被重打包,极大地提高了安卓系统下的应用程序的安全性。
31.在一个实施例中,本公开的装置还可以包括处理单元,该处理单元可以用于基于对当前校验值和原始校验值的比较结果对待校验应用程序进行处理。下面将结合图2详细描述该处理单元。
32.图2是示出根据本公开实施例的用于对应用程序进行校验的装置的另一示例性结构框图。需要理解的是,图2是上述图1中的装置100的另一种实现方式,因此上述关于图1所作的描述同样适用于图2。
33.如图2中所示,本公开实施例的装置可以包括计算单元101、比较单元102以及处理单元201。根据前文可知,前述计算单元101可以用于计算待校验应用程序内的安装包对应的当前校验值。具体地,可以通过利用哈希算法(例如sm3哈希算法)计算待校验应用程序内的安装包每个文件对应的哈希值,并且对每个对应的哈希值再次执行哈希算法(例如sm3哈希算法)获得待校验应用程序内的安装包的所有文件对应的哈希值。进一步地,对待校验应用程序内的安装包对应的哈希值执行加密或者混淆操作获得待校验应用程序内的安装包对应的当前校验值。前述比较单元102可以比较待校验应用程序内的安装包对应的当前校验值与待校验应用程序内的安装包对应的原始校验值是否一致以及基于比较结果对待校验应用程序进行校验。
34.在一个实施例中,上述处理单元201可以用于根据待校验应用程序内的安装包对
应的当前校验值与待校验应用程序内的安装包对应的原始校验值是否一致来对待校验应用程序进行处理。具体来说,响应于待校验应用程序内的安装包对应的当前校验值与待校验应用程序内的安装包对应的原始校验值一致,处理单元201可以通过启动待校验应用程序来对待校验应用程序进行处理。与之相反地,响应于待校验应用程序内的安装包对应的当前校验值与待校验应用程序内的安装包对应的原始校验值不一致,处理单元201可以通过退出该待校验应用程序来对待校验应用程序进行处理,从而能够保证应用程序的安全性。
35.为了在待校验应用程序每次启动前对其进行完整性校验,本公开实施例还提供一种壳启动模块。该壳启动模块可以包括本公开实施例的装置,下面将结合图3详细描述该壳启动模块。
36.图3是示出根据本公开实施例的壳启动模块300的示例性结构框图。如图3中所示,该壳启动模块300可以包括本公开实施例中的计算单元101、比较单元102以及处理单元201。可以理解,该壳启动模块300先于待校验应用程序运行,并且在运行时首先通过执行计算单元101计算待校验应用程序内的安装包对应的当前校验值,接着通过执行比较单元102比较待校验应用程序内的安装包对应的当前校验值与其原始校验值是否一致实现对待校验应用程序的校验。此外,前述壳启动模块300运行时,还可以通过执行处理单元201根据待校验应用程序内的安装包对应的当前校验值与其原始校验值是否一致对待校验应用程序进行处理。例如在当前校验值和原始校验值一致(即安装包未经篡改或者重打包)时,正常启动该待校验应用程序,而在当前校验值和原始校验值一致(即安装包被篡改或者被重打包)时,直接退出该待校验应用程序。关于如何获得当前校验值可以参考上述图1所描述的内容,本公开在此不再赘述。
37.结合上述描述可知,本公开实施例通过壳启动模块先于待校验应用程序运行来对待校验应用程序进行校验,并且当校验通过后才真正启动应用程序,否则将报错或退出应用程序。通过该壳启动模块,本公开实施例不仅可以保证了应用程序的正常运行,而且还能够确保运行的应用程序是未经篡改或者未被重打包的。进一步地,壳启动模块中保存的校验值是经过例如加密或混淆操作后生成的值,其较难伪造。例如可以通过计算单元在so库进行代码混淆或隐藏来增加破解难度,使得攻击者无法基于篡改后的安装包重新计算出正确的校验值。基于此,利用本公开实施例可以实现对应用程序的完整性的自校验,从而能够极大地提高应用程序的安全性。
38.此外,本公开实施例的通过在应用程序启动之前对安装包的完整性进行自校验,这种实时自校验的方式不仅无需联网来获取安装包的原始校验值,也无需在用户手机上存储不同版本的安装包的原始校验值,使得该校验灵活方便。
39.图4是示出根据本公开实施例的用于对应用程序进行校验的方法400的示例性流程图。如图4中所示,在步骤s402处,在待校验应用程序启动前,计算待校验应用程序内的安装包对应的当前校验值。在一个实施例中,可以首先计算待校验应用程序内的安装包对应的哈希值,接着根据前述获得的哈希值确定待校验应用程序内的安装包对应的当前校验值。稍后将结合图5详细描述如何获得计算待校验应用程序内的安装包对应的哈希值。基于获得的待校验应用程序内的安装包对应的哈希值,通过对该哈希值执行例如加密或者混淆操作,可以确定待校验应用程序内的安装包对应的当前校验值。
40.在获得待校验应用程序内的安装包对应的当前校验值后,在步骤s404处,比较当前校验值与待校验应用程序内的安装包对应的原始校验值是否一致。进一步地,在步骤s406处,基于对当前校验值和原始校验值的比较结果对待校验应用程序进行校验。例如当前校验值与原始校验值一致时,表示待校验应用程序未经篡改或者重打包。与之相反地,当前校验值与原始校验值不一致时,表示待校验应用程序被篡改或者被重打包。在一些实施例中,还可以基于当前校验值和原始校验值是否一致对待校验应用程序进行处理。例如正常启动或者直接待校验应用程序。
41.图5是示出根据本公开实施例的计算待校验应用程序内的安装包对应的哈希值的示例性流程图。需要理解的是,图5是上述图4中方法400的一个具体实施例,因此上述关于图1所作的描述同样适用于图5。
42.如图5中所示,在步骤s502处,对待校验应用程序内的安装包进行解压缩操作,以获得待校验应用程序内的安装包的多个文件。在一个实施例中,可以通过调用解压缩工具或者解压缩算法来对待校验应用程序内的安装包进行解压缩。基于获得的安装包的多个文件(即所有文件),在步骤504处,遍历多个文件并且利用哈希算法计算每个文件对应的哈希值。如前所述,可以利用例如sm3哈希算法、md5哈希算法或者sha1哈希算法计算每个文件对应的哈希值。进一步地,在步骤506处,基于文件对应的哈希值再次执行哈希算法(包括sm3哈希算法、md5哈希算法或者sha1哈希算法)获得所述待校验应用程序内的安装包对应的哈希值。如前所述,基于获得的待校验应用程序内的安装包对应的哈希值可以确定其对应的当前校验值。根据待校验应用程序内的安装包对应的当前校验值和待校验应用程序内的安装包对应的原始校验值是否一致,以实现对待校验应用程序进行校验。
43.根据上述结合附图的描述,本领域技术人员也可以理解本公开的实施例还可以通过软件程序来实现。由此本公开还提供了一种计算机程序产品。该计算机程序产品可以用于实现本公开结合附图4-5所描述的用于对应用程序进行校验的方法。
44.应当注意,尽管在附图中以特定顺序描述了本公开方法的操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
45.应当理解,当本公开的权利要求、当说明书及附图中使用到术语“第一”、“第二”、“第三”和“第四”等时,其仅用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
46.还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
47.虽然本公开的实施方式如上,但所述内容只是为便于理解本公开而采用的实施例,并非用以限定本公开的范围和应用场景。任何本公开所述技术领域内的技术人员,在不
脱离本公开所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本公开的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1