cean-2.0.sh为CEAN在Linux的安装器,使用Vim打开后发现shell文件末尾为一些二进制乱码,查看该文件中的shell语句,安装过程并没有进行联网,且shell语句并且比较少。故怀疑文件后面的二进制是有用的,用于进行安装CEAN。查看该文件,发现其中有如下逻辑:
app=cean
ext=”tar -zxf -”
dd if=$0 bs=512 skip=2 2>/dev/null | (cd $app; $ext)
test -x $app/bin/postinstall.sh && (cd $app; bin/postinstall.sh $*)
故猜想文件后面的二进制为压缩包数据,使用dd把该数据提取出来,再使用tar进行解压,使用解压后的bin/postinstall.sh进行安装。
尝试使用dd if=cean-2.0.sh bs=512 skip=2 2>/dev/null > a.tgz,得到压缩包,的确可以解压并查看a.tgz的内容而没有提示文件受损,说明文件后面的数据的确为压缩包数据。
从此可知道在一个文件存放两种不同格式数据的方法,另外格式的数据可使用dd在指定偏移处读取,为了偏移对齐某个整数(如512),可在两种格式数据间插入\0。该方法类似于在图片中隐藏包含压缩包。但本人觉得使用该方法制作发布版本不如发布一个压缩包,压缩包里面再包含执行安装的shell及相关文件,不仅不利于用户理解,且制作发布版本过程相对比较复杂。
阅读全文...