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

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

vbs对象变量调试  

2014-08-15 13:41:22|  分类: 一些练习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

dim a
msgbox "begin"
'a=&H11223344 '先借用整形变量找到a的地址
Set a = CreateObject("Shell.Application")
a.ShellExecute("calc.exe")
msgbox "end"

借用上次的调试结果,先用上次调试vbs整形变量得到的赋值的地方,

下断点bp 73271b25,运行后得到变量的地址。

再用变量的地址下内存写入断点,得到写入对象的值的地方。

0:003> ub 7327f3af
vbscript!AssignVar+0x78:
7327f39b 8bcb            mov     ecx,ebx
7327f39d e8e721ffff      call    vbscript!VAR::Clear (73271589)
7327f3a2 85c0            test    eax,eax
7327f3a4 0f8c2327ffff    jl      vbscript!AssignVar+0x1cd (73271acd)
7327f3aa 8bfb            mov     edi,ebx
7327f3ac a5              movs    dword ptr es:[edi],dword ptr [esi]
7327f3ad a5              movs    dword ptr es:[edi],dword ptr [esi]
【7327f3ae】 a5              movs    dword ptr es:[edi],dword ptr [esi] <------这里写入对象指针
0:003> u
vbscript!AssignVar+0x8c:
7327f3af a5              movs    dword ptr es:[edi],dword ptr [esi]
7327f3b0 8b5b08          mov     ebx,dword ptr [ebx+8]
7327f3b3 85db            test    ebx,ebx
7327f3b5 0f841027ffff    je      vbscript!AssignVar+0x1cb (73271acb)
7327f3bb 8b03            mov     eax,dword ptr [ebx]

再次运行,下上面那个断点后,查看内存

0:003> dd 00488c34-8
00488c2c  baad0009 baadf00d 【0018cc40】 baadf00d
00488c3c  00000000 baadf00d 00000061 00000002

0:003> dds 0018cc40  l4
0018cc40  【7d59ca58】 SHELL32!CShellDispatch::`vftable'
0018cc44  7d59ca44 SHELL32!CShellDispatch::`vftable'
0018cc48  00000000
0018cc4c  7d59ca3c SHELL32!CShellDispatch::`vftable'
0:003> dds 7d59ca58 l4
7d59ca58  7d7581ff SHELL32!CShellDispatch::QueryInterface
7d59ca5c  7d5e09f9 SHELL32!CFolderItem::AddRef
7d59ca60  7d7567ff SHELL32!CFolderItemVerbs::Release
7d59ca64  7d75a9e7 SHELL32!CFolderItemVerbs::GetTypeInfoCount
...
7d59cac8  7d758b78 SHELL32!CShellDispatch::RefreshMenu
7d59cacc  7d7589d6 SHELL32!CShellDispatch::ControlPanelItem
7d59cad0  7d7583cb SHELL32!CShellDispatch::IsRestricted
7d59cad4  【7d758406】 SHELL32!CShellDispatch::ShellExecuteW <--------这里运行
7d59cad8  7d758d7b SHELL32!CShellDispatch::FindPrinter
7d59cadc  7d758e02 SHELL32!CShellDispatch::GetSystemInformation
7d59cae0  7d7585fa SHELL32!CShellDispatch::ServiceStart

最后查看堆栈

SHELL32!CShellDispatch::ShellExecuteW:
7d758406 8bff            mov     edi,edi

00 0013ed58 77105cf9 SHELL32!CShellDispatch::ShellExecuteW
01 0013edb4 77106308 OLEAUT32!DispCallFunc+0x16a
02 0013ee44 771061c0 OLEAUT32!CTypeInfo2::Invoke+0x234
03 0013eed4 771061c0 OLEAUT32!CTypeInfo2::Invoke+0x60a
04 0013ef64 7d753860 OLEAUT32!CTypeInfo2::Invoke+0x60a
05 0013ef98 7d759268 SHELL32!CImpIDispatch::Invoke+0xcb
06 0013efc4 【73273eb7】 SHELL32!CFolderItemVerb::Invoke+0x29
07 0013f000 73273e27 vbscript!IDispatchInvoke2+0xb2
08 0013f03c 73273397 vbscript!IDispatchInvoke+0x59
09 0013f150 73273d88 vbscript!InvokeDispatch+0x13a
0a 0013f174 7327409f vbscript!InvokeByName+0x42
0b 0013f280 732763ee vbscript!CScriptRuntime::RunNoEH+0x234c
0c 0013f2c8 73276373 vbscript!CScriptRuntime::Run+0x62
0d 0013f3c0 73276ba5 vbscript!CScriptEntryPoint::Call+0x51
0e 0013f41c 73276d9d vbscript!CSession::Execute+0xc8

======
73273e9f 8b08            mov     ecx,dword ptr [eax]
0:003> u
vbscript!IDispatchInvoke2+0x9c:
73273ea1 ff7524          push    dword ptr [ebp+24h]
73273ea4 ff7520          push    dword ptr [ebp+20h]
73273ea7 ff751c          push    dword ptr [ebp+1Ch]
73273eaa ff7518          push    dword ptr [ebp+18h]
73273ead ff7514          push    dword ptr [ebp+14h]
73273eb0 ff7510          push    dword ptr [ebp+10h]
73273eb3 50              push    eax
【73273eb4】 ff5118          call    dword ptr [ecx+18h] // 7d59ca70  7d75923f SHELL32!CFolderItemVerb::Invoke
0:003> u
vbscript!IDispatchInvoke2+0xb2:
73273eb7 8d4df4          lea     ecx,[ebp-0Ch]

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

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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