iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
Security

從0基礎開始起飛,一起一步步踏入資安系列 第 15

[ Day 15 ] 分析執行檔 ? 二進位檔 ? Linux 指令 - strings

  • 分享至 

  • xImage
  •  

strings 是 Linux 中常用來分析 二進位檔可執行檔 的工具。

它可以幫你從檔案中找出 可列印的字串(ASCII 或 Unicode),也就是人類能看懂的部分。
例如 : 你有一個執行檔,打開時滿滿都是亂碼,用 strings 就能抓出裡面藏的文字資訊。
這在 除錯、逆向工程、安全分析、CTF 裡非常好用。

語法 : strings [options] file

基本用法

找出檔案裡的字串

strings file
  • 會把 file 裡所有可見字串印出來
  • 常用於分析編譯出來的執行檔

加上參數

1. 指定最短字串長度 -n

strings -n 8 data.bin
  • 只顯示 長度大於等於 8 的字串
  • 預設長度是 4

2. 指定編碼 -e

strings -e l data.bin  #將data.bin用16-bit little-endian編碼後輸出
  • -e 用來指定編碼:將結果編碼後再輸出
  • 適合找 Unicode 或 UTF-16 的字串

編碼參數 :

  • GNU Binutils ( Linux 常見版本 ) :
    • s = 7-bit 字元(基本 ASCII)
    • S = 8-bit 字元
    • b = 16-bit big-endian
    • l = 16-bit little-endian
    • B = 32-bit big-endian
    • L = 32-bit little-endian
  • BSD / macOS
    • l = 16-bit little-endian
    • b = 16-bit big-endian
    • L = 32-bit little-endian
    • B = 32-bit big-endian
    • 沒有 s / S

3. 顯示位移位置 -t

strings -t d data.bin
strings -t x file.exe | grep "flag"  #輸出並顯示flag在檔案的位置
  • 會顯示字串在檔案裡的位置 ( 偏移量 )。
  • -t 參數:
    • d → 以十進位顯示
    • o → 以八進位顯示
    • x → 以十六進位顯示

4. 顯示檔案名稱 -f

# 輸入
strings -f -t x data1.bin data2.bin | grep flag
strings -f -t x *.bin | grep flag   #萬用字元,掃描所有後面為.bin的檔案

# 輸出
file1.bin: admin_password
file2.bin: root_password
  • 會在每行輸出前加上來源檔案名稱
  • 用於一次掃多個檔案時

其他

從標準輸入讀取

cat file.bin | strings
  • 可以用 pipe 輸入給 strings
  • 這個和直接 strings file.bin 結果類似,但也可搭配其他工具。

用 pipe 找關鍵字 ( pipe是什麼? )

( 其實上面已經有範例 )

pipe,也就是 | 會將前方指令的輸出傳送給後方的指令,並輸出後方指令處理後的結果
大部分指令都可以加上 pipe

strings data | grep "password"  #只會輸出data中含有password的字串

一個可能很少用到的參數 -a

-a → 掃描整個檔案
但因為 strings 指令的預設就會掃描整個檔案,通常不用特別寫


上一篇
[ Day 14 ] 查看檔案卻沒權限嗎 ? 教你怎麼獲得吧 ! Linux指令 - chmod
下一篇
[ Day 16 ] 想學Git嗎? 來這教你 ( Linux指令 - git 基礎篇)
系列文
從0基礎開始起飛,一起一步步踏入資安23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言