IMPORTANTE: Fix para Injectores de Bypass de Anti-Hacks/Plugins - Herramientas Mu - Mu Server Files
 

IMPORTANTE: Fix para Injectores de Bypass de Anti-Hacks/Plugins

Publicado por Dakosmu, Jun 22, 2025, 09:30 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Dakosmu

IMPORTANTE: Fix para Injectores de Bypass de Anti-Hacks/Plugins

Buenas! Como algunos ya sabrán existe un método para hacer Bypass a cualquier Anti-Hack/Plugin mediante la inyección de una DLL que tenga el mismo nombre que la del Anti-Hack o Plugin apenas se inicia el juego.

El problema es el siguiente el cual se encuentra en el código fuente de sus Main.dll:

void CProtect::CheckPluginFile() // OK
{
if(this->m_MainInfo.PluginCRC32 == 0)
return;

CCRC32 CRC32;

DWORD PluginCRC32;

if(CRC32.FileCRC(this->m_MainInfo.PluginName,&PluginCRC32,1024) == 0)
ExitProcess(0);

if(this->m_MainInfo.PluginCRC32 != PluginCRC32)
ExitProcess(0);

HMODULE module = LoadLibrary(this->m_MainInfo.PluginName);

if(module == 0)
ExitProcess(0);

void (*EntryProc)() = (void(*)())GetProcAddress(module,"EntryProc");

if(EntryProc != 0)
EntryProc();
}

Como verán, se trata de que el Main.dll primero comprueba el CRC de los plugins que se encuentren en el directorio de sus clientes, y si el CRC es correcto, hace la carga del plugin mediante LoadLibrary, y de presentarse el exporte EntryProc, lo llama.

El problema aquí es que falta una comprobación para verificar si el plugin ya ha sido cargado de antemano y también comprobar el CRC del plugin cuando es cargado, entonces si fue cargado de antemano significa que no ha sido cargado por el Main.dll, y si el CRC del plugin cargado no es el que corresponde significa que por alguna razón el plugin cargado no es el correcto, por lo cual procedemos a cerrar el proceso del juego:

void CProtect::CheckPluginFile() // OK
{
if(this->m_MainInfo.PluginCRC32 == 0)
return;

CCRC32 CRC32;

DWORD PluginCRC32;

if(CRC32.FileCRC(this->m_MainInfo.PluginName,&PluginCRC32,1024) == 0) //Comprobar el CRC del plugin del directorio del juego
ExitProcess(0);

if(this->m_MainInfo.PluginCRC32 != PluginCRC32) //Si el CRC del archivo no es el que corresponde, cerrar el proceso
ExitProcess(0);

HMODULE loadedmodule = GetModuleHandle(this->m_MainInfo.PluginName); //Obtener un HANDLE para comprobar si ya ha sido cargado

if(loadedmodule != 0) //Si no es 0 (está cargado), cerrar el proceso
ExitProcess(0);

HMODULE module = LoadLibrary(this->m_MainInfo.PluginName); //Cargar el plugin

if(module == 0) //Si no se pudo cargar por alguna razón, cerrar el proceso
ExitProcess(0);

char filename[MAX_PATH];
GetModuleFileName(module,filename,MAX_PATH); //Obtener el directorio del plugin cargado para comprobar el CRC

if(CRC32.FileCRC(filename,&PluginCRC32,1024) == 0) //Si no se pudo obtener el CRC, cerrar el proceso
ExitProcess(0);

if(this->m_MainInfo.PluginCRC32 != PluginCRC32) //Si el CRC del plugin cargado no es el que corresponde, cerrar el proceso
ExitProcess(0);

void (*EntryProc)() = (void(*)())GetProcAddress(module,"EntryProc"); //Obtener el exporte

if(EntryProc != 0) //Si el plugin contiene un exporte, llamarlo
EntryProc();
}

Y en cuanto a el Camera.dll, también se puede agregar la misma comprobación y ya con eso tendrán este problema solucionado :D

void CProtect::CheckCameraFile() // OK
{
if(this->m_MainInfo.CameraCRC32 == 0)
return;

CCRC32 CRC32;

DWORD CameraCRC32;

if(CRC32.FileCRC(this->m_MainInfo.CameraName,&CameraCRC32,1024) == 0)
ExitProcess(0);

if(this->m_MainInfo.CameraCRC32 != CameraCRC32)
ExitProcess(0);

HMODULE loadedmodule = GetModuleHandle(this->m_MainInfo.CameraName);

if(loadedmodule != 0) //Si no es 0 (está cargado), cerrar el proceso
ExitProcess(0);

HMODULE module = LoadLibrary(this->m_MainInfo.CameraName);

if(module == 0)
ExitProcess(0);

char filename[MAX_PATH];
GetModuleFileName(module,filename,MAX_PATH);

if(CRC32.FileCRC(filename,&CameraCRC32,1024) == 0)
ExitProcess(0);

if(this->m_MainInfo.CameraCRC32 != CameraCRC32)
ExitProcess(0);

void (*EntryProc)() = (void(*)())GetProcAddress(module,"EntryProc");

if(EntryProc != 0)
EntryProc();
}


Discord: ketaminemuonline
Bon Dia

🡱 🡳
Real Time Web Analytics