什么是校验和?

发布网友 发布时间:2022-04-22 06:00

我来回答

2个回答

热心网友 时间:2023-11-24 05:32

校验和是常见的冲突避免技术。

校验和(checksum)是指一类算法,可以将任意字节的数据(以下统称为文件)转换为一个简短的值。我们通常也将其称为文件的指纹(fingerprint)或者哈希值(hash)。这可以用于检查两个文件的内容是否相同。

   通常来说,文件在储存或传输的过程中有一定可能会被损坏,例如网络故障,黑客攻击,或者储存介质的个别字节出现故障。如果我们知道文件原来的校验和,就可以随时重新做一次校验和,如果结果和以前不一样,就说明文件被改变了。这也是为什么一些网站的提供文件下载时同时也会提供各种校验和,以便用户下载以后对照校验和确保文件无误。

热心网友 时间:2023-11-24 05:32

登录
首页
学习
实践
活动
专区
工具
TVP
返回腾讯云官网
全栈程序员站长

55.1K 篇文章
关注
校验和(Checksum)「建议收藏」
2022-09-20 15:05:34阅读 1230
大家好,又见面了,我是你们的朋友全栈君。

校验和(Checksum)

PE的可选映像头(IMAGE_OPTION_HEADER)里面,有一个Checksum字段,是该文件的校验和,一般EXE文件可以使0,但一些重要的和系统DLL及驱动文件必须有一个校验和.

Windows 提供了一个API函数MapFileAndCheckSum 测试文件的Checksum,它位于IMAGEHLP.DLL链接库里,其原型:

ULONG MapFileAndCheckSum

{

LPSTR FileName, // 文件名

LPDWORD HeaderSum, // 指向PE文件头的CheckSum

LPDWORD new_checksum // 指向新计算出的Checksum

}

程序一旦运行后,new_checksum 地址处将放当前的文件的校验和,old_checksum地址指向PE文件的checksum字段

安全的方法是将此值放在注册表里,需要时比较.

内存映像校验

磁盘文件完整性校验可以抵抗解密者直接修改文件,但对内存补丁却没有效果,必须对内存关键的代码进行校验.

1 对整个代码进行校验

每个程序至少有一个代码区块和数据区块,数据区块属性可读写,程序运行时全局变量通常会放在这里,这些数据会动态变化,因此校验这部分是没什么意义,而代码段只读,存放的是程序代码,在程序中数据数不会变的,因此用这部分进行内存校验是可行的.

具体实现方法:

(

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com