strip 、objdump、objcopy 差异与区别

news/2024/9/24 9:19:45/

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.ppmy.cn/news/1510173.html

相关文章

uniapp 微信小程序生成水印图片

效果 源码 <template><view style"overflow: hidden;"><camera device-position"back" flash"auto" class"camera"><cover-view class"text-white padding water-mark"><cover-view class"…

《基层回忆录》第三章:新同事

异地在县城里的两天&#xff0c;白天外面热得要死&#xff0c;一觉睡到中午&#xff0c;点个外卖&#xff0c;直到晚上才出去&#xff0c;和dz一起找个摊子&#xff0c;或找个饭馆&#xff0c;品尝一下zg特色。周日下午&#xff0c;坐13&#xff1a;30的班车回到乡镇。 入户走访…

快速把文件名统计到excel表的方法

文件名统计到EXCEL表&#xff0c;这似乎很多人都没听说过&#xff0c;因为它与EXCEL表格不沾边&#xff0c;那么这个需求如何实现&#xff0c;用到什么方法&#xff0c;今天给大家介绍一个比较实用的方法&#xff0c;它可以把文件名或文件夹的名快速提取并统计到EXCEL表格上去。…

MySQL 查询分组内最新的第一条数据

目录 1、MySQL 5版本的写法 2、MySQL 8版本的写法 由于MySQL 5不支持窗口函数&#xff0c;因此不能使用PARTITION()、ROW_NUMBER() &#x1f330;&#xff1a;获取每个班级中最新注册的学号人员信息 也就是从 user_info 学生表中获取每个 class_id 班级的最新一条记录 1、…

软件运维实施维保方案(Doc完整版原件)

1.项目情况 2.服务简述 2.1服务内容 2.2服务方式 2.3服务要求 2.4服务流程 2.5工作流程 2.6业务关系 2.7培训 3.资源提供 3.1项目组成员 3.2服务保障 软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产…

Python进阶之3D图形

Python进阶之3D图形 在数据可视化中&#xff0c;2D图形通常可以满足大多数需求。然而&#xff0c;对于一些复杂的数据或分析&#xff0c;3D图形可以提供更多的视角和洞察。在Python中&#xff0c;使用 Matplotlib 和 Plotly 等库可以轻松创建各种3D图形。本文将介绍如何使用这…

【Redis】Redis 数据类型与结构—(二)

Redis 数据类型与结构 一、值的数据类型二、键值对数据结构三、集合数据操作效率 一、值的数据类型 Redis “快”取决于两方面&#xff0c;一方面&#xff0c;它是内存数据库&#xff0c;另一方面&#xff0c;则是高效的数据结构。 Redis 键值对中值的数据类型&#xff0c;也…

浏览器批量抓取网页数据保存为文件

安装 https://github.com/gildas-lormeau/SingleFile-MV3Download the zip file (https://github.com/gildas-lormeau/SingleFile-MV3/archive/master.zip) of the project and install it manually by unzipping it somewhere on your disk and following these instructions…