NSIS安装包自校验机制
2012-12-22 10:09
916 查看
当NSIS安装包自校验错误的时候(数据不完整或被病毒感染等原因)会弹出下图这样的提示
NSIS自校验分为两个部分:数据完整性检查和CRC校验
一、数据完整性
检查数据的SIZE,如果当前的数据SIZE小于特征中记录的值,那么就认为安装包是不完整的,就会弹出提示窗口。
安装程序首先打开自己,从头部开始每次读取512字节,然后取这512字节的前28字节(数据体头部特征)
图中高亮的部分
在调试安装包过程中发现这个头部的前20字节是固定的
01~04 Byte: 00 00 00 00
05~08 Byte: EF BE AD DE
09~20 Byte: Ansi字符串 "NullsoftInst"
21~24 Byte: 不详
25~28 Byte: 整个数据体的Size,从这个特征头的开始偏移算起(图中的0x8600)
二、CRC校验
安装程序会取一段数据计算其CRC的值并和记录中保存的值作比较
这段数据就是从文件的偏移0x200处开始,一直到数据体的末尾再减去4字节(这4字节就是CRC值)
用图片来说明一下
数据体头从0x8600开始
图中的 24 00 00 00 就是数据体的大小(背景高亮处 0x8600 ~ 0x8623)
接着的 11 11 11 11 就是安装数据,当然实际中这段代码是很长的的,图中是为了演示才改的4个字节
最后的 88 88 88 88 就是正确的CRC值。从文件0x200处开始到0x861F处
NSIS自校验分为两个部分:数据完整性检查和CRC校验
一、数据完整性
检查数据的SIZE,如果当前的数据SIZE小于特征中记录的值,那么就认为安装包是不完整的,就会弹出提示窗口。
安装程序首先打开自己,从头部开始每次读取512字节,然后取这512字节的前28字节(数据体头部特征)
图中高亮的部分
在调试安装包过程中发现这个头部的前20字节是固定的
01~04 Byte: 00 00 00 00
05~08 Byte: EF BE AD DE
09~20 Byte: Ansi字符串 "NullsoftInst"
21~24 Byte: 不详
25~28 Byte: 整个数据体的Size,从这个特征头的开始偏移算起(图中的0x8600)
二、CRC校验
安装程序会取一段数据计算其CRC的值并和记录中保存的值作比较
这段数据就是从文件的偏移0x200处开始,一直到数据体的末尾再减去4字节(这4字节就是CRC值)
用图片来说明一下
数据体头从0x8600开始
图中的 24 00 00 00 就是数据体的大小(背景高亮处 0x8600 ~ 0x8623)
接着的 11 11 11 11 就是安装数据,当然实际中这段代码是很长的的,图中是为了演示才改的4个字节
最后的 88 88 88 88 就是正确的CRC值。从文件0x200处开始到0x861F处
相关文章推荐
- NSIS打包的软件开启时已安装检测机制
- ubuntu14.04安装opencv3.1.0遇ICV文件校验问题
- NSIS安装msi文件
- 简单rpm安装升级卸载查询以及校验操作
- npm 模块安装机制简介
- Android APK安装与卸载机制
- NSIS安装工具的System插件的问题
- linux rpm 校验已安装的软件包
- SpringMVC提供两种校验机制
- 用NSIS安装日志install。log解决了一个安装出现隐蔽的问题、不用看代码,可以节省大把时间!开心!
- nsis 检测vcredist_x86是否安装
- 在Debian 4.0 rc3上安装postfix+sasl 验证及防垃圾SPAM机制
- Silverlight校验框架的限制——基于异常的验证机制
- 代码校验工具 SublimeLinter 的安装与使用
- NSIS 制作 64 位系统下的安装程序
- NSIS—程序互斥函数(只能运行一个安装程序,安装时不能卸载)
- 突破Linux内核模块校验机制
- 深度参与: 可安装的应用与通知推送机制(Google开发者大会演讲PPT&视频)
- NSIS安装与向导生成代码
- ROS源码研究(一):从source安装ROS和使用overlay机制进行源码修改