中国领先的IT技术网站
|
|

7.2.2 如何识别Zlib编码

《揭秘数据解密的关键技术》第7章神奇的数据压缩算法,本章介绍了压缩资源文件常用的压缩编码并总结了一些压缩编码的识别方法。本节为大家介绍如何识别Zlib编码。

作者:刘颖东来源:人民邮电出版社|2009-03-04 12:12

沙龙活动 | 去哪儿、陌陌、ThoughtWorks在自动化运维中的实践!10.28不见不散!


7.2.2  如何识别Zlib编码

识别Zlib可以从程序和数据两方面分析。从程序上说Zlib有开源的静态库和动态库,如果游戏编程人员使用静态库嵌入游戏程序中,那么通常使用OllyICE可以在游戏主程序中搜索到类似如下的信息:

"1.2.3"
"ZDeflator::ZDeflator() : deflateInit() failed : %s",LF
"ZDeflator::deflate() : deflate() failed : %s",LF
"ZDeflator::Close() : deflate finish failed.",LF
"ZDeflator::Close() : deflateEnd() failed : %s",LF
"ZInflator::ZInflator() : inflateInit() failed : %s",LF
"ZInflator::inflate() : inflate() failed : %s",LF
"ZInflator::ReadLine() : read failed.",LF
"ZInflator::Close() : deflateEnd() failed : %s",LF
"deflate 1.2.3 Copyright 1995-2005 Jean-loup Gailly"

如果游戏编程人员使用动态链接库,那么游戏目录下通常会有"zlib.dll"文件。需要注意的是PNG图像也使用Zlib压缩数据,如果游戏使用了PNG图像,那么即使有上面列出的信息特征或"zlib.dll"也不代表游戏使用Zlib压缩资源文件,因为游戏可能只是读取PNG文件时使用Zlib解码而已。

从数据上说使用Zlib压缩的数据开头第一个字节是"x78",ASCII码是"x",例如下面3组使用Zlib压缩的文件数据:

 
虽然一个文件中的一个字节是0x78并不能证明数据使用了Zlib压缩,但对比和观察多个同类型的文件,如果发现同一类文件中相同结构的数据开头都是0x78,那么就可以确定数据使用了Zlib压缩。
【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月最赞

读 书 +更多

Cisco网络技术教程(第2版)

本书作为思科认证体系中的入门级教材,主要讲述了网络的基本知识和思科设备的基本命令,以及路由、交换等深层次网络知识的入门知识,其体系...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× Python最火的编程语言