工具使用-BinDiff

补丁比较工具BinDiff

通过补丁比较进行漏洞挖掘的思路

在只有补丁包的情况下,为了发掘补丁解决的漏洞,需要弄清两个问题

1、漏洞在哪个模块中?

2、漏洞在模块中的哪个函数?

为解决第一个问题,可以通过ProcessMonitor,监控补丁执行时对哪些文件进行了修改,从而判断漏洞可能的模块。

为解决第二个问题,需要将补丁前的模块和补丁后的模块进行二进制比较,分析其中被修改的函数,找到漏洞成因。

还有一种思路,通过调试器的指令运行记录功能,记录poc在漏洞版本和修复版本运行的指令上的差异,从而找出漏洞成因和修复方法。上一种分析方法类似于静态分析,此种分析方法类似于动态调试。

BinDiff下载以及安装教程:

https://blog.csdn.net/counsellor/article/details/98954462

https://www.cnblogs.com/lsdb/p/10543411.html

https://blog.csdn.net/caiqiiqi/article/details/80890226

注意事项

64位的ida可以生成32位程序或64位程序的.i64文件。64位的IDA不能用于打开.idb格式的文件。

BinDiff可以支持.idb和.i64两种格式的文件比较。

BinDiff如果分析较大的文件,需要使用大量内存,如果内存过小,可能导致分析结果无法在bindiff.jar的界面中显示,笔者环境为win7虚拟机+ida6.8+BinDiff4.3,需要配置16Gb的虚拟机内存才能保证漏洞战争一书中漏洞补丁实例的分析。

BindDiff中bindiff.jar界面似乎不支持中文,最好保证文件以及文件路径均为英文

如果系统中账户用户名为中文(即c盘user目录下当前账户文件夹名为中文),会导致BinDiff执行失败,因为BinDiff会用到"C:Users用户名"路径下的文件。

使用示例:

搜索指定漏洞函数0x30f0b5c2

对比漏洞函数补丁前后的执行流程

原文地址:https://www.cnblogs.com/hell--world/p/11610067.html