汇编中mov esi,eax是什么意思!!!!
00000000pushedi00000001pushesi00000002xoredi,edi00000004calldwordptrds:[0157EC88h]000...
00000000 push edi
00000001 push esi
00000002 xor edi,edi
00000004 call dword ptr ds:[0157EC88h]
0000000a movzx esi,al
0000000d test esi,esi
0000000f je 00000018
00000011 xor eax,eax
00000013 pop esi
00000014 pop edi
00000015 ret 8
00000018 lea eax,[esp+0Ch]
0000001c push dword ptr [eax+4]
0000001f push dword ptr [eax]
00000021 call dword ptr ds:[0157F598h]
错误 ->00000027 mov esi,eax
00000029 mov edi,esi
0000002b mov eax,edi
0000002d pop esi
0000002e pop edi
0000002f ret 8
这是一个内部调用函数指针的动态链接库执行时出现的错误。
帮忙看下这段程序在做什么,特别是出错的地方。
我在调试这程序时碰到这样的问题。程序段如下:
......
s0.DrawOperationLine(0);
00000173 lea ecx,[ebp-58h]
00000176 xor edx,edx
00000178 call dword ptr ds:[00B6694Ch]
return s0.exefor(); //出错代码
0000017e lea ecx,[ebp-58h]
00000181 call dword ptr ds:[00B66948h]
00000187 fstp qword ptr [ebp-60h]
0000018a mov eax,dword ptr [ebp-60h]
0000018d mov dword ptr [ebp-38h],eax
00000190 mov eax,dword ptr [ebp-5Ch]
00000193 mov dword ptr [ebp-34h],eax
00000196 jmp 000001AA
00000198 mov ecx,dword ptr ds:[017820BCh]
0000019e lea edx,[ebp-58h]
000001a1 call dword ptr ds:[00B66964h]
000001a7 pop eax
000001a8 jmp eax
000001aa lea ecx,[ebp-58h]
000001ad call dword ptr ds:[00B66954h]
000001b3 nop
000001b4 jmp 000001B6
} 展开
00000001 push esi
00000002 xor edi,edi
00000004 call dword ptr ds:[0157EC88h]
0000000a movzx esi,al
0000000d test esi,esi
0000000f je 00000018
00000011 xor eax,eax
00000013 pop esi
00000014 pop edi
00000015 ret 8
00000018 lea eax,[esp+0Ch]
0000001c push dword ptr [eax+4]
0000001f push dword ptr [eax]
00000021 call dword ptr ds:[0157F598h]
错误 ->00000027 mov esi,eax
00000029 mov edi,esi
0000002b mov eax,edi
0000002d pop esi
0000002e pop edi
0000002f ret 8
这是一个内部调用函数指针的动态链接库执行时出现的错误。
帮忙看下这段程序在做什么,特别是出错的地方。
我在调试这程序时碰到这样的问题。程序段如下:
......
s0.DrawOperationLine(0);
00000173 lea ecx,[ebp-58h]
00000176 xor edx,edx
00000178 call dword ptr ds:[00B6694Ch]
return s0.exefor(); //出错代码
0000017e lea ecx,[ebp-58h]
00000181 call dword ptr ds:[00B66948h]
00000187 fstp qword ptr [ebp-60h]
0000018a mov eax,dword ptr [ebp-60h]
0000018d mov dword ptr [ebp-38h],eax
00000190 mov eax,dword ptr [ebp-5Ch]
00000193 mov dword ptr [ebp-34h],eax
00000196 jmp 000001AA
00000198 mov ecx,dword ptr ds:[017820BCh]
0000019e lea edx,[ebp-58h]
000001a1 call dword ptr ds:[00B66964h]
000001a7 pop eax
000001a8 jmp eax
000001aa lea ecx,[ebp-58h]
000001ad call dword ptr ds:[00B66954h]
000001b3 nop
000001b4 jmp 000001B6
} 展开
展开全部
XXXX45A3 lea ecx, [esp+124h]
XXXX45AA push ecx ; IX86ver0.dll
XXXX45AB call ds:LoadLibraryA //加载DLL
XXXX45B1 mov ebp, eax //句柄从eax返回
XXXX45B3 test ebp, ebp
XXXX45B5 jz loc_6FF046F1 //没成功退出
XXXX45BB push offset aCheckrevision ; "CheckRevision" //函数名
XXXX45C0 push ebp ; hModule //DLL句柄
XXXX45C1 call ds:GetProcAddress //加载函数
XXXX45C7 mov esi, eax //执行地址从eax返回
XXXX45C9 test esi, esi
XXXX45CB jnz short loc_6FF045DF //成功转移,到正常主力,否则有些出错处理等操作.
XXXX45CD push offset aErrorFailedT_0 ; "<ERROR: Failed to execute Versioning DL"...
XXXX45D2 call nullsub_1 //错误,提示,等等
XXXX45D7 add esp, 4
XXXX45DA jmp loc_6FF046EA
//就存储空间来说,这里至少少了3~4个指令代码,因该是些有赋值操作,则带参数.
XXXX46E6 call esi ; CheckRevision
XXXX46E8 mov ebx, eax
就这些代码来说CheckRevision是没有带参数.
XXXX45AA push ecx ; IX86ver0.dll
XXXX45AB call ds:LoadLibraryA //加载DLL
XXXX45B1 mov ebp, eax //句柄从eax返回
XXXX45B3 test ebp, ebp
XXXX45B5 jz loc_6FF046F1 //没成功退出
XXXX45BB push offset aCheckrevision ; "CheckRevision" //函数名
XXXX45C0 push ebp ; hModule //DLL句柄
XXXX45C1 call ds:GetProcAddress //加载函数
XXXX45C7 mov esi, eax //执行地址从eax返回
XXXX45C9 test esi, esi
XXXX45CB jnz short loc_6FF045DF //成功转移,到正常主力,否则有些出错处理等操作.
XXXX45CD push offset aErrorFailedT_0 ; "<ERROR: Failed to execute Versioning DL"...
XXXX45D2 call nullsub_1 //错误,提示,等等
XXXX45D7 add esp, 4
XXXX45DA jmp loc_6FF046EA
//就存储空间来说,这里至少少了3~4个指令代码,因该是些有赋值操作,则带参数.
XXXX46E6 call esi ; CheckRevision
XXXX46E8 mov ebx, eax
就这些代码来说CheckRevision是没有带参数.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询