打印文件中的可打印字符串(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,可查看向下兼容的版本:
[root@localhost ~]# 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
