利用ida对程序的静态链接库进行处理(转)
2012-12-28 11:02
218 查看
转: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,如图:
![](http://seckungfu.com/images/20120714/1.png)
图上部的条框区域,绿色部分是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的数据库中:
![](http://seckungfu.com/images/20120714/2.png)
这时静态链接的符号表都出来了,可以跟处理之前的图进行对比看看效果:
![](http://seckungfu.com/images/20120714/3.png)
相关文章推荐
- 利用ida对程序的静态链接库进行处理
- windows 下利用vbs进行程序的自动安装
- 利用Net自身进行伪静态处理
- Android客户端发送Post/Get请求到Asp.Net服务端一般处理程序Asp.Net进行参数解析
- SSE指令指令集进行程序加速、DCT的优化处理
- 如何利用ppt自带的图片处理功能进行图片“扣图”
- jquery之jquery事件处理模型(利用jquery绑定事件处理程序)
- 利用move.js框架进行边旋转边扩大边移动处理案例
- 利用希尔伯特变换进行的单边带幅度调制matlab程序
- 分享(非充分)利用NIO2进行压缩处理的代码
- 数据库_MySQL_利用 存储过程 对 数据表 中的 每一条记录 进行业务处理
- 利用XCode来进行IOS的程序开发
- 利用pandas进行大文件计数处理的方法
- R语言:利用caret包中的dummyVars函数进行虚拟变量处理
- 利用xcode-->profile对程序进行内存泄露检查总结
- jq 文本输入框发生改变时,ajax调用一般处理程序,进行判断
- 微信小程序中使用Promise进行异步流程处理
- 一步步教你利用Canvas对图片进行处理
- 下面的程序实现了在利用Handler在新线程当中处理消息的方法
- asp.net利用一般处理程序下载和在线查看文档