Хочу восстановить функцию из Engine.dll и немного ее изменить
Код:
int __thiscall sub_200D7CE0(int this, int a2)
{
int v3; // [sp+8h] [bp-10h]@1
int v4; // [sp+14h] [bp-4h]@1
sub_200D6990(this, a2);
v4 = 0;
*(_DWORD *)a2 = &off_2054182C;
*(_DWORD *)(a2 + 16) = 128;
*(_DWORD *)(a2 + 20) = 0;
FName__FName(&v3, L"Package.a", 1);
*(_DWORD *)(a2 + 48) = v3;
*(_DWORD *)(a2 + 64) = 2;
*(_DWORD *)(a2 + 56) = 1;
*(_DWORD *)(a2 + 72) = 1;
return a2;
}
Особых проблем в доступе к переменным этой функции нету, описываю я этот класс таким образом
Код:
bool SetHooks(void)
{
int AbnormalSleep;
AbnormalSleep = 0x200D7D10;
Hook::HookFunctionWithTrampoline(reinterpret_cast<unsigned char*>(AbnormalSleep), reinterpret_cast<unsigned char*>(AbnormalSleep_hookNew), trampoline);
}
typedef struct
{
void(__fastcall *subUnk1) (void* ecx, void* dummy,int unkA2); sub_200D6990
} hookedAbnSleep_class;
int __stdcall AbnormalSleep_hookNew(int unkA2) //sub_200D7CE0
{
int r = 0;
hookedAbnSleep_class *T;
__asm{mov T, ecx}
T->subUnk1(0, 0, unkA2);//sub_200D6990
return unkA2;
}
Но вся загвоздка у меня в том что я не могу понять как следует вызвать и описать эту функцию sub_200D6990 внутри моей AbnormalSleep_hookNew (так чтобы можно было поместить в нее аргументы и она работала как оригинальная) ?
Это можно проделать через Module Handle,GetProcAddress, или может еще как то.
Плиз знающие люди объясните =)) замучался....