声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!
bindiff的作用
- 匹配两个二进制文件,方便快捷的查出哪里相同,哪里不同。
比如在分析路由器之类的二进制补丁包,可以进行匹配,查看新补丁修改了哪个地方,方便定位漏洞点。
比如我们确定这个包是某个开源第三方组件,但是程序中使用的组件函数已经被混淆不利于分析,就可以尝试使用bindiff根据相似度替换函数名。
......
下载
下载地址:https://www.zynamics.com/software.html
具体安装过程可参考:https://www.cnblogs.com/lsdb/p/10543411.html
最后可能需要重启电脑,以及使用bindiff记得路径中一定不要包含中文,不然可能出现这样那样的错误。
两个二进制文件比较
bindiff不能直接比较可执行程序,需要通过IDA转化
IDA打开二进制文件,然后保存成ida
diff比较
通过比较相似性,可以判断当前的函数原名叫什么。
我们只保留绿色的similarity窗口,其中比较关键的信息有:
单行颜色:越绿表示相似度最高,越红表示相似度越低
similarity:[0,1]区间的值,指明new 与 old 的相似度。1表示完全一样。
Confidence实际代表了识别算法的强弱。高Similarity、低Confidence表示一个弱算法找到一个强匹配 低Similarity、高Confidence表示一个强算法找到一个弱匹配
注意 使用bindiff,路径中不要存在中文,否则会报错
解释说明
Matched Functions 在new.i64、old.i64中相匹配的函数
Primary Unmatched 在new.i64中存在,但在old.i64中未找到匹配
Secondary Unmatched 在old.i64中存在,但在new.i64中未找到匹配
先用ida打开需要修复的,然后ctrl+6,导入未混淆的库
单个修复
批量修复
点击控制窗口中的 Import 导入符号
bindiff的应用
- Windows核弹级漏洞,Win7-Win11全部沦陷,最新情况来了! https://mp.weixin.qq.com/s/MaqIVZ_HMS3ZQUsKnRS-AQ
- 三年了,还是VT全绿,它到底凭什么? https://mp.weixin.qq.com/s/nP0IqpGvGeWagmVsWtzC9Q
参考链接
- https://www.cnblogs.com/lsdb/p/10543411.html
- IDA使用指南 https://mp.weixin.qq.com/s/BB27DFYvaNjzEHBDU3rbIA
原文始发于微信公众号(进击的HACK):二进制比较bindiff
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论