技巧性极强的strings命令

打印文件中的可打印字符串(print the strings of printable characters in files)。常用来在二进制文件中查找字符串,与grep配合使用。strings命令输出的字符串长度为4个或4个以上的,长度小于4的字符串将不予打印,我们可以通过-n参数调整,strings -n 2 filename

strings命令是在对象文件或者二进制文件中查找可打印的字符串,有很多的用途,例如一个用法就是在编译的so中定义字符串常量作为动态库的版本号,然后就可以使用strings+grep 组合命令查看当前编译的so的版本号了。输入strings -h查看strings命令的用法:

用法:strings [选项] [文件]
 打印 [文件] (默认为标准输入) 中可打印的字符串
 选项为:
  -a - --all                Scan the entire file, not just the data section [default]
  -d --data                 Only scan the data sections in the file
  -f --print-file-name      Print the name of the file before each string
  -n --bytes=[number]       Locate & print any NUL-terminated sequence of at
  -<number>                   least [number] characters (default 4).
  -t --radix={o,d,x}        Print the location of the string in base 8, 10 or 16
  -w --include-all-whitespace Include all whitespace as valid string characters
  -o                        An alias for --radix=o
  -T --target=<BFDNAME>     Specify the binary file format
  -e --encoding={s,S,b,l,B,L} Select character size and endianness:
                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit
  -s --output-separator=<string> String used to separate strings in output.
  @<file>                   Read options from <file>
  -h --help                 Display this information
  -v -V --version           Print the program‘s version number
strings:支持的目标: elf64-x86-64 elf32-i386 elf32-iamcu elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big pe-x86-64 pe-bigobj-x86-64 pe-i386 plugin srec symbolsrec verilog tekhex binary ihex
将 bug 报告到 <http://www.sourceware.org/bugzilla/>

在libc.so.6是c标准库,而这个标准库的制作者为了让库的使用者知道该库兼容哪些版本的标准库,就在这个库中定义了一些字符串常量,比如我的系统是centos6.8-x64,我的c标准库在/lib64/libc.so.6,可以直接运行该标准库文件,或者使用ldd --version查看当前版本,以下显示当前版本为2.12

而使用strings /lib64/libc.so.6 | grep GLIBC,可查看向下兼容的版本:

[[email protected] ~]# 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_PRIVATE

https://blog.csdn.net/stpeace/article/details/46641069

原文地址:https://www.cnblogs.com/saolv/p/9684066.html

时间: 2024-10-11 17:23:01

技巧性极强的strings命令的相关文章

linux中的strings命令简介

摘自:http://blog.csdn.net/stpeace/article/details/46641069 linux中的strings命令简介 在linux下搞软件开发的朋友, 几乎没有不知道strings命令的.我们先用man strings来看看: strings - print the strings of printable characters in files. 意思是, 打印文件中可打印的字符.  我来补充一下吧, 这个文件可以是文本文件(test.c), 可执行文件(te

linux中的strings命令简介2

摘自:http://blog.csdn.net/stpeace/article/details/46641069 linux中的strings命令简介 之前我们聊过linux strings的用法和用途, 但据我了解, 还有部分朋友并不常用strings, 这是个不好的习惯. 所以, 本文继续啰嗦一下strings命令. 在软件开发中, 我们经常需要修改代码, 并生成静态库.动态库或者可执行文件, 有时候, 工程太大, 那怎样确定自己改动的代码正确编译到库中去了呢? 用strings命令吧!  

用strings命令查看kafka-log内容

kafka的log内容格式还不没怎么了解,想快速浏览消息内容的话,除了使用它自带的kafka-console-consumer.sh脚本,还可以直接去看log文件本身,不过内容里有部分二进制字符,通过命令看的话会有乱码. strings 命令可以过滤掉二进制编码,但默认它也会过滤掉中文字符,只留有英文字符.要用它的-e S参数可以同时过滤出中文或英文字符,但仍会包含了小部分的二进制编码,可以在通过iconv去掉一下,能大致看到消息内容: $ cat log-strings.sh #!/bin/b

strings命令

(转)linux命令strings       strings - 显示文件中的可打印字符       strings 一般用来查看非文本文件的内容. [-a|-|--all] [-f|--print-file-name] [-o] [--help] [-v|--version] [-n min-len|-min-len|--bytes=min-len] [-t              {o,x,d}[--target=bfdname] |--radix={o,x,d}] file 描述 (D

strings 命令查看exp备份文件

一.描述最近工作中遇到一个案例,客户9i数据库系统,由于主机宕机,主机无法启动,只有exp的备份文件,在我们不知道表空间名称和业务用户的情况下需要对数据进行恢复. 二.操作1.找到exp备份文件,要求备份文件不要备份的本地,找一台备份机.2.通过strings命令可以得知创建表空间和用户的脚本.3.可以按照用户导入,也可以全库导入,可以忽略告警4.不建议使用vi打开几十G的备份文件. exp文件内容如下: <roidb2:orcl2:/home/oracle>$strings expdat.d

任正非:向谷歌学习,杀出一条血路(谷歌军团的编制不大,战斗力极强。任何产品都是架构第一。算法团队直接杀入到项目中去,一线既有算法又有数据,就容易突破,抽象的平台一定要有实践东西检验。蓝军不一定是有学历的。我们帮助他们在工作中完成学历教育)

IT之家1月22日消息 日前,华为心声社区公布了任正非在1月9日在杭州研究所业务汇报会上的讲话.在本次讲话中,任正非表示在软件工程能力提升上,我们最缺乏的是对宏观架构有清醒认识的人才.建立公司是一个架构:建立公司的利益体系也是一个架构:任何产品都是架构第一:软件重构一定要从宏观架构入手. 任正非强调,没有谁在限制我们的科研,我们也不要自己约束了自己,要敢于到贴近人才资源的地方进行研究活动,在每个研究所形成自己的技术要素,对行业发展形成牵引.要多和终端.外研所交流. 最后任正非表示,谷歌军团的编制

痞子衡嵌入式:极精简的Git命令教程(2)- 连接(remote/clone)

今天是Git系列课程第二课,上一课我们已经学会在本地创建一个空repo,痞子衡今天要讲的是如何将本地仓库与远程建立联系. 1.将本地仓库挂上远程git remote 本地建好了仓库,我们希望能够挂到远程服务器上,方便与其他人共享.目前最流行的远程git服务器当然是github,此时你需要在github上注册账户并在线创建一个仓库,此处我们输入仓库名为gittest 点击"Create repository"之后便弹出如下画面,最重要的是我们可以得到一个远程repo的地址:[email 

strings和nm命令

strings和nm命令 strings 一.简介: 显示文件中的可打印字符 二.用法 strings [option(s)] [file(s)] 选项说明: -a – –all 扫描整个文件而不是只扫描目标文件初始化和装载段(缺省时,是只扫描初始化和装载段) -f –print-file-name 在显示字符串前先显示文件名 -n –bytes=[number] 找到并且输出所有NUL终止符序列 - 设置显示的最少的字符数,默认是4个字符 -t –radix={o,d,x} 输出字符的位置,基

linux命令学习——strings

1.用途 打印文件中的可打印字符串.常用来在二进制文件中查找字符串,与grep配合使用.strings命令输出的字符串是至少包含连续4个可打印字符的,这个可以通过参数来修改. 2.常用参数 -a/--all:扫描整个文件而不是只扫描目标文件初始化和装载段 -f/--print-file-name:在显示字符串前先显示文件名 -min-len/-n min-len/--bytes=min-len:设置显示的最少的字符数,默认是4个字符 -t {o,d,x}/--radix={o,d,x}:输出字符