编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

PatchELF:修改现有ELF可执行文件和库的简单实用程序

wxchong 2024-10-27 15:36:31 开源技术 49 ℃ 0 评论

更多互联网新鲜资讯、工作奇淫技巧关注原创【飞鱼在浪屿】(日更新)

PatchELF是用于修改现有ELF可执行文件和库的简单实用程序。

比如说:

  • 更改可执行文件的动态加载程序(“ ELF解释程序”):
$ patchelf --set-interpreter /lib/my-ld-linux.so.2 my-program
  • 更改RPATH可执行文件和库:
$ patchelf --set-rpath /opt/my-libs/lib:/other-libs my-program
  • 缩小RPATH可执行文件和库:
$ patchelf --shrink-rpath my-program

这将从RPATH所有不包含由DT_NEEDED可执行文件或库的字段引用的库的目录中删除。

  • 删除声明的对动态库的依赖(DT_NEEDED 条目):
$ patchelf --remove-needed libfoo.so.1 my-program
  • 在动态库(DT_NEEDED)上添加声明的依赖项:
$ patchelf --add-needed libfoo.so.1 my-program
  • 将声明的对动态库的依赖项替换为另一个(DT_NEEDED):
$ patchelf --replace-needed liboriginal.so.1 libreplacement.so.1 my-program
  • 更改SONAME动态库:
$ patchelf --set-soname libnewname.so.3.4.5 path/to/libmylibrary.so.1.2.3

编译与测试

git clone https://github.com/NixOS/patchelf.git
./bootstrap.sh 
./configure 
make 
make check 
sudo make install

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表