一种程序完整性校验方法及装置制造方法及图纸

技术编号:38507223 阅读:10 留言:0更新日期:2023-08-19 16:53
本申请提供了一种程序完整性校验方法及装置,所述程序完整性校验方法,包括:响应于第一程序满足获取条件,获取所述第一程序的度量值,所述第一程序包括第一类Class文件,所述度量值包括第一度量值,所述第一度量值是根据被加载到内存的所述第一类文件的字节码确定的,所述获取条件包括所述第一类文件已加载到内存;根据基线值和所述度量值确定所述第一程序与第二程序是否匹配,所述第二程序包括第二类文件,所述基线值包括第一基线值,所述第一基线值是根据所述第二类文件的字节码确定的,所述第二类文件为所述第二程序中与所述第一类文件对应的类文件。文件对应的类文件。文件对应的类文件。

【技术实现步骤摘要】
一种程序完整性校验方法及装置


[0001]本申请涉及计算机
,尤其涉及一种程序完整性校验方法及装置。

技术介绍

[0002]随着移动互联网的发展以及电子设备的智能化,使得用户可以根据自身的需求为网络设备(如路由器、交换机、服务器)或个人电子设备(如手机、平板电脑)加载应用程序。由于应用程序存在被篡改和攻击的风险。例如,攻击者可以通过篡改应用程序,如植入恶意代码,破坏应用程序的完整性,造成网络设备或个人电子设备使用异常、恶意攻击和信息泄露,或者影响计算机的正常运行。

技术实现思路

