问题:我们希望能够确定地说某个程序正在使用特定版本的内部库。例如,如果软件在内部使用旧的,已弃用的库。另外,我们想知道主机系统上正在使用哪些共享库。手动分析这些字符串可能会提供某些内部使用的库版本。可以想象,这是一种低效的方法,并且不是很可靠。我们还研究了“ Dependency Walker”,以构建所有依赖关系的树。但是,这不允许我们知道内部是否在使用过时的库。我们还阅读了有关该主题的两篇研究论文:



Tal,Batten,Islam和Versteeg,这是一种基于特洛伊木马和病毒家族的自动分类系统,MALWARE 2009年。

Thomas Rinsma于2017年对自动库版本进行识别,这是对技术的探索。可执行文件在内部使用过时的库?例如,查看字符串是一种可能的方法,但是有没有办法使它自动化?否则,查看数千行ASCII和UNICODE字符串会很费时间。

评论

内部库是什么意思?静态库?

是的,该软件自带的静态库与在主机上调用共享库相反。

#1 楼

我可以看到两条前进的路径。

首先,按照当前的方法,您可以在找到的字符串中自动检测版本信息和库。这不是防弹解决方案,但可以节省您手动读取数千个字符串的时间。各种库。

评论


“ ...您可能可以在找到的字符串中自动检测版本信息和库...”这也是我们在想的。是否有已经执行类似操作的工具,或者我们需要编写ased / awk / grep查询吗?

–learnerX
18年7月2日在14:37

我对版本的任何内容都不熟悉,但是我确实认为这样做应该很容易,并且随着更多输入/数据的到来而改进。

– NirIzr
18年7月2日在15:08

如果函数的“签名”在库版本之间未更改,则IDA FLIRT将不起作用。

– fpmurphy
18年7月3日在16:22

@ fpmurphy1您可以手动编辑自动生成的调情签名,以更加精确。

– NirIzr
18年7月3日在16:23

@NirIzr。刚刚检查了FLIRT工具集。可以将-p ##开关与pct,plb等一起使用,以指定默认32字节以外的长度。而且,是的,您可以手动将其他标志附加到特定签名上。

– fpmurphy
18年7月3日在18:17