Strings2 is a Windows 32bit and 64bit command-line tool for extracting strings from binary data. On top of the classical Sysinternals strings approach, this improved version is also able to dump strings from process address spaces and also reconstructs hidden assembly local variable assignment ascii/unicode strings. Currently, the ASM-string extracting approach only supports the x86 instruction set.
I am maintaining a public binary release download page for this project at: http://split-code.com/strings2.html
The command-line flags for strings2 are as follows:
-f Prints the filename/processname before each string. -r Recursively process subdirectories. -t Prints the type before each string. Unicode, ascii, or assembly unicode/ascii stack push. -asm Only prints the extracted ascii/unicode assembly stack push-hidden strings. -raw Only prints the regular ascii/unicode strings. -l [numchars] Minimum number of characters that is a valid string. Default is 4. -nh No header is printed in the output. -pid The strings from the process address space for the specified PID will be dumped. Use a '0x' prefix to specify a hex PID. -system Dumps strings from all accessible processes on the system. This takes awhile.
From the command prompt:
- strings2 malware.exe
- strings2 *.exe > strings.txt
- strings2 *.exe -nh -f -t -asm > strings.txt
- strings2 -pid 419 > process_strings.txt
- strings2 -pid 0x1a3 > process_strings.txt
- strings2 -system > all_process_strings.txt
- cat abcd.exe | strings2 > out.txt
Contributions are welcome. Some possible contribution directions are as follows:
- Only print unique strings.
- Add flag support for dumping process strings by process/window title matching.
- Add x64 assembly support for extracting ASM stack pushed strings.