二进制比较bindiff

admin 2024年7月10日18:39:15评论5 views字数 1211阅读4分2秒阅读模式

声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!


bindiff的作用

  • 匹配两个二进制文件,方便快捷的查出哪里相同,哪里不同。
    比如在分析路由器之类的二进制补丁包,可以进行匹配,查看新补丁修改了哪个地方,方便定位漏洞点。
    比如我们确定这个包是某个开源第三方组件,但是程序中使用的组件函数已经被混淆不利于分析,就可以尝试使用bindiff根据相似度替换函数名。
    ......

下载

下载地址:https://www.zynamics.com/software.html

具体安装过程可参考:https://www.cnblogs.com/lsdb/p/10543411.html
最后可能需要重启电脑,以及使用bindiff记得路径中一定不要包含中文,不然可能出现这样那样的错误。

两个二进制文件比较

bindiff不能直接比较可执行程序,需要通过IDA转化
IDA打开二进制文件,然后保存成ida

二进制比较bindiff

diff比较

二进制比较bindiff

二进制比较bindiff

二进制比较bindiff

二进制比较bindiff

通过比较相似性,可以判断当前的函数原名叫什么。

我们只保留绿色的similarity窗口,其中比较关键的信息有:

单行颜色:越绿表示相似度最高,越红表示相似度越低
similarity:[0,1]区间的值,指明new 与 old 的相似度。1表示完全一样。
Confidence实际代表了识别算法的强弱。高Similarity、低Confidence表示一个弱算法找到一个强匹配 低Similarity、高Confidence表示一个强算法找到一个弱匹配

注意 使用bindiff,路径中不要存在中文,否则会报错

二进制比较bindiff

解释说明

参考 https://mp.weixin.qq.com/s/fPjqO_L5aHxzVUu8GtIgeA

Matched Functions 在new.i64、old.i64中相匹配的函数

Primary Unmatched 在new.i64中存在,但在old.i64中未找到匹配

Secondary Unmatched 在old.i64中存在,但在new.i64中未找到匹配

先用ida打开需要修复的,然后ctrl+6,导入未混淆的库

单个修复

二进制比较bindiff

批量修复
点击控制窗口中的 Import 导入符号

二进制比较bindiff

二进制比较bindiff

bindiff的应用

参考链接


原文始发于微信公众号(进击的HACK):二进制比较bindiff

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月10日18:39:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   二进制比较bindiffhttps://cn-sec.com/archives/2937464.html

发表评论

匿名网友 填写信息