[0003]本申请实施例提供了一种程序完整性校验方法及装置,旨在确定被加载到内存的应用程序的完整性。
[0004]第一方面,本申请提供了一种程序完整性校验方法,该方法可以用于判断第一程序与第二程序是否匹配。其中,第一程序是安装与计算机设备上的应用程序,第二程序为厂商发布的原版应用程序。如果第一程序与第二程序匹配,说明第一程序与原版程序一致,第一程序完整。具体地,所述方法包括:在第一程序满足获取条件时,获取第一程序的度量值。其中,第一程序包括第一类(Class)文件,第一程序满足获取条件包括第一Class文件已被加载到内存。度量值包括第一度量值,第一度量值根据被加载到内存中的第一Class文件的字节码确定。也就是说,第一度量值可以体现被加载到内存的第一Class文件的特征。那么在得到度量值之后,可以将度量值和基线值相比较,从而确定第一程序与第二程序是否匹配。其中,基线值包括第一基线值。第一基线值根据第二程序中第二Class文件的字节码确定,第二Class文件为第二程序中与第一Class文件对应的Class文件。这样,通过度量值和基线值,可以确定第一程序与第二程序是否匹配,从而对第一程序进行完整性校验。另外,由于度量值是根据内存中的Class文件确定的,通过比较度量值和基线值就可以判断被加载到内存的第一C程序是否遭到篡改。如此,可以判断内存中的第一程序与第二程序是否匹配,从而确定运行中的第一程序是否遭到篡改。
[0005]在一种可能的设计中,确定第一程序满足获取条件具体包括但不限于以下两种实现方式。
[0006]在第一种实现方式中,通过第一回调函数的触发情况判断第一程序是否满足获取条件。如果第一回调函数被触发确定第一程序满足获取条件。其中,第一回调函数被触发指示第一Class文件已加载到内存。具体地,第一回调函数可以用于监控第一Class文件中方法代码的执行状态,如果第一Class文件中的方法代码进入待执行状态,第一回调函数被触发。由于方法代码被加载到内存之后才能被执行,如果第一回调函数被触发,说明第一Class文件中的方法代码已经被加载到内存。这样,通过监控第一方法的执行状态,可以确定第一程序是否被加载到内存,从而根据内存中的字节码获取度量值。
[0007]在第二种实现方式中,通过内存扫描线程判断第一程序是否满足获取条件。具体地,通过运行内存扫描线程,可以获取内存存储数据的情况,从而判断内存中是否存储有第一程序的Class文件对应的字节码。如果检测到内存中包括第一程序的Class文件对应的字节码,确认第一程序满足获取条件。
[0008]在一种可能的设计中,内存扫描线程还用于获取一个或多个Class文件的字节码。例如,如果第一Class文件被加载到内存,内存扫描线程可以用于获取第一Class文件的字节码。如果第一程序中第三Class文件也被加载到内存,内存扫描线程也能够扫描出第三Class文件被加载到内存,并获取第三Class文件的字节码。
[0009]在一种可能的设计中,度量值是根据Class文件的方法字节码得到的。也就是说,都在获取第一度量值时,可以先获取第一Class文件的方法字节码,再根据第一Class文件的方法字节码确定第一度量值。
[0010]在一种可能的设计中,第一度量值和第一基线值用于确定第一Class文件的校验结果。具体地,如果第一基线值与第一度量值满足校验条件,得到的第一Class文件的校验结果为匹配。如果第一基线值与第一度量值不满足校验条件,得到的第一Class文件的校验结果为不匹配。其中,满足校验条件是指第一度量值与第一基线值相等,或者是指第一度量值与第一基线值之间的误差小于第一阈值。
[0011]在一种可能的设计中,第一程序的完整性校验结果是根据第一Class文件的校验结果得到的,例如第一程序的完整性校验结果可以根据第一基线值和第一度量值确定第一类文件的校验结果确定。具体地,可以先判断第一基线值和第一度量值是否相等或误差在第一阈值以内。如果第一基线值与第一度量值相等或误差在第一阈值以内,说明第一类文件的校验结果为匹配。如果对于第一程序只需要校验第一类文件的校验结果,那么相应地,第一程序与第二程序匹配。如果第一基线值与第一度量值不相等或误差超过第一阈值,说明第一类文件的校验结果为不匹配。相应地,第一程序与第二程序不匹配。
[0012]在一种可能的设计中,第一程序中多个Class文件被加载到内存,那么第一程序的完整性校验结果根据多个Class文件的校验结果确定。具体地,假设第一程序还包括第三Class文件,第二程序还包括与第三Class文件对应的第四Class文件。度量值还包括第二度量值,基线值还包括第二基线值,第二度量值根据第三Class文件的字节码确定,第二基线值根据第四Class文件的字节码确定。那么在判断第一程序与第二程序是否匹配时,可以根据第一度量值和第一基线值确定第一Class文件的校验结果,根据第二度量值和第二基线值确定第二Class文件的校验结果。如果第一Class文件的校验结果为匹配,并且,第三Class文件的校验结果为匹配,确定第一程序与第二程序匹配。如果第一Class文件的校验结果为不匹配,和/或,第三Class文件的校验结果为不匹配,确定第一程序与第二程序不匹配。
[0013]在一种可能的设计中,第一度量值包括第一Class文件对应的字节码的哈希(Hash)值。
[0014]在一种可能的设计中,第一Class文件的方法字节码基于方法字节码的句柄确定。具体地,在确定第一度量值时,可以先获取句柄集合,句柄集合包括一个或多个(Handle),句柄用于标识第一Class文件中方法字节码在内存中的存储位置,例如可以用于表示方法字节码在第一Class文件的字节码对应的存储空间中的具体位置。
[0015]在一种可能的设计中,第一Class文件的方法字节码还包括常量索引字节码,常量索引字节码用于索引常量池中的常量字节码。为了确保第一度量值的稳定性,在计算第一度量值的过程中,在获取到第一Class文件对应的方法字节码之后,可以获取第一Class文件对应的常量池,再从常量池中查找与常量索引字节码对应的常量字节码。接着,可以将第一Class文件对应的方法字节码中的常量索引字节码替换为常量字节码,以便根据替换后方法字节码确定第一度量值。如此,将方法字节码中的常量索引字节码还原为常量字节码,可以提高完整性校验的准确性。
[0016]在本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种程序完整性校验方法,其特征在于,所述方法,包括:响应于第一程序满足获取条件,获取所述第一程序的度量值,所述第一程序包括第一类Class文件,所述度量值包括第一度量值,所述第一度量值是根据被加载到内存的所述第一类文件的字节码确定的,所述获取条件包括所述第一类文件已加载到内存;根据基线值和所述度量值确定所述第一程序与第二程序是否匹配,所述第二程序包括第二类文件,所述基线值包括第一基线值,所述第一基线值是根据所述第二类文件的字节码确定的,所述第二类文件为所述第二程序中与所述第一类文件对应的类文件。2.根据权利要求1所述的方法,其特征在于,所述响应于第一程序满足获取条件,包括:确定第一回调函数被触发,所述第一回调函数被触发指示所述第一类文件已加载到内存。3.根据权利要求2所述的方法,其特征在于,所述第一类文件包括第一方法代码,所述第一程序通过运行所述第一方法代码执行所述第一类文件对应的方法,所述第一回调函数被触发指示所述第一方法代码进入待运行状态。4.根据权利要求1

