找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 4537|回复: 3

【讨论】“图种

[复制链接]
发表于 2014-1-26 23:32:37 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
所谓图种,就是网页上的图片点右键另存为,保存的时候改一下后缀(改成7z、RAR、ZIP等)就能变成合法的压缩包,并且能解压出东西。
举例:
HelloWorld.GIF

就是这张图,你点右键另存为,改成7z后缀,就能得到一个压缩包,解压这个压缩包可以得到一个16位DOS的COM程序。这是怎么做到的呢?
首先这个“图种”是我制作的(里面没有种子,所以它不能被称作“图种”)。它是GIF格式的。貌似GIF、BMP、JPG等格式的图片对文件大小的要求并不是很严格,所以就算你直接用WinHEX往文件末尾添加额外的字节,它也能正常显示。
但是如果你把这些“额外字节”写到文件的前面,它还是不能显示。
那么为什么WinRAR等软件就能找到这些额外字节(压缩包)呢?我估计WinRAR、Win7z、WinZIP等软件都提供“自解压格式”。然后这些软件为了能直接打开自解压文件,它们会在文件里一个字节一个字节地搜索文件标识(PK、7z、Rar!等标识),然后打开,列出里面的文件。
这意味着,如果你的EXE文件里面有个压缩格式的资源文件,你把你的EXE的后缀改成7z、RAR、ZIP,也能用WinRAR打开你的EXE中的压缩包。
今晚试试。


lichao:
这个我和熊宁一年前研究过,直接用dos命令copy /b a.jpg+b.rar c.jpg 就可以做到了
回复

使用道具 举报

发表于 2014-1-30 14:15:17 | 显示全部楼层
那么为什么WinRAR等软件就能找到这些额外字节(压缩包)呢?我估计WinRAR、Win7z、WinZIP等软件都提供“自解压格式”。然后这些软件为了能直接打开自解压文件,它们会在文件里一个字节一个字节地搜索文件标识(PK、7z、Rar!等标识),然后打开,列出里面的文件。

个人感觉没这么麻烦,这样太耗时,自解压文件的文件头里应该有个Rar文件头的偏移地址。不管是winrar读取,还是自解压程序读取,直接读取地址之后跳转读取就是。

不过改扩展名能读取这一点,个人感觉是winrar的为了读取受损的压缩文件或者自解压文件而设置的容错处理。
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2014-1-30 14:18:36 | 显示全部楼层
匚haos 发表于 2014-1-30 06:15
那么为什么WinRAR等软件就能找到这些额外字节(压缩包)呢?我估计WinRAR、Win7z、WinZIP等软件都提供“自 ...

嗯,确实一个字节一个字节的比较很费时。我觉得不只是WinRAR,Zip和7z应该也有类似的手段。要是换做我来编写这个东西,我也会考虑偏移量的。
回复 赞! 靠!

使用道具 举报

发表于 2017-9-3 03:10:45 | 显示全部楼层
文件改名后没任何反应= =
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-12-22 09:36 , Processed in 0.039873 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表