Shell-Script
將多個二進製文件中的所有字元串grep到一個txt文件中
我決定嘗試轉儲幾個實用程序的所有程序記憶體,以找出攻擊者理論上可以從應用程序的記憶體中獲得多少敏感資訊的踪跡。
我發現這個單行用於轉儲目的:
grep rw-p /proc/$1/maps | sed -n 's/^\([0-9a-f]*\)-\([0-9a-f]*\) .*$/\1 \2/p' | while read start stop; do gdb --batch --pid $1 -ex "dump memory $1-$start-$stop.dump 0x$start 0x$stop"; done
不幸的是,我沒有流利地使用 Bash,並且面臨著由這個腳本轉儲文件產生的大量文件(所有大約 KB 大小)。
所以,我的問題是:如何使用
strings
命令行工具將所有以空字元結尾的字元串 grep 到一個文件中?所以,我寫了這樣的東西(無限循環沒有任何結果):
for f in *.dump; do strings $1 > foo.txt; done
我知道,這一個班輪接近我的目標,但我最終無法讓它發揮作用。
這個怎麼樣。使用“>>”附加到文件而不是每次都覆蓋文件。
rm foo.txt for f in *.dump; do strings $f >> foo.txt; done
為了幫助您查看,您可能還希望通過“sort -u”對其進行管道傳輸以刪除任何重複項。
如果您有許多大型 .dump 文件,可能需要一段時間才能執行。