代碼位置:cuckoo\\processing\\strings.py
代碼整理後如下:
#coding:utf-8
import re
data=open("filepath","rb").read() # 一定要以二進制形式讀取檔案的全部内容,否則你會發現比對出來的字元串不全
strings_A = re.findall("[ -~]{1,}",data) # 讀取1個以上的單位元組連續可顯示字元(0x20-0x7e)
strings_W = re.findall("(?:[ -~]\x00){1,}",data): # 讀取1個以上的unicode編碼的連續可顯示字元
return strings_A,strings_W
大概就是以二進制形式讀取檔案之後,使用正規表達式做比對。
其中(?:[ -~]\x00)應該是把2個位元組作為一個基本機關進行比對,
若是(?:[ -~]\x00\x00)應該是把3個位元組作為一個基本機關進行比對。
注意在ida的字元串視窗中看到\t、\n也顯示在字元串中,可以在正規表達式的[ ]中加入\t、\n,如下:
[ -~\\t\\n] 或者 [ -~\x09\x0a]
對于中文語系,可以使用專門比對漢字的正規表達式