deb是什么以及包内部结构?

deb 格式是 Debian 系统(包含 Debian 和 Ubuntu )专属安装包格式,配合 APT 软件管理系统,成为了当前在 Linux 下非常流行的一种安装包。
它基于 tar 包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。由于 Unix 类系统对权限、所有者、组的严格要求,而 deb 格式安装包又经常会涉及到系统比较底层的操作,所以权限等的设置尤其重要。
deb 包本身有三部分组成:数据包、安装信息及控制脚本包、 deb 文件的一些二进制数据,在某些软件中打开可以看到。数据包(data.tar.gz)包含的是实际安装的程序数据,而在安装过程中,该包里的数据会被直接解压到根目录(即 / ),因此在打包之前需要根据文件所在位置设置好相应的文件/目录树。而 control.tar.gz 则包含了一个 deb 安装的时候所需要的控制信息。一般有 5 个文件:control,用了记录软件标识,版本号,平台,依赖信息等数据;preinst,在解包data.tar.gz 前运行的脚本;postinst,在解包数据后运行的脚本;prerm,卸载时,在删除文件之前运行的脚本;postrm,在删除文件之后运行的脚本;

windows解压*deb包

下面界面中点击“browse”选择要解压的deb包,选择好以后如下面的界面
在这里插入图片描述
双击上图中的文件另存为即可得到解压后的文件,winrar软件或其他软件继续解压就能看到包中的文件以及结构了
在这里插入图片描述

linux解压*.deb包

dpkg -x

和windows解压后的结果不同,dpkg -x后直接看到的是有特定含义的一些目录一样的文件,看来比windows下反编译多做了一些事情

RJ@RJ-PC:~/Downloads$ dpkg -x RCC-Client-1.506.deb RCC  #deb包 解压到文件夹RCC中
RJ@ruijie-PC:~/Downloads$ ls -al RCO/  #查看解压后的内容
总用量 24
drwxr-xr-x 6 RJ RJ 4096 813 18:45 .
drwxr-xr-x 3 RJ RJ 4096 921 16:03 ..
drwxrwxrwx 3 RJ RJ 4096 813 18:45 etc
drwxrwxrwx 5 RJ RJ 4096 813 18:45 opt
drwxrwxrwx 4 RJ RJ 4096 813 18:45 usr
drwxrwxrwx 3 RJ RJ 4096 813 18:45 var
RJ@RJ-PC:~/Downloads$ 

ar

这种方式解压后看到的内容和windows下用工具看到的很类似

RJ@RJ-PC:~/Downloads/111$ ls
RCO-Client-3.1.506.deb
RJ@RJ-PC:~/Downloads/111$ ar vx RCC-Client-1.506.deb 
x - debian-binary
x - control.tar.gz
x - data.tar.xz
x - sign
x - sign.tar.gz
RJ@RJ-PC:~/Downloads/111$ ls -al
总用量 817884
drwxr-xr-x 2 RJ RJ      4096 922 22:32 .
drwxr-xr-x 3 RJ RJ      4096 922 22:31 ..
-rw-r--r-- 1 RJ RJ      3605 922 22:32 control.tar.gz
-rw-r--r-- 1 RJ RJ 418728088 922 22:32 data.tar.xz
-rw-r--r-- 1 RJ RJ         4 922 22:32 debian-binary
-rw-r--r-- 1 RJ RJ 418745518 922 22:32 RCO-Client-3.1.506.deb
-rw-r-xr-x 1 RJ RJ      8891 922 22:32 sign
-rw-r-xr-x 1 RJ RJ      4620 922 22:32 sign.tar.gz
RJ@RJ-PC:~/Downloads/111$ tar -xvf control.tar.gz #查看control的内容
RJ@RJ-PC:~/Downloads/111$ tar -xvf data.tar.gz #查看data的内容,包含文件应防止的文件夹

无论是哪种方式反编译了deb,现在都可以去一窥包的内部秘密了,解压control.tar.gz后,可见到里面的脚本,安装过程中做了什么、卸载做了什么都很情况了,可以去研究一下

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