EasyHook: внедренное приложение падает на LhInstallHook

я использую EasyHook внедрить DLL в 64-битное приложение. Кажется, что базовая перехват работает, но как только DLL вызывает метод «LhInstallHook», внедренное приложение вылетает. Я думаю, что я нашел правильный адрес / смещение для желаемой функции. Поэтому я подозреваю, что некоторые из моего кода (в DLL) повреждены.

Инжектор:

NTSTATUS nt = RhInjectLibrary(
processId,      // The process to inject into
0,              // ThreadId to wake up upon injection
EASYHOOK_INJECT_DEFAULT,
NULL,           // 32-bit
dllToInject,    // 64-bit only
NULL,           // data to send to injected DLL entry point
NULL            // size of data to send
);

DLL:

struct Player {
_BYTE gap0[128];
__int64 saleStats;
_BYTE gap88[104];
int health;
int units;
};

typedef __int64 func(Player*, int);
func* FunctionBase = (func*)0x7FF7E4513F3D;    // Function address found by debugging assembly

__int64 FunctionHook(Player *playerRef, int unitsToAdd);
__int64 FunctionHook(Player *playerRef, int unitsToAdd)
{
Beep(500, 500);                             // Beep to signal success
return FunctionBase(playerRef, unitsToAdd); // Execute base
}

NTSTATUS result = LhInstallHook( // This is the point where the host crashes
(void*)0x7FF7E4513F3D,       // Function to hook
FunctionHook,                // delegate
NULL,                        // callback
&hHook);                     // handler

Я думаю, что мое использование адреса / смещения неверно, но я не смог найти ресурсы по этому вопросу.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]