利用ida对程序的静态链接库进行处理(转)

转:http://seckungfu.com/blog/2012/07/14/li-yong-idadui-cheng-xu-de-jing-tai-lian-jie-ku-jin-xing-chu-li/

利用ida对程序的静态链接库进行处理

用IDA进行反汇编时最怕遇到的就是跟踪到了程序静态链接的库函数中,看得一头雾水不说,还浪费了大量的时间。其实如果有符号表的话,看看函数名就知道大概功能了,再看看参数就可以pass了。本文以meterpreter主服务dll–metsrv.dll为例,简要介绍一下利用IDA工具FLAIR来对程序的静态链接库进行处理的流程

用IDA打开metsrv.dll,如图:

图上部的条框区域,绿色部分是IDA能识别出的库函数,蓝色区域IDA认为是程序自身的代码,由于程序有600多K,代码量非常大,左侧的函数窗口可以看到都是诸如sub_10002A90之类的函数名,这时我们怀疑程序是不是静态编译链接了某些函数.

1.用string、file等工具识别静态库及版本,平台等

root@bt:/# strings metsrv.dll >1.txt

root@bt:/# cat 1.txt

...

OpenSSL 0.9.8k 25 Mar 2009

.\ssl\ssl_lib.c

...

root@bt:/# 

找到了”OpenSSL 0.9.8k”这样的字符串,我们初步判断是对openssl库进行了静态链接。需要下载openssl 0.9.8k对应的库文件libeay32.lib和ssleay32.lib,可以点击这里下载。

2.下载FLAIR61

FLAIR全名库文件快速识别与鉴定技术(Fast Library Acquisition for Identification and Recognition),IDA安装包里并没有自带这个工具。

官方下载地址:flair61。但需要验证用户名和密码。

也可以点击这里下载IDA6.1及相关工具,里面包括FLAIR61。

3.创建模式文件####

这里对windows环境下的openssl库创建模式文件,使用.\bin\win目录下的pcf工具。

D:\flair61\bin\win>pcf.exe libeay32.lib libeay.pat

D:\flair61\bin\win>pcf.exe ssleay32.lib ssleay.pat

.\plb.txt文件包含这个工具的详细参数说明。

4.创建签名文件####

D:\flair61\bin\win>sigmake.exe libeay.pat libeay.sig

libeay.sig: modules/leaves: 4246/2632, COLLISIONS: 106

See the documentation to learn how to resolve collisions.

创建签名文件时一般会产生冲突,这是因为两个函数的字节序列部分可能相同。

这时打开生成的.exc文件,将前四行删除,在冲突的函数组中如果想显示哪个函数名称,在前面添加+号,如果只想在数据库中添加函数注释,在前面添加-号。

_atalla_mod_exp_dh                   02 2109 8B4424188B4C24148B542410508B442410518B4C2410525051E8........83C4    

+_atalla_mod_exp_dsa                 02 2109 8B4424188B4C24148B542410508B442410518B4C2410525051E8........83C4



_PEM_write_bio_ECPrivateKey          04 913F 8B44241C8B4C24188B542414508B442414518B4C2414528B542414508B442414

+_PEM_write_RSAPrivateKey            04 913F 8B44241C8B4C24188B542414508B442414518B4C2414528B542414508B442414

_PEM_write_bio_RSAPrivateKey         04 913F 8B44241C8B4C24188B542414508B442414518B4C2414528B542414508B442414

_PEM_write_ECPrivateKey              04 913F 8B44241C8B4C24188B542414508B442414518B4C2414528B542414508B442414

-_PEM_write_bio_DSAPrivateKey        04 913F 8B44241C8B4C24188B542414508B442414518B4C2414528B542414508B442414

_PEM_write_DSAPrivateKey             04 913F 8B44241C8B4C24188B542414508B442414518B4C2414528B542414508B442414



_ec_GFp_simple_is_at_infinity        00 0000 8B4C240833C03941300F94C0C3......................................

+_ec_GF2m_simple_is_at_infinity      00 0000 8B4C240833C03941300F94C0C3......................................

这时再执行sigmake.exe libeay.pat libeay.sig就能生成签名文件,ssleay.pat的处理同上。

5.应用签名文件####

将libeay.sig、ssleay.sig文件拷贝至[IDADIR]/sig目录下,用IDA重新打开metsrv.dll,选择 File->Load File->FLIRT Signature File

,分别将libeay.sig、ssleay.sig文件导入到metsrv.dll的数据库中:

这时静态链接的符号表都出来了,可以跟处理之前的图进行对比看看效果:


你可能感兴趣的:(利用ida对程序的静态链接库进行处理(转))