Linux调试工具之strings

功能

strings命令的作用是查找指定文本文件或者二进制文件中的可打印字符串。默认打印字符串长度大于等于4的字符串。

参数说明

  • -a : 搜索整个文件,而不仅仅是数据段,以寻找可显示的字符串。如果省略这个标志,那么 strings 命令只在对象文件的初始化数据空间内寻找。
  • -n number(-number):指定寻找打印字符串的最小长度,默认最小长度为4,可以通过此参数设置最小长度为1或2等。最长不能超过4096
  • -o : 显示可打印字符串以及可打印字符串在文件中的位置,位置以8进制形式显示。
  • -t format:显示可打印字符串以及可打印字符串在文件中的位置,format可指定显示位置的格式是(o)8,(d)10,(x)16进制。

实例

1
2
3
4
5
6
7
8
#include <stdio.h>
int main() {
char l_data =0;
int a = 0;
a;
return 0;
}
  1. 直接使用stirngs,默认只显示长度大于等于4的可打印字符串

    1
    2
    3
    4
    5
    6
    $ strings main.cpp
    #include <stdio.h>
    int main() {
    char l_data =0;
    int a = 0;
    return 0;
  2. -n参数

    1
    2
    3
    4
    5
    6
    7
    8
    $strings -1 main.cpp
    #include <stdio.h>
    int main() {
    char l_data =0;
    int a = 0;
    a;
    return 0;
    }
  3. -o 参数

前面为其在文件中的8进制位置

1
2
3
4
5
6
$strings -o main.cpp
0 #include <stdio.h>
24 int main() {
41 char l_data =0;
63 int a = 0;
104 return 0;

  1. -t format参数
    -t o参数与-o参数作用一样
1
2
3
4
5
6
$strings -t d main.cpp
0 #include <stdio.h>
20 int main() {
33 char l_data =0;
51 int a = 0;
68 return 0;

用途

当我们将多个文件编译到一个库文件或者可执行文件的时候,我们可以通过strings命令查看新增文件的一些可打印字符串是否在库中,来判断该文件是否已经编译到库中。