惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
WordPress大学
WordPress大学
Vercel News
Vercel News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
小众软件
小众软件
L
LangChain Blog
雷峰网
雷峰网
D
DataBreaches.Net
博客园 - 三生石上(FineUI控件)
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
NISL@THU
NISL@THU
Scott Helme
Scott Helme
量子位
S
Security Affairs
T
Threat Research - Cisco Blogs
博客园_首页
云风的 BLOG
云风的 BLOG
D
Docker
AWS News Blog
AWS News Blog
腾讯CDC
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
U
Unit 42
Recent Announcements
Recent Announcements
Apple Machine Learning Research
Apple Machine Learning Research
G
Google Developers Blog
T
The Exploit Database - CXSecurity.com
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 热门话题
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Last Watchdog
The Last Watchdog
C
Cybersecurity and Infrastructure Security Agency CISA
IT之家
IT之家
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
F
Full Disclosure
L
Lohrmann on Cybersecurity
The Hacker News
The Hacker News
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Y
Y Combinator Blog
S
Security @ Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Check Point Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
N
News and Events Feed by Topic
PCI Perspectives
PCI Perspectives
I
InfoQ

lvbibir's Blog

shell | 磁盘空间分析脚本 Linux cat 和 tee 命令写入文件 python | 使用 uv 管理你的 python 环境 Claude Code 完整配置指南 windows | mihomo 内核独立部署指南 linux | 磁盘扩容 wsl | 释放长久运行占用的磁盘空间 mysql | 线程上限问题处理 麒麟 7.6 安装谷歌 OTP 认证模块 suse 12sp5 升级 openssh 及 openssl suse 12sp5 部署 mysql 5.7 《谁的青春不迷茫》 docker | centos7 部署 docker vim | 基础配置和使用 windows | rime 输入法 & 雾凇方案 shell | sshpass 批量传输文件及执行命令 wsl | 原生 linux 方式安装 docker nodejs | fnm + pnpm 开发环境配置 wsl | 安装配置 miniconda 虚拟环境 wsl | 自动更新系统代理 wsl | bashrc 环境变量不正确加载的处理方法 wsl | win10 安装 wsl2 troubleshooting | ssh 成功但是 scp 失败 linux | 常用命令总结 docker 部署 piclist shell | 检测网站存活并自动钉钉告警 Zabbix | 监控端口连通性并自动追踪 TCP 路由 windows | 自定义开机快速启动项 windows | miniconda 配置 python 虚拟环境 Zabbix | 监控主机到指定 ip 的流量大小 shell | centos 初始化 loki (二) 部署 loki (一) 简介 prometheus (六) Alertmanager prometheus (五) 记录规则与告警规则 prometheus (四) 黑盒监控 prometheus (三) 服务发现 prometheus (二) 静态配置 prometheus (一) 简介及部署 traefik (四) TraefikService 服务 traefik (三) Middleware 中间件 traefik (二) ingressRoute 路由 traefik (一) 简介、部署和配置 kubernetes | Gateway API 简介及部署 linux | dns 配置文件中 search 和 options ndots 详解 kubernetes | command args 和 dockerfile 中的 ENTRYPOINT CMD kubernetes | statefulset 控制器详解 docker | dockerfile 最佳实践 docker | dockerfile 指令详解 linux | kill 命令详解以及 linux 中的信号 troubleshooting | elasticsearch 安装插件报错 shell | if 条件判断 docker | 下载外网镜像的几种方式 python | 鬼谷子数学问题 steam挂刀教程 linux | history 命令的格式化输出 shell | 将本地镜像批量推送到 harbor windows | hosts 文件修复 kubernetes | configmap & secret kubernetes | RBAC 鉴权和 NetworkPolicy kubernetes | service & ingress kubernetes | 存储 kubernetes | 滚动升级和自动伸缩 kubernetes | 控制器 kubernetes | 日志 kubernetes | 调度 kubernetes | pod kubernetes | 杂记 linux | set 命令详解 ceph | openeuler 部署 ceph-v16 ceph | ceph-v16 离线安装解决方案 pxe 如何应对复杂的服务器硬件环境 python | 批量修改目录下文件名 《微习惯》 ceph | openeuler (aarch64) 部署 ceph-v16 troubleshooting | glibc 误升级后修复 pxe 安装配置大全 《人间失格》 跑步日常 [置顶] Hello, hugo! shell | 检索某 url 中所有文件的内容 shell | 不同执行方式的区别 shell | 开启 debug 模式 vscode | 常见问题 windows & linux 多网卡时设置默认路由以及添加静态路由 mysql (二) 主从复制原理 GTID 并行复制 mysql (一) 部署 mysql | 杂记 cicd | jenkins 部署 mall-swarm 项目 httpd 源码打包编译成 rpm 包 openssl 源码打包编译成 rpm 包 centos7 | 修改网卡名称 ceph | pool pg_num 配置 docker | 脚本方式批量导出/导入镜像 centos 密码尝试次数过多问题处理 centos7 | 升级内核至 5.10 CVE-1999-0526 ceph | centos7 部署 ceph-v12 python | 修改 pip 源 troubleshooting | 安装 cloud-init 后导致 ssh 连接失败
通过反编译修改 rpm 包内的文件
lvbibir · 2021-12-01 · via lvbibir's Blog

0 前言

本文参考以下链接:

要修改 rpm 包中的文件,对于自己编译的 rpm 包,只需要在源码中修改好然后重新编译即可。而对于并不是自己编译的 rpm 包,且不熟悉编译环境的情况下,可以使用 rpm-build 和 rpm-rebuild 工具反编译来修改 rpm 中的文件

