.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 ; ---------------------------------------------------------------------------