首页
社区
课程
招聘
CVE-2012-4792分析遇到的问题
2013-6-6 00:29 10007

CVE-2012-4792分析遇到的问题

2013-6-6 00:29
10007
在查看对CVE-2012-4792的分析过程中发现如下问题不是很明白。原谅我这个弱菜吧。
(1)对于CButton的构造函数地址和析构函数的偏移地址的获取不知道怎么获取(也就是说不知道CButton的构造和析构函数在哪里)。在回复的第一个里面作者回答是通过找到CButton的构造和析构函数的地址。
ps:正因为不知道偏移地址,所以无法打印出正确的日志。
下面是作者自己找到的偏移,在我机器上偏移可能不一样,所以打印出来的结果很郁闷,竟然没构造函数就直接析构了,所以猜测可能是偏移搞错了,不能照搬作者的偏移。
1:025> bp !mshtml + 0x414c27 “.printf \”Created CButton at %p\”, eax;.echo;g”
1:025> bp !mshtml + 0x414ae1 “.printf \”Deleting CButton at %p\”, eax;.echo;g”
(2)在sxe ld:mshtml过程中发现该模块已经加载,如何才能在这个模块加载之前下断点呢。。
我是先打开windbg,然后打开ie,然后windbg attach上去,但是一附加上去就已经加载好了mshtml了,所以就很尴尬啊。。哎,弱菜的悲哀。

http://blog.exodusintel.com/2013/01/02/happy-new-year-analysis-of-cve-2012-4792/

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞0
打赏
分享
最新回复 (12)
雪    币: 599
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
猪猡公园 2013-6-6 09:19
2
0
楼主不知道有个东西叫IDA吗?单用Windbg研究漏洞,神人才能做到。
雪    币: 246
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
原始病毒 1 2013-6-6 11:34
3
0
嗯,知道了
(1)关于获取构造函数和析构函数的地址:
用x mshtml!CButton::*可以发现
63994557 mshtml!CButton::Init2 = <no type information> 这个应该是构造函数
639943c0 mshtml!CButton::`vector deleting destructor' = <no type information>这个应该是析构函数。不知道我说的对不对?
(2)在sxe ld:mshtml之后,(这句指令的意思在任何错误处理器被激活之前,调试器会停下来。),并没有像那篇文章分析的那样停下来,我想知道为什么啊?
雪    币: 599
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
猪猡公园 2013-6-6 12:22
4
0
(1)正确。
(2)sxe ld mshtml的意思是在加载mshtml的时候会断下来。
雪    币: 246
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
原始病毒 1 2013-6-7 00:11
5
0
是这样的,我想调试ie,因为调试ie的时候只能附加,所以,一附加上去就发现mshtl已经加载好了,那么我设置这个断点,就等于没设置了。。。所以很头疼啊。不知道在哪里设置断点。。
雪    币: 599
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
猪猡公园 2013-6-7 09:57
6
0
首先,IE也可以正常调试打开,子进程的问题用命令childdbg就可以了。其次这里貌似没有加这个断点的必要,直接bu断点不就完了。
雪    币: 246
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
原始病毒 1 2013-6-7 15:58
7
0
谢谢你,刚才打开windbg后直接打开可执行文件iexplore.exe后按ctrl-break,停下来设置了一下.childdbg 1 ,在设置断点,然后就可以继续调试了,在进入子进程的时候就可以停下来了,这个方法有效。
还有就是bu这个怎么下断点?
难道是bu mshtml!Dllmain吗?
雪    币: 599
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
猪猡公园 2013-6-7 16:31
8
0
加载了符号就能看到函数名,bu 模块!函数名(+偏移)。建议楼主先熟悉熟悉windbg的常用命令啊。
雪    币: 246
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
原始病毒 1 2013-6-7 16:40
9
0
这个我知道怎么用啊,我想问,你刚才说的bu命令让mshtml断下来是不是
bu msthml!Dllmain。。。。你理解错了。

那个.childdbg的方法在没有任何启动参数给windbg是可以让mshtml停下来的,如果加了-g -G -o的话就没法停下来,原因在这里。
我是这样做的:
首先open executable 选择ie,
然后ctrl-break,
然后输入.childdbg 1,
然后sxe ld:msthml
然后g

很感谢你不愿其烦地回答!谢谢
雪    币: 599
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
猪猡公园 2013-6-7 22:58
10
0
我没弄清楚的是你为啥要断到mshtml模块加载上。
雪    币: 246
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
原始病毒 1 2013-6-8 01:22
11
0
看到那篇文章的作者这么做了,当然不在mshtml上也没问题,其实是我偏执,固执地想要试试停在那里。没什么其他的目的,呵呵
雪    币: 230
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
lasvegas 2013-10-26 22:13
12
0
去掉命令行的-g,即保留initial breakpoint。
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ruyuanding 2016-4-26 11:00
13
0
我在CDoc::operator new上下的断点,没有停下来,你呢?
游客
登录 | 注册 方可回帖
返回