这里使用 ceph-mgr 软件包进行演示

1 安装 rpm-build&rpmrebuild

rpmrebuild 官网 rpmrebuild 下载地址

解压 rpmrebuild

[root@localhost ~]# mkdir -p /data/rpmbuild
[root@localhost ~]# tar zxf rpmrebuild-2.15.tar.gz  -C /data/rpmbuild/
[root@localhost ~]# ll /opt/rpmrebuild/

rpm-build 直接使用 yum 安装即可

[root@localhost ~]# yum install -y rpm-build

2 反编译&修改&重新编译

安装准备重新打包的 rpm

[root@localhost ~]# rpm -ivh ceph-mgr-12.2.13-0.el7.x86_64.rpm

查看 rpm 的安装名称

[root@localhost ~]# rpm -qa |grep mgr
ceph-mgr-12.2.13-0.el7.x86_64

配置 rpm 编译目录

vim ~/.rpmmacros

%_topdir /data/rpmbuild

创建目录

mkdir  /data/rpmbuild/BUILDROOT
mkdir  /data/rpmbuild/SPECS

执行脚本

[root@localhost ~]# cd /data/rpmbuild/
[root@localhost rpmbuild]# ./rpmrebuild.sh -s SPECS/abc.spec ceph-mgr
[root@localhost rpmbuild]# cd

解压原版 RPM 包

[root@localhost ~]# rpm2cpio ceph-mgr-12.2.13-0.el7.x86_64.rpm |cpio -idv

这里软件包解压后是两个目录

image-20211206162209187

根据需求替换修改解压后的文件,这里我替换两个文件 /root/usr/lib64/ceph/mgr/dashboard/static/Ceph_Logo_Standard_RGB_White_120411_fa.png/root/usr/lib64/ceph/mgr/dashboard/static/cover-mini.png,并给原先的文件做一个备份

[root@localhost static]# mv cover-mini.png cover-mini.png.bak
[root@localhost static]# mv Ceph_Logo_Standard_RGB_White_120411_fa.png Ceph_Logo_Standard_RGB_White_120411_fa.png.bak
[root@localhost static]# cp kubernetes-logo.svg cover-mini.png
[root@localhost static]# cp kubernetes-logo.svg Ceph_Logo_Standard_RGB_White_120411_fa.png

修改 abc.spec 文件

找到原文件所在的行,添加备份文件

[root@localhost ~]# vim /data/rpmbuild/SPECS/abc.spec

image-20211206164745856

image-20211206164843805

这里创建的 bbb 目录是临时使用,编译过程肯定会报错,因为路径不对,根据报错修改路径

[root@localhost ~]# mkdir -p /data/rpmbuild/BUILDROOT/bbb/
[root@localhost ~]# mv ./usr/ /data/rpmbuild/BUILDROOT/bbb/
[root@localhost ~]# mv ./var/ /data/rpmbuild/BUILDROOT/bbb/
[root@localhost ~]# rpmbuild -ba /data/rpmbuild/SPECS/abc.spec

这里可以看到他请求的路径

image-20211206163921954

修改目录名

[root@localhost ~]# mv /data/rpmbuild/BUILDROOT/bbb/ /data/rpmbuild/BUILDROOT/ceph-mgr-12.2.13-0.el7.x86_64

再次编译

[root@localhost ~]# rpmbuild -ba /data/rpmbuild/SPECS/abc.spec

生成的 rpm 位置在/data/rpmbuild/RPMS/

image-20211206163618292

查看原 rpm 包的文件

[root@localhost ~]# cd /usr/lib64/ceph/mgr/dashboard/static
[root@localhost static]# ll
total 16
drwxr-xr-x 5 root root  117 Dec  6 03:11 AdminLTE-2.3.7
-rw-r--r-- 1 root root 4801 Jan 30  2020 Ceph_Logo_Standard_RGB_White_120411_fa.png
-rw-r--r-- 1 root root 1150 Jan 30  2020 favicon.ico
drwxr-xr-x 7 root root   94 Dec  6 03:11 libs
-rw-r--r-- 1 root root 1811 Jan 30  2020 cover-mini.png

安装新 rpm 包,查看文件

[root@localhost ~]# cd /data/rpmbuild/RPMS/x86_64
[root@localhost x86_64]# rpm -e --nodeps ceph-mgr
[root@localhost x86_64]# rpm -ivh ceph-mgr-12.2.13-0.el7.x86_64.rpm
[root@localhost x86_64]# cd /usr/lib64/ceph/mgr/dashboard/static
[root@localhost static]# ll
total 24
drwxr-xr-x 5 root root  117 Dec  6 03:53 AdminLTE-2.3.7
-rw-r--r-- 1 root root 1877 Dec  6 03:44 Ceph_Logo_Standard_RGB_White_120411_fa.png
-rw-r--r-- 1 root root 4801 Dec  6 03:41 Ceph_Logo_Standard_RGB_White_120411_fa.png.bak
-rw-r--r-- 1 root root 1150 Dec  6 03:41 favicon.ico
drwxr-xr-x 7 root root   94 Dec  6 03:53 libs
-rw-r--r-- 1 root root 1877 Dec  6 03:44 cover-mini.png
-rw-r--r-- 1 root root 1811 Dec  6 03:41 cover-mini.png.bak

至此,rpm 包中的文件修改以及重新打包的所有步骤都已完成

以上