微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

EBX寄存器用于传递__fastcall函数参数

如何解决EBX寄存器用于传递__fastcall函数参数

我正在尝试挂钩一个使用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 举报,一经查实,本站将立刻删除。