|
卡卡技术团队
- 帖子:8368
- 注册:
2006-01-09
- 来自:
|
发表于:
2009-07-06 19:44
|
显示全部
短消息
资料
回复: 【原创】MPEG-2 0day漏洞:缓冲区溢出覆盖SEH
.text:59F0D542 ; --------------------------------------------------------------------------- .text:59F0D542 .text:59F0D542 loc_59F0D542: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+12Fj .text:59F0D542 mov eax, [ebp-10h] .text:59F0D545 cmp [ebx+0Ch], eax .text:59F0D548 jz short loc_59F0D573 .text:59F0D548 .text:59F0D54A mov eax, [ebp+18h] .text:59F0D54D cmp eax, esi .text:59F0D54F jz short loc_59F0D55A .text:59F0D54F .text:59F0D551 mov [ebp+18h], esi .text:59F0D554 mov ecx, [eax] .text:59F0D556 push eax .text:59F0D557 call dword ptr [ecx+8] .text:59F0D557 .text:59F0D55A .text:59F0D55A loc_59F0D55A: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+195j .text:59F0D55A mov eax, [ebp+14h] .text:59F0D55D mov ecx, [eax] .text:59F0D55F lea edx, [ebp+18h] .text:59F0D562 push edx .text:59F0D563 push dword ptr [ebx+0Ch] .text:59F0D566 push eax .text:59F0D567 call dword ptr [ecx] .text:59F0D569 test eax, eax .text:59F0D56B jl short loc_59F0D5CE .text:59F0D56B .text:59F0D56D mov eax, [ebx+0Ch] .text:59F0D570 mov [ebp-10h], eax .text:59F0D570 .text:59F0D573 .text:59F0D573 loc_59F0D573: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+18Ej .text:59F0D573 lea eax, [ebp-24h] .text:59F0D576 push eax .text:59F0D577 push dword ptr [ebx+4] .text:59F0D57A push dword ptr [ebp+18h] .text:59F0D57D call ATL::CComDispatchDriver::PutProperty(IDispatch *,long,tagVARIANT *) .text:59F0D57D .text:59F0D582 test eax, eax .text:59F0D584 jl short loc_59F0D5CE .text:59F0D584 .text:59F0D586 .text:59F0D586 loc_59F0D586: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+186j .text:59F0D586 cmp word ptr [ebp-24h], 0FFFh .text:59F0D58C mov byte ptr [ebp-4], 0 .text:59F0D590 jnz short loc_59F0D598 .text:59F0D590 .text:59F0D592 mov word ptr [ebp-24h], 8 .text:59F0D592 .text:59F0D598 .text:59F0D598 loc_59F0D598: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+1D6j .text:59F0D598 lea eax, [ebp-24h] .text:59F0D59B push eax ; pvarg .text:59F0D59C call ds:VariantClear(x) .text:59F0D59C .text:59F0D5A2 .text:59F0D5A2 loc_59F0D5A2: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+D1j .text:59F0D5A2 ; ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+15Bj .text:59F0D5A2 mov ebx, [ebp-14h] ; (18)这里由于前面的溢出,[ebp-14]被覆盖,为0 .text:59F0D5A5 add ebx, 20h .text:59F0D5A8 cmp [ebx+8], esi ; (19)这里访问0x00000028处内存,触发了Access Violation .text:59F0D5AB mov [ebp-14h], ebx .text:59F0D5AE jnz loc_59F0D437 .text:59F0D5AE .text:59F0D5B4 jmp short loc_59F0D5ED .text:59F0D5B4 .text:59F0D5B6 ; --------------------------------------------------------------------------- .text:59F0D5B6 .text:59F0D5B6 loc_59F0D5B6: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+99j .text:59F0D5B6 mov eax, [ebp+18h] .text:59F0D5B9 or dword ptr [ebp-4], 0FFFFFFFFh .text:59F0D5BD test eax, eax .text:59F0D5BF jz short loc_59F0D5C7 .text:59F0D5BF .text:59F0D5C1 mov ecx, [eax] .text:59F0D5C3 push eax .text:59F0D5C4 call dword ptr [ecx+8] .text:59F0D5C4 .text:59F0D5C7 .text:59F0D5C7 loc_59F0D5C7: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+62j .text:59F0D5C7 ; ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+205j .text:59F0D5C7 mov eax, 80004005h .text:59F0D5CC jmp short loc_59F0D608 .text:59F0D5CC .text:59F0D5CE ; --------------------------------------------------------------------------- .text:59F0D5CE .text:59F0D5CE loc_59F0D5CE: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+1B1j .text:59F0D5CE ; ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+1CAj .text:59F0D5CE mov dword ptr [ebp+0Ch], 80004005h .text:59F0D5CE .text:59F0D5D5 .text:59F0D5D5 loc_59F0D5D5: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+124j .text:59F0D5D5 ; ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+180j .text:59F0D5D5 cmp word ptr [ebp-24h], 0FFFh .text:59F0D5DB jnz short loc_59F0D5E3 .text:59F0D5DB .text:59F0D5DD mov word ptr [ebp-24h], 8 .text:59F0D5DD .text:59F0D5E3 .text:59F0D5E3 loc_59F0D5E3: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+221j .text:59F0D5E3 lea eax, [ebp-24h] .text:59F0D5E6 push eax ; pvarg .text:59F0D5E7 call ds:VariantClear(x) .text:59F0D5E7 .text:59F0D5ED .text:59F0D5ED loc_59F0D5ED: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+74j .text:59F0D5ED ; ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+1FAj .text:59F0D5ED mov eax, [ebp+18h] .text:59F0D5F0 or dword ptr [ebp-4], 0FFFFFFFFh .text:59F0D5F4 cmp eax, esi .text:59F0D5F4 .text:59F0D5F6 .text:59F0D5F6 loc_59F0D5F6: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+C8j .text:59F0D5F6 jz short loc_59F0D5FE .text:59F0D5F6 .text:59F0D5F8 mov ecx, [eax] .text:59F0D5FA push eax .text:59F0D5FB call dword ptr [ecx+8] .text:59F0D5FB .text:59F0D5FE .text:59F0D5FE loc_59F0D5FE: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool):loc_59F0D5F6j .text:59F0D5FE mov eax, [ebp+0Ch] .text:59F0D601 jmp short loc_59F0D608 .text:59F0D601 .text:59F0D603 ; --------------------------------------------------------------------------- .text:59F0D603 .text:59F0D603 loc_59F0D603: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+17j .text:59F0D603 ; ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+22j .text:59F0D603 ; ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+2Bj .text:59F0D603 ; ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+34j .text:59F0D603 mov eax, 80004003h .text:59F0D603 .text:59F0D608 .text:59F0D608 loc_59F0D608: ; CODE XREF: ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+55j .text:59F0D608 ; ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+212j .text:59F0D608 ; ATL::AtlIPersistStreamInit_Load(IStream *,ATL::ATL_PROPMAP_ENTRY *,void *,IUnknown *,bool)+247j .text:59F0D608 mov ecx, [ebp-0Ch] .text:59F0D60B pop edi .text:59F0D60C pop esi .text:59F0D60D pop ebx .text:59F0D60E mov large fs:0, ecx .text:59F0D615 leave .text:59F0D616 retn 14h .text:59F0D616 .text:59F0D616 long __stdcall ATL::AtlIPersistStreamInit_Load(struct IStream *, struct ATL::ATL_PROPMAP_ENTRY *, void *, struct IUnknown *, bool) endp ; sp = 4 .text:59F0D616 .text:59F0D616 ; ---------------------------------------------------------------------------
病毒样本请发到可疑文件交流区
|