本文最后更新于 2025-01-11T09:52:22+08:00
用bindiff来显示二进制文件的区别
你是否在面对收到攻击的二进制文件无法比对,看着两个文件而陷入迷茫,不知如何分析,沉沦在函数之海无法自拔,找不到patcher前后的区别,那么bindiff可以帮助你。
1. 自行安装
2.使用
首先我们打开一个我们所需要分析的软件,在ida完成分析之后我们退出将对应的.ida64包文件保存,然后加载patcher后的文件,在ida中键入crtl+6,使用bindiff插件
选择Diff DAtabase,选择刚刚保存的.ida64文件,出现对应的对比框
在这个绿色框口下我们发现,在最下方的函数extract_dirs_from_files,与原来的文件对比,有仅0.84的相似度,我们便可以知道两个二进制文件在这个函数发生了区别
查看函数,在patcher中发现多了如下一个分支
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| LABEL_7: if ( v9 && !v9[1] ) { *(_QWORD *)&lmao[8] = 0x3F7D132A2A252822LL; *(_QWORD *)lmao = 0x7D2E370A180F1604LL; *(_QWORD *)&lmao[24] = 0x31207C7C381320LL; *(_QWORD *)&lmao[16] = 0x392A7F3F39132D13LL; v18 = lmao; do *v18++ ^= **(_BYTE **)v7; while ( &lmao[31] != v18 ); puts(lmao); } goto LABEL_9; } if ( !dirname ) goto LABEL_21; component = last_component(*(const char **)v7); if ( *component == 46 ) { v17 = component[(component[1] == 46) + 1]; if ( !v17 || v17 == 47 ) goto LABEL_7; } if ( *v9 == 47 ) {
|
我们经过cyberchef的函数爆破,来获得最终的数据,注意在数组中存在大小端序的问题
题目来源