- 论坛徽章:
- 11
|
这个被你问住了, 我前几年在什么地方偶尔看到的, 现在记不清了, 但还是记得似乎就是不超过10行的一个 ...
zylthinking 发表于 2011-11-16 11:18 ![]()
奶奶的, 找不到了, 之前不知在啥地方瞄到了, 现在找了半天没辄;
帖个反汇编, 汇编不好, 没办法再翻译成C- --- f:\sp\vctools\crt_bld\self_x86\crt\prebuild\eh\rtti.cpp --------------------
- 10261EC0 push ebp
- 10261EC1 mov ebp,esp
- 10261EC3 push 0FFFFFFFEh
- 10261EC5 push offset __TI2?AVbad_cast@std@@+10h (103043D8h)
- 10261ECA push offset _except_handler4 (1021E1D0h)
- 10261ECF mov eax,dword ptr fs:[00000000h]
- 10261ED5 push eax
- 10261ED6 add esp,0FFFFFFC8h
- 10261ED9 push ebx
- 10261EDA push esi
- 10261EDB push edi
- 10261EDC mov eax,dword ptr [___security_cookie (10311AA8h)]
- 10261EE1 xor dword ptr [ebp-8],eax
- 10261EE4 xor eax,ebp
- 10261EE6 push eax
- 10261EE7 lea eax,[ebp-10h]
- 10261EEA mov dword ptr fs:[00000000h],eax
- 10261EF0 mov dword ptr [ebp-18h],esp
- 10261EF3 mov dword ptr [ebp-1Ch],0
- 10261EFA cmp dword ptr [ebp+8],0
- 10261EFE jne __RTDynamicCast+47h (10261F07h)
- 10261F00 xor eax,eax
- 10261F02 jmp $LN14+2Fh (10262049h)
- 10261F07 mov dword ptr [ebp-4],0
- 10261F0E mov eax,dword ptr [ebp+8]
- 10261F11 push eax
- 10261F12 call FindCompleteObject (10262060h)
- 10261F17 add esp,4
- 10261F1A mov dword ptr [pCompleteObject],eax
- 10261F1D mov ecx,dword ptr [ebp+8]
- 10261F20 mov edx,dword ptr [ecx]
- 10261F22 mov eax,dword ptr [edx-4]
- 10261F25 mov dword ptr [pCompleteLocator],eax
- 10261F28 mov ecx,dword ptr [ebp+8]
- 10261F2B sub ecx,dword ptr [ebp+0Ch]
- 10261F2E mov dword ptr [ebp+8],ecx
- 10261F31 mov edx,dword ptr [ebp+8]
- 10261F34 sub edx,dword ptr [pCompleteObject]
- 10261F37 mov dword ptr [inptr_delta],edx
- 10261F3A mov eax,dword ptr [pCompleteLocator]
- 10261F3D mov ecx,dword ptr [eax+10h]
- 10261F40 mov edx,dword ptr [ecx+4]
- 10261F43 and edx,1
- 10261F46 jne __RTDynamicCast+0A1h (10261F61h)
- 10261F48 mov eax,dword ptr [ebp+14h]
- 10261F4B push eax
- 10261F4C mov ecx,dword ptr [ebp+10h]
- 10261F4F push ecx
- 10261F50 mov edx,dword ptr [pCompleteLocator]
- 10261F53 push edx
- 10261F54 call FindSITargetTypeInstance (102620A0h)
- 10261F59 add esp,0Ch
- 10261F5C mov dword ptr [ebp-20h],eax
- 10261F5F jmp __RTDynamicCast+0EFh (10261FAFh)
- 10261F61 mov eax,dword ptr [pCompleteLocator]
- 10261F64 mov ecx,dword ptr [eax+10h]
- 10261F67 mov edx,dword ptr [ecx+4]
- 10261F6A and edx,2
- 10261F6D jne __RTDynamicCast+0D0h (10261F90h)
- 10261F6F mov eax,dword ptr [ebp+14h]
- 10261F72 push eax
- 10261F73 mov ecx,dword ptr [inptr_delta]
- 10261F76 push ecx
- 10261F77 mov edx,dword ptr [ebp+10h]
- 10261F7A push edx
- 10261F7B mov eax,dword ptr [pCompleteLocator]
- 10261F7E push eax
- 10261F7F mov ecx,dword ptr [pCompleteObject]
- 10261F82 push ecx
- 10261F83 call FindMITargetTypeInstance (10262190h)
- 10261F88 add esp,14h
- 10261F8B mov dword ptr [ebp-20h],eax
- 10261F8E jmp __RTDynamicCast+0EFh (10261FAFh)
- 10261F90 mov edx,dword ptr [ebp+14h]
- 10261F93 push edx
- 10261F94 mov eax,dword ptr [inptr_delta]
- 10261F97 push eax
- 10261F98 mov ecx,dword ptr [ebp+10h]
- 10261F9B push ecx
- 10261F9C mov edx,dword ptr [pCompleteLocator]
- 10261F9F push edx
- 10261FA0 mov eax,dword ptr [pCompleteObject]
- 10261FA3 push eax
- 10261FA4 call FindVITargetTypeInstance (10262350h)
- 10261FA9 add esp,14h
- 10261FAC mov dword ptr [ebp-20h],eax
- 10261FAF cmp dword ptr [ebp-20h],0
- 10261FB3 je __RTDynamicCast+110h (10261FD0h)
- 10261FB5 mov ecx,dword ptr [ebp-20h]
- 10261FB8 add ecx,8
- 10261FBB push ecx
- 10261FBC mov edx,dword ptr [pCompleteObject]
- 10261FBF push edx
- 10261FC0 call PMDtoOffset (10262570h)
- 10261FC5 add esp,8
- 10261FC8 add eax,dword ptr [pCompleteObject]
- 10261FCB mov dword ptr [ebp-1Ch],eax
- 10261FCE jmp __RTDynamicCast+138h (10261FF8h)
- 10261FD0 mov dword ptr [ebp-1Ch],0
- 10261FD7 cmp dword ptr [ebp+18h],0
- 10261FDB je __RTDynamicCast+138h (10261FF8h)
- 10261FDD push offset string "Bad dynamic_cast!" (102DC9CCh)
- 10261FE2 lea ecx,[ebp-38h]
- 10261FE5 call std::bad_cast::bad_cast (10208630h)
- 10261FEA push offset __TI2?AVbad_cast@std@@ (103043C8h)
- 10261FEF lea eax,[ebp-38h]
- 10261FF2 push eax
- 10261FF3 call _CxxThrowException (10207E50h)
- 10261FF8 mov dword ptr [ebp-4],0FFFFFFFEh
- 10261FFF jmp $LN14+2Ch (10262046h)
- 10262001 mov ecx,dword ptr [ebp-14h]
- 10262004 mov edx,dword ptr [ecx]
- 10262006 mov eax,dword ptr [edx]
- 10262008 mov dword ptr [ebp-48h],eax
- 1026200B mov ecx,dword ptr [ebp-48h]
- 1026200E xor eax,eax
- 10262010 cmp ecx,0C0000005h
- 10262016 sete al
- $LN15:
- 10262019 ret
复制代码 |
|