首页
社区
课程
招聘
[原创]bindiff基本使用以及小试牛刀
发表于: 2018-8-16 22:24 29241

[原创]bindiff基本使用以及小试牛刀

2018-8-16 22:24
29241

up777


2.bindiff使用
详见安装目录的:file:///C:/Program%20Files%20(x86)/zynamics/BinDiff%204.2/doc/index.html
bindiff是结合IDA一起使用的,首先使用IDA打开一个可执行文件(如打补丁之后的exe),保存配置idb,保持这个ida;然后再用ida打开要比较的文件(如打补丁之前的文件) ,保存配置idb,关掉这个ida 。
之后在打补丁之后的exe 的IDA窗口,使用快捷键crtl+6 , 弹出bindiff插件窗口,选择Diff Database选择要比较的idb文件 ,这里就是OldEnqEdit.idb
  bindiff就会比较两个可执行文件之间函数的差异。从上到下看,可以看到差异较大的函数是哪个。
在关闭IDA是可以选择保存bindiff生成的信息,之后再次打开直接选择loadresults   可以达到一样的效果。
各位已经看到了上面用来做演示的程序了,是wps的公式对象程序,分别是wpsoffice2010_10.1.0.6930和当前官网上最新的。关注厄运公式漏洞的朋友知道在office中这个模块有两个漏洞一个是11882,而另外一个是0802,而这个模块在office中已经被取消了(也就没有0802的补丁了)。
那么,wps office有没有类似的公式对象呢?如果有,有类似的漏洞吗?都被正确的修补了吗(尤其是第二个)?
要找到wps公式对象的位置很简单 ,打开wps,
弹出公式编辑器
在任务管理器中找到程序路径即可。
4.小试牛刀
这里比较这两个版本的公式对象程序
接着第二步的往后讲, 看最下面三个函数
同时也用IDA打开OldEqnEdit.exe
4.1 sub_4200E2
new:


__int16 __cdecl sub_4200E2(char *a1, __int16 a2, int a3, __int16 a4)
{
  unsigned int v4; // ecx@1
  __int16 v6; // [sp+8h] [bp-8h]@1
  char *v7; // [sp+Ch] [bp-4h]@1

  v6 = sub_420362();
  v7 = (char *)&unk_459480 + 49 * (v6 - 1);
  v4 = strlen(a1) + 1;
  if ( v4 >= 0x21 )
    v4 = 32;
  qmemcpy(v7, a1, v4);
  ...
}

__int16 __cdecl sub_4200E2(char *a1, __int16 a2, int a3, __int16 a4)
{
  unsigned int v4; // ecx@1
  __int16 v6; // [sp+8h] [bp-8h]@1
  char *v7; // [sp+Ch] [bp-4h]@1

  v6 = sub_420362();
  v7 = (char *)&unk_459480 + 49 * (v6 - 1);
  v4 = strlen(a1) + 1;
  if ( v4 >= 0x21 )
    v4 = 32;
  qmemcpy(v7, a1, v4);
  ...
}

New中v7是局部变量,从传入a1参数拷贝到v7使用的是 qmemcpy(v7, a1, v4);v4肯定小于等于32,嘿嘿和office 公式对象字体名称最大长度一样啊(不明白的可以搜搜CVE-2017-11882相关的文章看看)
Old
__int16 __cdecl sub_4200E2(char *a1, __int16 a2, int a3, __int16 a4)
{
  __int16 v5; // [sp+8h] [bp-8h]@1
  char *v6; // [sp+Ch] [bp-4h]@1

  v5 = sub_420362();
  v6 = (char *)&unk_459480 + 49 * (v5 - 1);
  strcpy((char *)&unk_459480 + 49 * (v5 - 1), a1);
 ...
}

Old中是直接从 a1 拷贝字符串到 v6 ,可以造成栈溢出 。
从sub_4200E2来看,感觉就是厄运公式的补丁嘛,嘿嘿。

4.2接着看第二个 sub_41189B


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-4-13 13:03 被树梢之上编辑 ,原因:
上传的附件:
收藏
免费 1
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  demoscene   +1.00 2018/08/17
最新回复 (8)
雪    币: 3848
活跃值: (642)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
好像最新的bindiff4.3还不支持IDA7.0
2018-8-17 09:02
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
小范,好久不见你写文章了
2018-8-18 22:28
0
雪    币: 545
活跃值: (167)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
4
cdcdiot 小范,好久不见你写文章了[em_27]
呃呃
2018-8-19 07:31
0
雪    币: 4
活跃值: (170)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
病毒小子 好像最新的bindiff4.3还不支持IDA7.0
没错!
2018-8-19 17:05
0
雪    币: 120
活跃值: (1597)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
收藏,改天试一试·~
2019-1-24 12:30
0
雪    币: 6369
活跃值: (1688)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
7
Vuler 没错!
结果害我折腾好几天都没找到相关的资料,还以为要自己编译7.x的
2019-1-24 12:56
0
雪    币: 351
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不错,可以试试看
2019-1-24 18:08
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
bindiff5.0支持ida7.0了
2019-5-13 10:37
0
游客
登录 | 注册 方可回帖
返回
//