日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux应用程序逆向,Linux下查看并下载命令源码包(根据命令/应用程序逆向获取并且安装其所属源码包)...

發布時間:2024/9/27 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux应用程序逆向,Linux下查看并下载命令源码包(根据命令/应用程序逆向获取并且安装其所属源码包)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用linux的過程中,我們會熟悉各種命令,偶爾我們不禁會問,這些命令是怎么實現的,學習他們其實是學習linux高級系統編程很快捷的方法。

這些命令的源碼肯定是存放在相應的包里面,但是是哪些包呢?

發行版的包管理器為我們提供了很方便的命令接口,供我們查找我們指定命令所在的包

比如我們以最普通的uname命令來說明,

使用我們使用whereis或者which命令可以查找命令的絕對位置

通過rpm或者dpkg命令搜索命令所屬的包信息

下載并安裝對應的源碼source包,即可得到源碼

CentOS等rpm包管理器

搜索斌下載命令所屬包

怎么查看某個命令的源代碼

比如想查看uname這個命令的源代碼

## 查看命令

which uname

## /bin/uname

##查看命令所屬的包

rpm -qf /bin/uname

##下載對應的xxx.src.rpm源碼包

yumdownloader --source coreutils-版本號

[問題1]

沒有yumdownloader 的話可以這樣子安裝

yum install yum-utils

[問題2]

如果提示No Match for argument coreutil-5.97-23.el5_4.2

說明源中可能沒有這個包,那么我們只能手動下載

注意

我們需要的是源碼包,因此下載的應該是xxx.src.rpm的包。

安裝或則解壓源碼包得到源碼

下載了源碼包以后有兩種方法可以查看到源碼包,

第一種方法

rpm -qpl coreutils-8.5-7.fc14.src.rpm | grep tar ##查詢rpm中的tar文件,源碼一般放在這里

##從rpm包中提取指定的文件

rpm2cpio coreutils-8.5-7.fc14.src.rpm | cpio -idv coreutils-8.5.tar.xz

tar xjvf coreutils-8.5.tar.xz

##到解壓出來的coreutils-8.5/src/中就能找到相關的源碼了

第二種方法:安裝源碼包

rpm -i coreutils-8.5-7.fc14.src.rpm ##安裝源碼包

centos和rhel一般安裝后的源碼在/usr/src/redhat下的各個目錄下,但fedora是在~/rpmbuild/SOURCES/

可以通過locate命令查詢代碼包被安裝到哪里了

locate coreutils*tar

/home/workhard/tmp/coreutils-8.5.tar.xz

/home/workhard/rpmbuild/SOURCES/coreutils-8.5.tar.xz

cd /home/workhard/rpmbuild/SOURCES/c

tar Jxvf coreutils-8.5.tar.xz

cd coreutils-8.5/src/

ll uname*

安裝*.src.rpm后怎么卸載

cd /home/gatieme/rpmbuild/SOURCES

rpmbuild --rmsource --rmspec coreutils.spec

相關說明

yumdownloader

yumdownloader comes from the yum-utils package, if you don’t have that installed already.

yum install yum-utils

RPM用法

rpm {-i|--install} [install-options] PACKAGE_FILE ...

-f, --file FILE

Query package owning FILE.

-p, --package PACKAGE_FILE

Query an (uninstalled) package PACKAGE_FILE.

-l, --list

List files in package.

-qf:查找指定文件屬于哪個RPM軟件包

-qpl:列出RPM軟件包內的文件信息;

rpm2cpio

Extract cpio archive from RPM Package Manager (RPM) package.

顧名思義,rpm2cpio是將rpm包文件轉換成cpio歸檔文件

CPIO用法

cpio - copy files to and from archives

-i 抽取的意思,和"--extract"等同-d 建立目錄,和"--make-directories"等同-v 冗余信息輸出,和"--verbose"等同

rpmbuild用法

--rmsource

Remove the sources after the build

--rmspec

Remove the spec file after the build

Ubuntu等deb包

與RedHat系列的rpm包不同,Ubuntu使用的是Debian的deb包,因此搜索和安裝的方式略有不同,但是思路是一樣的

找到想看源碼的命令屬于哪個包:

dpkg -S `which cp`

coreutils: /bin/cp

下載源碼:

apt-get -d source "coreutils"

其他發行版

其實我們從上面的過程就可以看到,大多數的命令源碼都是在包coreutils中的,其他發行版直接下載即可

coreutils 是GNU下的一個軟件包,包含linux下的 ls等常用命令。這些命令的實現要依賴于shell程序。

GNU/CoreUtils 是一組類 Unix 操作系統所需的基礎軟件包。它包含三組命令,常用的命令如 cat、ls、rm。

對于其他一些非標準的包,我們可以采用同樣的方法,因為這些命令必然我們安裝的包或者應用程序所自帶的,比如git

再比如top命令等,就位于procps包中

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的linux应用程序逆向,Linux下查看并下载命令源码包(根据命令/应用程序逆向获取并且安装其所属源码包)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。