问题描述
我正在尝试挂钩一个使用EBX的fastcall函数,并试图重新生成相同的asm行以使挂钩正常工作
mov ebx,dword ptr ss:[ebp+8]
mov ecx,eax
call 004F00F0
有什么想法可以使__fastcall调用约定使用EBX?
注意:编写的asm由Visual Studio c ++ 2005编译器生成,我正在vs2019上编写自己的代码。
更新#1:
函数汇编如下,
sub esp,8
test ecx,ecx
push ebp
push esi
push edi
je 004F0208
mov ax,word ptr ds:[ecx+80]
test al,2
je 004F0208
and al,1C
cmp al,4
jne 004F0208
fldz
lea ebp,dword ptr ds:[ebx+21A0]
fst dword ptr ss:[ebp+8],st(0)
mov dword ptr ss:[ebp],0
fst dword ptr ss:[ebp+C],st(0)
mov byte ptr ss:[ebp+4],0
mov byte ptr ss:[ebp+5],0
xor eax,eax
mov dword ptr ss:[ebp+10],eax
mov dword ptr ss:[ebp+14],eax
mov dword ptr ss:[ebp+18],eax
mov dword ptr ss:[ebp+1C],eax
mov dword ptr ss:[ebp+20],eax
mov dword ptr ss:[ebp+24],eax
mov dword ptr ss:[ebp+28],eax
mov dword ptr ss:[ebp+2C],eax
mov dword ptr ss:[ebp+30],eax
mov dword ptr ss:[ebp],ecx
mov byte ptr ds:[ebx+21A4],1
movzx eax,word ptr ds:[ecx+E4]
mov dword ptr ss:[esp+10],eax
lea esi,dword ptr ds:[ebx+1EC]
mov edi,17
fild st(0),dword ptr ss:[esp+10]
fstp dword ptr ds:[ebx+21A8],st(0)
movzx ecx,word ptr ds:[ecx+E6]
mov dword ptr ss:[esp+10],ecx
push ecx
fild st(0),dword ptr ss:[esp+14]
fstp dword ptr ds:[ebx+21AC],st(0)
fstp dword ptr ss:[esp],st(0)
push 0
push 3
call 004B3510
fldz
push ecx
fstp dword ptr ss:[esp],st(0)
push 0
push 3
mov edi,18
call 004B3510
mov edx,dword ptr ds:[ebx]
mov eax,dword ptr ds:[edx+4E8]
mov ecx,ebx
call eax
push 3207
call 00430A00
add esp,4
mov esi,eax
lea ecx,dword ptr ds:[ebx+8]
push ecx
lea eax,dword ptr ds:[edi-14]
mov ecx,esi
call 00404090
mov edi,00CD3A80
call 0042C8F0
cmp dword ptr ss:[ebp],0
je 004F01F3
mov eax,edi
mov ecx,ebp
call 004DD6B0
mov edi,esi
mov eax,edi
mov esi,00CD3A80
call 0042C820
mov esi,ebx
call 00484D90
pop edi
pop esi
pop ebp
add esp,8
ret
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)