随笔分类 -  7zip

摘要:这是7z文件格式及其源码的分析系列的第五篇.上一篇讲到了7z文件压缩流程。最近太忙了,好久没更新,都快忘了写到哪了。:)这一篇就说说7z文件的尾头的生成方式吧。上一篇已经讲了尾header的结构了。它其实就是记录了压缩文件详细信息。那么尾header是如何存储的呢?先看一个图:这是整个7z文件的结构。 最后面的绿色“尾文件头” 就是我们要说的目标。7z的尾文件头有两种存储方式。第一, 最简单的, 就是把尾文件头的内容直接写在后面, 不做任何处理。这种方式最简单,但是却最不常用。 原因是什么。 我们看上一篇中说到的尾文件头的内容就知道了。 举个简单的例子, 比方说你要压缩大量的文件,比如100个 阅读全文
posted @ 2013-11-02 17:16 -Neil 阅读(5302) 评论(21) 推荐(5) 编辑
摘要:这是7z文件格式及其源码的分析系列的第四篇. 上一篇讲到了7z文件静态结构的尾header部分.这一篇开始,将从7z实际压缩流程开始详细介绍7z文件尾header的详细结构.一, 第一个概念: coder.在7z的压缩过程中, 一个非常核心的概念就是coder. 一个coder代表一个算法, 通常是指一个压缩或解压算法(也包括过滤算法和加密算法等). 例如, 在7z中lzma算法就是一个coder, deflate算法也是一个coder. 7z中用于加密的AES256算法也是一个coder. 所以概念上讲, 能处理一个文件流的算法就是一个coder. 这个"处理"的概念可以 阅读全文
posted @ 2013-09-07 22:24 -Neil 阅读(9119) 评论(11) 推荐(14) 编辑
摘要:上一篇在这里. 这是7z文件格式分析的第三篇, 相信有了前两篇的准备,你已经了解了7z源码的大致结构, 以及如何简单调试7z的源码了. 很多同学是不是迫不及待想要拔去7z的神秘外衣,看看究竟了. 好, 这就带你们一探乾坤. 本文开始,我们详细介绍7z的文件存储结构.要了解7z的结构, 当然最好从官方的说明开始, 尽管这个说明非常简略, 但它的确是我入门时的救命稻草.打开源码的 "DOC" 目录. 这里面就是官方所有的文档了. 其中只有二个文档跟结构相关:1. 7zFormat.txt, 这是我们的主角, 里面介绍了7z文件的大体结构.2. Methods.txt, 这里面介 阅读全文
posted @ 2013-08-31 22:13 -Neil 阅读(11551) 评论(6) 推荐(13) 编辑
摘要:这是第二篇, 第一篇在这里: 这一篇开始分析7z的源码结构.一. 准备工作:1. 源码下载:可以从官方中文主页下载:http://sparanoid.com/lab/7z/. 为了方便, 这里直接给出下载链接: http://downloads.sourceforge.net/sevenzip/7z920.tar.bz2 . 2. 工具准备:源码中给的工程文件都是vc6.0的工程. 作者说他不喜欢新vs的界面. 哎. 不过没关系, 我们使用VS2008也一样可以. 有极少地方需要修改一下. 我们使用VS2008 sp1 作为开发环境.二. HelloWorld:我们在根目录下新建一个目录&qu 阅读全文
posted @ 2013-08-18 16:18 -Neil 阅读(11475) 评论(11) 推荐(6) 编辑
摘要:本文是一个系列. 主要是分享我最近一年做7z文件开发的经验. 主要包括7z官方源码的结构分析, 以及7z文件格式的分析. 其中涉及到7z源码结构的各个细节, 以及7z文件格式的具体细节. 本文适合对象: 想要了解学习7z源码的开发人员, 想要了解7z文件格式细节, 做7z文件压缩器和解压器的开发人员, 以及其他压缩文件爱好者等等. 目前7z的最新稳定版是9.20, 而9.30版本还在alpha版本. 所以本文是基于其9.20版本. 我将尽可能详细的描述所有细节, 但到目前为止我了解到的细节大概能到八成到九成的样子. 也不是百分百. 希望能和大家共同讨论学习. 这些信息足以开发一个工业... 阅读全文
posted @ 2013-08-16 15:48 -Neil 阅读(11668) 评论(16) 推荐(3) 编辑