常用软件upx、unzip、tar那点事
正文
使用 UPX 压缩可执行文件
安装
1 | sudo apt install upx -y |
压缩
1 | upx [options] yourfile |
upx 对文件的默认操作即为压缩,使用上述命令会使用默认参数压缩并替换文件 yourfile。
upx 支持如下可选参数:
1 | -1[23456789]:不同的压缩级别,数值越高压缩率越高,但耗时更长。对于小于 512 KiB 的文件默认使用 -8,其他的默认为 -7。 |
解压
1 | upx -d [yourfile] |
[scode type=”share”]压缩的程序占用更少的硬盘空间,但会在打开时消耗更多的 CPU
资源,在运行时占用更多的内存(或 swap
空间、/tmp
存储等)[/scode]
优点
UPX 可以压缩各种类型的可执行文件
压缩后的文件可以直接由操作系统执行
压缩过程不会修改源文件,也就意味着解压后直接可以得到原始文件
不会产生额外的动态库调用
缺点
运行的程序不会共享数据段(汇编),所以多实例运行的程序不适合压缩
使用 ldd
和 size
命令无法获取到程序的有效信息
原理
为什么压缩后的文件可由系统直接执行?
UPX 将程序压缩,并在头部加入解压的程序,具体的原理可以参看参考[2]。
在 Linux 系统中可以使用 strings
命令查看可执行文件的内容,通过查看 UPX
压缩后的程序可以看到,UPX
在文件中写入了自己的特征码。
设置全局可用
为了方便使用移动 upx 到系统变量目录,如果不愿意使用 root 的话可以将 upx 目录添加到环境变量
1 | sudo cp upx*/upx /usr/bin |
然后就可以使用了
gunzip 和 unzip 解压文件到指定的目录
gzip 命令:
1 | gzip test.txt |
zip 命令:
1 | zip test.zip test.txt |
如何解压缩 tar.xz 文件
下面的例子显示了如何将压缩包内容,解压到文件夹/home/linuxize/files
1 | tar -xf archive.tar.xz -C /home/linuxize/files |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 时光's Blog!
评论