专栏首页C/C++基础Linux命令(64)——strings命令

Linux命令(64)——strings命令

1.命令简介

strings命令是二进制工具集GNU Binutils的一员,用于打印文件中可打印字符串,文件可以是文本文件(test.c),但一般用于打印二进制目标文件、库或可执行文件中的可打印字符。字符串默认至少是4个或更多可打印字符的任意序列,可使用选项改变字符串最小长度。

2.命令格式

nm [-afovV] 
   [-min-len] [-n min-len] [--bytes=min-len]
   [-t radix] [--radix=radix]
   [-e encoding] [--encoding=encoding]
   [-] [--all] [--print-file-name]
   [-T bfdname] [--target=bfdname]
   [-w] [--include-all-whitespace]
   [--help] [--version] file...

3.选项说明

-a,--all,-:扫描整个文件而不是只扫描目标文件初始化和装载段
-d,--data:仅打印文件中已初始化、加载的数据段中的字符串,这可能会减少输出中的垃圾量
-e <encoding>,--encoding=<encoding>:选择字符编码与字节序。encoding可取值s=7bits的ASCII, S=8bits的Latin1, {b,l}=16bits宽字符大小端编码, {B,L}=32bits宽字符大小端编码。其中b,B代表bigendian,l,L代表littleendian
-f,–-print-file-name:在显示字符串前先显示文件名
--help:显示帮助信息
-<min-len>,-n <min-len>,--bytes=<min-len>:指定可打印字符序列的最小长度,而不是默认的4个字符
-o:类似 --radix=o
-t <radix>,--radix=<radix>:输出字符串在文件中的偏移位置,radix可取值o(octal,八进制)、d(decimal,十进制)或者x(hexadecimal,十六进制)
-T <bfdname>,--target=<bfdname>:指定二进制文件格式
-v,-V,--version:显示版本信息
-w,--include-all-whitespace:默认情况下,Tab和空格字符包含在字符串中,但其他空白字符除外,比如换行符和回车符等字符不是。-w使所有的空白字符被认为是字符串的一部分
@<file>:从指定的文件file总读取命令行选项

4.常用示例

(1)打印可执行文件中的所有可读字符串。

strings /bin/ls
/lib64/ld-linux-x86-64.so.2
libselinux.so.1
_ITM_deregisterTMCloneTable
__gmon_start__
_Jv_RegisterClasses
_ITM_registerTMCloneTable
_init
fgetfilecon
freecon
lgetfilecon
...

(2)查看某一个字符串属于哪个文件。

strings -f * | grep "xxx"

(3)查看glibc支持的版本。libc.so.6是c标准库,而这个标准库的制作者为了让库的使用者知道该库兼容哪些版本的标准库,就在这个库中定义了一些字符串常量,使用如下命令可以查看向下兼容的版本。

strings /lib64/libc.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE

参考文献

[1]strings manual [2]GNU Binutils

---------------------

作者:Dablelv

来源:CSDN

原文:https://blog.csdn.net/K346K346/article/details/89088572

版权声明:本文为博主原创文章,转载请附上博文链接!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux命令(48)——stat命令

    stat命令用于显示文件或文件系统的详细信息。在显示文件信息时,比ls命令更加详细。

    Dabelv
  • Linux命令(22)——touch命令

    touch命令用于修改文件或者目录的时间属性,包括访问时间、状态更改时间和内容修改时间。默认情况,若文件不存在,系统会建立一个新的文件。

    Dabelv
  • 虚调用及其调用的具体形式

    虚调用是相对于实调用而言,它的本质是动态联编。在发生函数调用的时候,如果函数的入口地址是在编译阶段静态确定的,就是是实调用。反之,如果函数的入口地址要在运行时通...

    Dabelv
  • centos编译qemu

    战神伽罗
  • KafkaConsumer RequestFuture异步流程控制

    在org.apache.kafka.clients.consumer.internals包内的RequestFuture类可用来定义异步流程,常用的addLis...

    平凡的学生族
  • 通过shell脚本抓取awr报告中的问题sql(r6笔记第78天)

    awr报告中的sql明细部分基本必看的部分,尤其是SQL Order by Elapsed time这个部分,能够很清晰的看到哪些sql语句占用了较多的DB t...

    jeanron100
  • 关于angular2路由激活状态时class设置

    杭州前端工程师
  • Java大学问——优雅地处理异常

    你有没有这样的印象,当你想要更新一款 APP 的时候,它的更新日志里总有这么一两句描述:

    本人秃顶程序员
  • 前端-30分钟熟悉微信小程序

    小程序是一个不需要下载安装就可使用的应用,它实现了应用触手可及的梦想,用户扫一扫或者搜一下即可打开应用。也体现了用完即走的理念,用户不用关心是否安装太多应用的问...

    grain先森
  • MariaDB非分布式数据库经典案例

    问题现象:tdsql-xxxxxx 库plidb表letterperson字段PrintState被大量置为了‘0’

    owenwtyang_杨文涛

扫码关注云+社区

领取腾讯云代金券