Я отключил LoadLibraryA, чтобы заблокировать функцию от вызова в моем приложении. Он предназначен для блокировки инъекций ». Пожалуйста, обратитесь к известной библиотеке CDetour, если вы ее никогда не видели.appcrash при объединении LoadLibraryA
Он перехватывает библиотеку функций загрузки и даже возвращает успешно, а также блокирует неизвестную DLL из памяти в память. Какие-нибудь советы?
bool (__stdcall* LoadLibraryA) (LPCSTR);
bool LoadLibraryADetoured(LPCSTR szMsg)
{
if(strcmp(szMsg, "MyAllowedDll.dll"))
return TRUE;
return FALSE;
}
INT APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID Reserved)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
{
DWORD dwRetAddress = (DWORD)GetProcAddress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA");
ZChatInput = (bool (__stdcall*) ())LoadLibraryA((PBYTE)dwRetAddress, (PBYTE)LoadLibraryADetoured);
DisableThreadLibraryCalls(hModule);
break;
}
case DLL_THREAD_ATTACH:
case DLL_PROCESS_DETACH:
DetourRemove((PBYTE)dwRetAddress, (PBYTE)LoadLibraryADetoured);
case DLL_THREAD_DETACH:
break;
}
return TRUE;
}
'LoadLibraryA' не принимает 2 аргумента – Dani