Перехват функции kernel32.dll не позволяет моей программе работать

Знаете ли вы, почему я не могу запустить программу при подключении одной из функций kernel32? Я пишу анти-чит и хочу оптимизировать его больше, потому что в данный момент он в потоке, но что-то не так …

Там написано OpenProcess, потому что я пытался до этого перехватить и ту же проблему.

typedef HANDLE ( WINAPI * pOpenProcess )(   _In_   HANDLE hProcess,
_In_   LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_   SIZE_T dwStackSize,
_In_   LPTHREAD_START_ROUTINE lpStartAddress,
_In_   LPVOID lpParameter,
_In_   DWORD dwCreationFlags,
_Out_  LPDWORD lpThreadId );

pOpenProcess original;

__declspec(naked) void hOpenProcess()
{
__asm PUSHAD
__asm PUSHFD
//my actions here
__asm POPFD
__asm POPAD
__asm JMP[original]
};

void ZPerformHook()
{
DWORD Address = ( DWORD )GetProcAddress( GetModuleHandle( TEXT( "kernel32.dll" ) ), "CreateRemoteThread" );
original = ( pOpenProcess )DetourFunction( (PBYTE)Address,  (PBYTE)hOpenProcess );
}

0

Решение

«// мои действия здесь» было бы интересно, может быть, вы портите стек.
или, возможно, ошибка в вашей функции DetourFunction.
как ваша программа терпит неудачу? может с нарушением доступа?

также вам не нужно использовать голую функцию. Вы можете просто подключиться к функции, которая имеет точно такую ​​же сигнатуру, что и ваша цель.
не требуется ассм.

HANDLE __stdcall hOpenProcess(  HANDLE hProcess,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId )
{
// do your stuff here
std::cout << "From hook" << std::endl;

return original( hProcess, lpThreadAttributes, dwStackSize,  lpStartAddress, lpParameter,  dwCreationFlags,  lpThreadId);
}

если это не работает, проверьте возвращаемое значение GetProcAddress, если это правильно, что-то в вашей функции DetourFunction может работать неправильно.

Вы также можете использовать дизассемблер, такой как beaengine, и сбросить целевую функцию после обхода, чтобы проверить, правильно ли был применен хук.

1

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

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

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