Binutils - strings工具

strings是一个用于从二进制文件中检索和打印可读字符串的工具。它可以扫描整个文件或仅数据部分,并允许用户设置最小字符串长度。通过选项如`-n`来指定字符串长度,`-f`在多文件检索时显示文件名。这个工具主要针对编程生成的二进制文件,但也支持普通文本文件。默认情况下,strings会查找至少4个字符长的字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

  • strings是文件中的字符串检索工具;它可以打印出文件中存在的所有满足条件的字符串。
  • 其主要是用来检索出编译生成的二进制文件中的字符串。

使用

  1. 帮助信息
xxx@chejiser:~$ strings -h
Usage: strings [option(s)] [file(s)]
 Display printable strings in [file(s)] (stdin by default)
 The options are:
  -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
  -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
  @<file>                   Read options from <file>
  -h --help                 Display this information
  -v -V --version           Print the program's version number
strings: supported targets: elf64-x86-64 elf32-i386 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-i386 plugin srec symbolsrec verilog tekhex binary ihex
Report bugs to <http://www.sourceware.org/bugzilla/>
  1. 示例
strings xxx   //单个文件
strings *     //本目录下的所有文件

常用选项

  1. -n;设置检索字符串的最小长度。
  2. -f;多文件检索时打印字符串所在文件。

注意

  1. strings主要是为了支持编程生成的二进制文件的字符串检索,但是它也支持普通文本文件。
  2. 其默认检索的字符串长度最小是4,可以通过-n设置。
printf("123");  //默认检索不到,需要-n设置
strings.com 是强大的纯DOS环境 下的文本处理工具 STRINGS常用方法: 1、把文本文件 LIST.TXT 包含的行数赋值给变量 LN STRINGS LN=LINESIZE LIST.TXT 2、把文本文件 LIST.TXT 的大小传递给变量FS STRINGS FS=FILESIZE LIST.TXT 3、读取文本文件 LIST.TXT 的第5行内容并赋值给变31333137量 LN STRINGS LN=READ LIST.TXT,5 4、把变量 N 在原有基础上+1 和 -1 STRINGS N=ADD %N%,1 STRINGS N=SUB %N%,1 5、把字符串 ABCDEFG 中第四个字符以及后面共3个字符传递给变量 LX (DEF) STRINGS LX=MID ABCDEFG,4,3 6、查找字符串 ABCDEFG 中D所在的位置并赋值给变量DX,如果没找到DX=0 STRINGS DX=FIND ABCDEFG,D 7、找出字符串 ABCD EFG HIJ KLMN 中第二个单词并赋值给变量L2 STRINGS L2=PARSE ABCD EFG HIJ KLMN ,2 应用举例:逐一显示文件 LIST.TXT 各行内容 @ECHO OFF REM 读取LIST.TXT大小如果是0就转入 ERROR段 STRINGS FS=FILESIZE LIST.TXT IF %FS%*==0* GOTO ERROR REM 读取 LIST.TXT 行数 并用N作计数器以循环方式显示 LIST.TXT各行内容。 STRINGS L=LINESIZE LIST.TXT STRINGS L=ADD %L%,1 SET N=0 :LOOP STRINGS N=ADD %N%,1 STRINGS LX=READ LIST.TXT,%N% ECHO %LX% IF %N%*==%L%* GOTO END GOTO LOOP :ERROR ECHO LIST.TXT IS NULL :END SET FS= SET L= SET N= SET LX= --------------------------------------------- NSET 的常用方法: 1、把某一命令的执行结果传递给变量。 A.把 DIR 命令执行结果第7行中的第2个单词传递给变量 DIRX DIR /A /S |NSET /L7 DIRX=$2 B.把当前路径传递给变量 CDX CD |NSET CDX=$0 2、获取 LIST.TXT 文件第5行第2个单词的内容并赋值给变量 L52 NSET /L5 L52=$2 <LIST.TXT 举例:显示出 LIST.TXT 文件中第二个单词是 SYSTEM 的行的内容。 @ECHO OFF REM 读取LIST.TXT大小如果是0就转入 ERROR段 STRINGS FS=FILESIZE LIST.TXT IF %FS%*==0* GOTO ERROR REM 读取 LIST.TXT 行数 并用N作计数器以循环方式显示 LIST.TXT中第二个单词是 REM SYSTEM 的行的内容,每找到一个符合条件的行,就把变量M在原有基础上+1。 STRINGS L=LINESIZE LIST.TXT STRINGS L=ADD %L%,1 SET N=0 SET M=0 :LOOP STRINGS N=ADD %N%,1 STRINGS LX=READ LIST.TXT,%N% REM STRINGS LX2=PARSE %LX%,2 NSET /L%N% LX2=$2 diskn.txt REM 如果存在DISKN2.TXT 就删除之 if exist diskn2.txt del diskn2.txt >nul REM 获取DISKN.TXT文件行数并用N做计数器逐行判断,并把需要的信息传递给DISKN2.TXT REM 如果该行前两个字符是 NO 说明没有硬盘,就退出脚本 RE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值