IDA Pro栈字符串识别插件
1、FireEye公司发布了一些逆向插件,即stack_strings插件,该插件是栈字符串识别插件,可以自动识别栈上局部变量为字符串的插件,字符串形式如下,并自动的加上注释,如下所示:

2、安装
由于该插件使用了vivisect模块,所以在使用该插件之前需要先让Python安装好vivisect模块,由于vivisect项目不是用兼容setuptools的setup.py文件分发的,所以需要自己下载vivisect的源代码目录,并将其放入你的Python安装路径的Lib目录下,其中vivisect源代码可以到github上下载,下载完成之后,如下所示:

3、将上述的文件夹拷贝到Python安装目录的Lib目录下,这样就算安装好vivisect模块了。
下面开始安装stack strings,打开flare-ida.zip压缩包,将里面的stackstring.py拷贝到%IDADIR%\python目录下;然后再将压缩包里的stackstrings_plugin.py拷贝到%IDADIR%\plugins目录下,这样就完成了stack strings的安装。
4、使用
在安装好了上述的vivisect模块和stack strings之后,下面开始使用,使用IDA Pro打开一个二进制文件,看到如下调用就表示加载成功了,如下所示:

5、然后点击IDA->Edit->Plugins->StackStrings,使用该插件,如下所示:

6、或者直接使用Alt+0快捷键,这样IDA就会对二进制进行处理,最终弹出如下框,如下所示:

7、该框的意思就是是否将识别的字符串直接显示到主界面上,点击Yes表示显示,点击No表示不显示,但是在最下面的Output Window会显示识别到的字符串,如下所示:

8、下面是一个简单的例子代码,如下所示:
#include "stdafx.h"
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
char sztext[14] = {0};
sztext[0] = 'H';
sztext[1] = 'e';
sztext[2] = 'l';
sztext[3] = 'l';
sztext[4] = 'o';
sztext[5] = ' ';
sztext[6] = 'w';
sztext[7] = 'o';
sztext[8] = 'r';
sztext[9] = 'l';
sztext[10] = 'd';
sztext[11] = '!';
sztext[12] = '!';
sztext[13] = '!';
printf("%s\n",sztext);
return 0;
}
然后使用IDA打开,使用Alt+0快捷键来使用stack strings插件,就能够识别出来,如下所示:
