CODE:00596910
CODE:00596910 ; =============== S U B R O U T I N E =======================================
CODE:00596910
CODE:00596910 ; Attributes: bp-based frame
CODE:00596910
CODE:00596910 sub_596910 proc near ; DATA XREF: sub_597E2C+Bo
CODE:00596910
CODE:00596910 var_C = dword ptr -0Ch
CODE:00596910 var_8 = dword ptr -8
CODE:00596910 var_4 = dword ptr -4
CODE:00596910
CODE:00596910 push ebp
CODE:00596911 mov ebp, esp
CODE:00596913 push 0
CODE:00596915 push 0
CODE:00596917 push 0 ;初始化三个本地变量
CODE:00596919 push ebx ;
CODE:0059691A push esi ;
CODE:0059691B push edi ;
CODE:0059691C mov esi, edx ;设置edx 为参数1--param1
CODE:0059691E mov ebx, eax ;设eax 为参数0 -- param0
CODE:00596920 xor eax, eax ;
CODE:00596922 push ebp
CODE:00596923 push offset loc_5969A6
CODE:00596928 push dword ptr fs:[eax] ;try{
CODE:0059692B mov fs:[eax], esp ;
CODE:0059692E lea ecx, [ebp+var_4] ;
CODE:00596931 xor edx, edx ;
CODE:00596933 mov eax, esi ;
CODE:00596935 mov edi, [eax] ;
CODE:00596937 call dword ptr [edi+0Ch] ;vmtCreateObject
;SomeObject Var4 = CreateObject();
CODE:0059693A mov eax, [ebp+var_4] ;
CODE:0059693D push eax ;
CODE:0059693E lea edx, [ebp+var_8] ;
CODE:00596941 mov eax, [ebx+18h] ;param0->Number18h
CODE:00596944 mov ecx, [eax] ;
CODE:00596946 call dword ptr [ecx+58h] ;Var4.Call58h();
CODE:00596949 mov edx, [ebp+var_8] ;
CODE:0059694C pop eax
CODE:0059694D call @System@@LStrCmp$qqrv ; System::__linkproc__ LStrCmp(void) ;
CODE:00596952 jz short loc_596968 ;if(var_8!=var_4)
;{//进行异常处理
CODE:00596954 mov ecx, 1C8h
CODE:00596959 mov edx, offset asc_5969BC ; "D:\\Client\\Game\\gameSrc"...
CODE:0059695E mov eax, offset asc_596A08 ; "Assertion failure"
CODE:00596963 call @System@@Assert$qqrx17System@AnsiStringt1i ; System::__linkproc__ Assert(System::AnsiString,System::AnsiString,int)
CODE:00596968
CODE:00596968 loc_596968: ; CODE XREF: sub_596910+42j
CODE:00596968 lea ecx, [ebp+var_C]
CODE:0059696B mov edx, 1
CODE:00596970 mov eax, esi
CODE:00596972 mov esi, [eax]
CODE:00596974 call dword ptr [esi+0Ch]
CODE:00596977 mov edx, [ebp+var_C]
CODE:0059697A mov eax, ebx
CODE:0059697C call sub_5956E4
CODE:00596981 mov edx, eax
CODE:00596983 mov eax, [ebx+18h]
CODE:00596986 mov ecx, [eax]
CODE:00596988 call dword ptr [ecx+68h]
CODE:0059698B xor eax, eax
CODE:0059698D pop edx
CODE:0059698E pop ecx
CODE:0059698F pop ecx
CODE:00596990 mov fs:[eax], edx
CODE:00596993 push offset loc_5969AD
CODE:00596998
CODE:00596998 loc_596998: ; CODE XREF: sub_596910+9Bj
CODE:00596998 lea eax, [ebp+var_C]
CODE:0059699B mov edx, 3
CODE:005969A0 call @System@@LStrArrayClr$qqrpvi ; System::__linkproc__ LStrArrayClr(void *,int)
CODE:005969A5 retn
CODE:005969A6 ; ---------------------------------------------------------------------------
CODE:005969A6
CODE:005969A6 loc_5969A6: ; DATA XREF: sub_596910+13o
CODE:005969A6 jmp unknown_libname_77 ; BDS 2005-2006 and Delphi6-7 Visual Component Library
CODE:005969AB ; ---------------------------------------------------------------------------
CODE:005969AB jmp short loc_596998
CODE:005969AD ; ---------------------------------------------------------------------------
CODE:005969AD
CODE:005969AD loc_5969AD: ; CODE XREF: sub_596910+95j
CODE:005969AD ; DATA XREF: sub_596910+83o
CODE:005969AD pop edi
CODE:005969AE pop esi
CODE:005969AF pop ebx
CODE:005969B0 mov esp, ebp
CODE:005969B2 pop ebp
CODE:005969B3 retn
CODE:005969B3 sub_596910 endp
CODE:005969B3
CODE:005969B3 ; ---------------------------------------------------------------------------
上面我做了些注释,不知道我的理解是否正确。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课