首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从ida的flair工具去理解它是怎么识别出静态链接程序中的库函数的

从ida的flair工具去理解它是怎么识别出静态链接程序中的库函数的

作者头像
用户1423082
发布2024-12-31 18:36:46
发布2024-12-31 18:36:46
26000
代码可运行
举报
文章被收录于专栏:giantbranch's bloggiantbranch's blog
运行总次数:0
代码可运行

实验目的

简单理解ida如何识别静态链接程序中的库函数

实验环境

ida7.0 flair68 vs 2017

实验过程

比如我使用vs2017用MFC编写一段代码,点击按钮,弹窗的(因为直接MessageBox还想并不能生成静态编译的MessageBox)

添加按钮,之后双击按钮,假如代码即可(当然直接一个空工程也行,主要是看下ida使用了那些sig文件)

代码语言:javascript
代码运行次数:0
运行
复制
void CMFCApplication1Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	MessageBox(TEXT("giantbranch"), TEXT("giantbranch"), 0);
}

我们使用静态编译

项目属性—常规—MFC的使用—在静态库中使用MFC

我们用ida打开,可以看到很多函数都识别出来了,我们可以通过shift+f5看看ida使用了那些签名文件,我们可以看到mfc的vc32mfc.sig

也就是ida的sig/pc目录下vc32mfc.sig

那么这个sig函数是如何生成的呢

比如我们以nafxcwd.lib这个文件为例(这是也是mfc程序需要链接的一个文件,假如你装了vs,可以通过everything搜索这个文件),执行下面的命令,即可生成nafxcwd.pat

代码语言:javascript
代码运行次数:0
运行
复制
pcf.exe nafxcwd.lib

我们打开pat文件,可以看到其实就是一些机器码序列,不确定的就用.来说明

我们用ida打开nafxcwd.lib中的第一个obj,发现并没有什么代码,但是也可以发现一点东西

可以看到了吧,两个.代表一个字节,说明是不确定的

再看一个例子

最后通过sigmake nafxcwd.pat nafxcw.sig即可生成sig文件但是需要在nafxcw.exc解决冲突再执行,因为有些函数特征一样的。。。)

懒得解决冲突了,要在前面添加加号或者减号什么的。。。

ctf的静态链接

我们可以尝试file ->load sig文件尝试去识别

这有个repo

https://github.com/push0ebp/sig-database

reference

https://lichao890427.github.io/2015/01/15/about-ida-flirt/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验目的
  • 实验环境
  • 实验过程
  • ctf的静态链接
  • reference
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档