zoukankan      html  css  js  c++  java
  • 工具使用-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

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

  • 相关阅读:
    字符编码笔记:ASCII,Unicode 和 UTF-8
    nginx 负载均衡设置
    ubuntu 修改时区
    js 高阶函数 filter
    js 高阶函数 map reduce
    省市联级菜单--js+html
    php代码优化技巧
    json、xml ---- 数据格式生成类
    初识设计模式(1)---单例、工厂、注册树
    php 链式操作的实现 学习记录
  • 原文地址:https://www.cnblogs.com/hell--world/p/11610067.html
Copyright © 2011-2022 走看看