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

转载 2016年05月30日 11:40:14

用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查看Lib文件的输出函数

编程时有时需要使用他人开发的lib文件,如果没有文档说明的话,用起来很费劲。这时你可以用IDA打开lib文件,在Exports和Functions窗口中查看lib文件的输出函数。有兴趣的话还可以看下反...
  • syspro
  • syspro
  • 2008年04月24日 18:43
  • 4729

IDA功能简介(2)----流程图功能

IDA之所以强大,另外一个原因就是支持各种流程图,下面我们就来介绍一下IDA所支持的几种流程图。 首先调出Graghs工具栏 Views –>Toolbars–>Graghs 工具栏如图 下面我们...

SendMessage参数详解

 Windows是一个消息驱动式系统,SendMessage是应用程序和应用程序之间进行消息传递的主要手段之一,这里我搜集整理了SendMessage函数的详细参数介绍,以备自用。VFP声明:DECL...

ELF64文件逆向分析知识—[2]制作静态库SIG

背景在搭建IDA调试远程Linux的环境过程中,我在Linux上使用file工具查看ELF文件得到了一下信息: 这个可执行文件是使用的是静态编译,同时在最终生成可执行文件时,删除了符号表和重定位信息...
  • txx_683
  • txx_683
  • 2016年12月04日 15:18
  • 617

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

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

win32 静态链接库及测试程序

  • 2015年01月20日 15:21
  • 1.77MB
  • 下载

静态链接库 范例程序

  • 2008年06月26日 11:43
  • 13KB
  • 下载

动态链接库的静态链接导致程序的DLL劫持漏洞

- 动态链接库的静态链接导致程序的DLL劫持漏洞 借助QQ程序xGraphic32.dll描述   不想啰嗦这么多了,直接开题。   一、       库 首先明确一下库的概念,库里存放...

win32静态链接库及测试程序

  • 2015年01月20日 15:25
  • 1.78MB
  • 下载

静态链接库程序

  • 2013年05月02日 19:56
  • 196KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用ida对程序的静态链接库进行处理
举报原因:
原因补充:

(最多只允许输入30个字)