3任一项所述的方法,其特征在于,所述响应于第一程序满足获取条件,包括:确定运行内存扫描线程,所述内存扫描线程用于获取所述第一类文件的字节码。5.根据权利要求1

6任一项所述的方法,其特征在于,所述获取所述第一程序的度量值,包括:获取所述被加载到内存的所述第一类文件的方法字节码;根据所述第一类文件对应的方法字节码确定所述第一度量值。6.根据权利要求1

5任一项所述的方法,其特征在于,所述根据基线值和所述度量值确定所述第一程序与第二程序是否匹配,包括:根据所述第一基线值与所述第一度量值确定所述第一类文件的校验结果;根据所述第一类文件的校验结果,确定所述第一程序与所述第二程序是否匹配。7.根据权利要求1

6任一项所述的方法,其特征在于,所述第一度量值包括所述第一类文件对应的字节码的哈希Hash值。8.根据权利要求5所述的方法,其特征在于,所述获取所述第一类文件对应的方法字节码包括:获取句柄集合,所述句柄集合包括一个或多个句柄,所述一个或多个句柄用于标识所述第一类文件对应的方法字节码在所述内存中的存储位置;根据所述句柄集合,从所述内存中的存储位置获取所述第一类文件对应的方法字节码。9.根据权利要求1

8任一项所述的方法,其特征在于,在所述根据基线值和所述度量值确定校验结果之前,所述方法还包括:使得所述内存中任意一个类文件处于非运行状态。10.根据权利要求1

9任一项所述的方法,其特征在,所述第一程序包括第三类文件,所述方法还包括:获取类字节码的度量值,所述类字节码是根据所述第三类文生成并存储到内存中的;将所述类字节码的度量值确定为所述类字节码的基线值。
11.根据权利要求10所述的方法,其特征在于,所述将所述类字节码的度量值确定为所述类字节码的基线值之前,所述方法包括:确定所述第三类文件与所述第二程序中与所述第三类文件对应的类文件的校验结果为匹配。12.根据权利要求1

11任一项所述的方法,其特征在于,所述方法还包括:向管理端发送所述第一程序的校验结果。13.根据权利要求1

12任一项所述的方法,其特征在于,所述方法还包括:响应于所述第一程序与第二程序不匹配,使得所述内存中任意一个类文件处于非运行状态。14.根据权利要求1

13任一项所述的方法,其特征在于,所述目标程序为基于JAVA开发的应用程序。15.一种程序完整性校验装置,其特征在于,所述装置包括:获取单元,用于响应于第一程序满足获取条件,获取所述第一程序的度量值,所述第一程序包括第一类Class文件,所述度量值包括第一度量值,所述第一度量值是根据被加...

【专利技术属性】
技术研发人员:吕建荣朱贤员旭东王勋林靖
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1