你好在 IDA 我有一个函数
void __userpurge Test(int a1<eax>, int a2, int a3, int a4, char a5)
我想从我的 C++ 注入的 dll 中挂钩/调用它这就是我尝试调用它的方式,但是 .exe 崩溃
DWORD CALL_ORIGINAL = 0x00EAF6D0;
__declspec(naked) void myHookedFunc(int a1,int a2,int a3,int a4,char a5) {
__asm
{
push a5
push a4
push a3
push a2
push eax
call CALL_ORGIGINAL //maybe use JMP?
retn
}
}
这就是exe调用这个函数的方式
mov eax, [ebp+arg_4]
add esp, 8
push eax
push ecx
mov ecx, [edi+2138h]
mov edx, [ecx+4]
mov ecx, [edx+30h]
mov edx, [ecx]
mov eax, esp
mov [eax], edx
mov eax, [edi+20h]
mov [esp+40h+var_24], esp
push eax
push eax
mov eax, edi
call Test
pop edi
pop esi
retn
在功能上似乎有几次
add esp, 24h
retn 10h
这意味着有更多的参数或 IDA 有错误的参数类型?