当前位置: 首页 > news >正文

strip 、objdump、objcopy 差异与区别

strip 、objdump、objcopy 差异与区别

  • strip
    • 命令用于从已编译的可执行文件或目标文件中移除调试信息和其他非必要数据。这可以减小文件的大小,并且有助于保护源代码不被轻易反编译。通常,在发布软件时会使用 strip 命令来减少二进制文件的体积
  • objdump
    • 命令用于显示目标文件的信息,包括汇编语言表示、符号表、重定位条目等。这对于分析和调试程序非常有用
  • objcopy
    • 是一个用于复制和转换目标文件格式的命令行工具。它通常用于在不同的目标文件格式之间进行转换,或者对目标文件进行各种操作,比如提取或嵌入符号表、重定位信息等。

1、获取一个二进制文件,file 看一下基本信息

# file ice-x86.ko : ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), BuildID[sha1]=ca1f40033e8b3ce779deb4604897f67aea62f459, with debug_info, not stripped
-rw-r--r-- 1 root root 33418288 Aug 14 18:44 ice-x86.ko 

2、看下文件中调试信息

# readelf -S ice-x86.ko  |grep debug[73] .debug_aranges    PROGBITS         0000000000000000  000bf2b1[74] .rela.debug_[...] RELA             0000000000000000  0115cf40[75] .debug_info       PROGBITS         0000000000000000  000bfc71[76] .rela.debug_info  RELA             0000000000000000  0115d9d8[77] .debug_abbrev     PROGBITS         0000000000000000  008e8607[78] .debug_line       PROGBITS         0000000000000000  0090f42f[79] .rela.debug_line  RELA             0000000000000000  01d35220[80] .debug_frame      PROGBITS         0000000000000000  009c4d48[81] .rela.debug_frame RELA             0000000000000000  01d374e8[82] .debug_str        PROGBITS         0000000000000000  009d9730[83] .debug_loc        PROGBITS         0000000000000000  00e4d975[84] .rela.debug_loc   RELA             0000000000000000  01d47838[85] .debug_ranges     PROGBITS         0000000000000000  00ff1114[86] .rela.debug_[...] RELA             0000000000000000  01f348d

3、去除调试信息

方式一

a、

  • 使用strip去除文件中全部多余信息,防止被反编译
# strip ice-x86.ko 
# readelf -S ice-x86.ko  |grep debug
  • 看下文件的体积,缩小很多
ll ice-x86.ko  
-rw-r--r--. 1 root root 786496 Aug 15 10:12 ice-x86.ko 
  • file 文件信息中改变,stripped
# file ice-x86.ko  
ice-x86.ko : ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), BuildID[sha1]=ca1f40033e8b3ce779deb4604897f67aea62f459, stripped

b、

  • strip 去除部分 debug 信息
# strip -g ice-x86.ko.xz
# readelf -S ice-x86.ko  |grep debug
  • 看下文件的体积,缩小很多
# ll ice-x86.ko 
-rw-r--r--. 1 root root 1880144 Aug 15 10:07 ice-x86.ko
  • file 文件信息中改变,with debug_info
# file ice-x86.ko.xz 
ice-x86.ko.xz: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), BuildID[sha1]=ca1f40033e8b3ce779deb4604897f67aea62f459, not stripped

方式二

  • 除了使用 strip 还能使用 objcopy 去除部分调试信息
objcopy -g ice-x86.ko
  • 看下文件的体积,缩小很多
# ll ice-x86.ko 
-rw-r--r--. 1 root root 1880144 Aug 15 10:07 ice-x86.ko
  • file 文件信息中改变,with debug_info,相当于执行了 strip -g
# file ice.ko : ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), BuildID[sha1]=ca1f40033e8b3ce779deb4604897f67aea62f459, not stripped
# ll ice-x86.ko  
http://www.lryc.cn/news/425237.html

相关文章:

  • 本地phpstudy部署算命系统,用户端是H5页面,支持微信支付宝支付,支持微信支付宝登录
  • APP上架苹果App Store被拒原因及解决方案
  • docker-compose的下载
  • h3c虚拟园区网概述
  • 云原生和安装Ubuntu 22系统
  • HTTP代理IP如何助力旅游大数据领域?怎么建立安全的代理隧道连接?
  • AIGC从入门到实战:基础理论【核心算法与模型】
  • 极狐GitLab 17.2发布了哪些 JH-Only 的功能?
  • css中的高度塌陷
  • 怎样使用sudo的时候不需要输入密码?
  • kettle的Javascript组件获取T-1天和T+1天
  • YoloV8改进策略:Block改进|LeYOLO,一种用于目标检测的新型可扩展且高效的CNN架构|复现LeYolo,轻量级Yolo改进
  • ODX(Open Diagnostic Data Exchange)简介
  • 记一次CSDN认证模块后端未校验漏洞
  • 【图机器学习系列】(一)图机器学习简介
  • 全网最详细,从一堆字符串,精确抓取想要日期时间的实战2.0
  • 24/8/15算法笔记 dp策略迭代 价值迭代
  • 【MMdetection改进】换遍MMDET主干网络之SwinTransformer-Tiny(基于MMdetection)
  • FL Studio21.2.4最新中文版免费下载汉化包破解补丁
  • 私域场景中的数字化营销秘诀
  • 一键换肤(Echarts 自定义主题)
  • Unity 6 预览版正式发布
  • 如何跳过极狐GitLab 密钥推送保护功能?
  • Android高版本抓包总结
  • 《AI视频类工具之五——​ 开拍》
  • 面试经典算法150题系列-最后一个单词的长度
  • RTT学习
  • 前端面试题(二十五)|附赠完整面试流程
  • 【分布式系统】关于主流的几款分布式链路追踪工具
  • 【吸引力法则】探究人生欲:追求深度体验与宇宙链接