strings命令用于從linux二進制文件中提取可打印字符串,幫助查找調試信息、路徑、函數名等隱藏文本。1. 使用基本方式為“strings 文件名”,默認輸出≥4字符的字符串;2. 通過“-n n”設置最小長度,如“strings -n 6 filename”找至少6字符的字符串;3. “-t x”顯示字符串偏移地址;4. “-e s”指定編碼格式如unicode小端;5. 實際場景包括分析程序行為、逆向工程輔助、安全檢查等,例如用“strings -n 8 program | grep http”找內嵌api地址。掌握這些參數能有效提升排查問題效率。
有時候你想看看一個linux二進制文件里有沒有什么隱藏的文本信息,比如調試信息、路徑、函數名或者配置參數,但又不想用太復雜的工具。這時候,strings 命令就能派上用場了。
什么是 strings 命令?
strings 是 Linux 下一個非常實用的小工具,它可以從二進制文件中提取出可打印的字符串。雖然二進制文件本身不是給人看的,但里面常常嵌入了一些明文字符,比如錯誤信息、URL、變量名等等。
使用 strings 的基本方式很簡單,只需要在終端輸入:
strings 文件名
它會默認輸出所有長度≥4個字符的連續可打印字符串。這個最小長度可以通過參數調整,后面會提到。
如何查看特定格式或長度的字符串?
有時候你只想找特定類型的字符串,比如長一點的路徑、更短的關鍵字,或者想排除一些干擾信息。這時可以加幾個常用選項:
-
-n N 或 –bytes=N:設置最小字符串長度,默認是4,比如要找至少6個字符的字符串:
strings -n 6 filename
-
-t d|x:顯示字符串在文件中的偏移地址,十進制或十六進制形式都有:
strings -t x filename
-
-e S|s|b:指定編碼格式,比如支持16位Unicode(S表示大端,s小端):
strings -e s filename
這些選項可以根據需要組合使用,幫助你更快定位目標信息。
實際使用場景有哪些?
你在日常工作中可能會遇到幾種典型情況:
- 分析未知程序行為:比如某個程序調用了哪些庫、訪問了哪些路徑,用 strings 看一下說不定能找到蛛絲馬跡。
- 逆向工程輔助:配合其他工具(如 objdump、readelf)一起使用,能幫你快速找到關鍵字符串位置。
- 取證或安全檢查:有些惡意程序會在二進制中硬編碼敏感信息,strings 能作為初步篩查手段。
舉個例子,如果你拿到一個沒有文檔說明的可執行文件,想看看它是否連接了某個網絡服務,你可以這樣試試:
strings -n 8 program | grep http
這會列出所有至少8個字符的字符串,并篩選出包含“http”的行,說不定就能看到內嵌的API地址。
總結
strings 不是個復雜命令,但它在排查問題和分析二進制方面很實用。掌握幾個常用參數之后,你會發現它經常能解決一些看似棘手的問題。像 -n 控制長度、-t 顯示偏移、過濾輸出這些技巧,都是日常用得上的。
基本上就這些,簡單但挺有用。