Я задал вопрос вчера, как вызвать функцию __fastcall, она отлично работала.
Теперь моя последняя функция, которую я должен вызвать, - это некоторые трудности.
Вот функция ASM.
seg000:0043671F push 0AA2BAD1Bh
seg000:00436724 lea ecx, [ebp+var_14]
seg000:00436727 call sub_458E90
IDA PRO помечает его как.
int __thiscall sub_458E90(void *this, int a2)
Это называется так
sub_458E90(&v9, -1439978213);
Теперь вот код, который я пробовал, и он просто дает мне исключение во время выполнения
int addr = 0x458E90;
__declspec(naked) void sub_458E90(int buffer, int key)
{
__asm{
push key
mov ecx, buffer
call [addr]
retn
}
}
Также пробовал
__declspec(naked) void sub_458E90_1(int buffer, int key)
{
__asm{
push key
mov ecx, buffer
jmp [addr]
}
}
Оба дают мне
Ошибка приложения
Инструкция на «0x00458e93» восстановила память на «0x00000000». Память не может быть «прочитана».