[SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
+8
Gm
CGeas
DORITOZ
FFaBByy
fabi9005
damiancito
Fenix.
Programador
12 participantes
[SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Jue Ago 30, 2012 1:23 pm
No hay mucho que decir al respecto, después de todo, el propio título lo dice todo.
Crèdito : Programador
Disconnect Hack:
--------------------------------------------------------------------------------------------
#pragma once
namespace Programador
{
struct PMSG_ACTION
{
PBMSG_HEAD h;
unsigned char Direction;
unsigned char Action;
unsigned char TargetH;
unsigned char TargetL;
};
}
--------------------------------------------------------------------------------------------
Disconnect.cpp:
--------------------------------------------------------------------------------------------
#include "Disconnect.h"
namespace Programador
{
DisconnectStruct Disconnect::Struct[1000];
void Disconnect::Action(PMSG_ACTION* lpMsg, DWORD dwIndex)
{
WORD szIndex = (WORD)(dwIndex - 4800);
if(!Struct[szIndex].Send)
{
return;
}
if(Struct[szIndex].Timer <= 0)
{
Struct[szIndex].Timer = GetTickCount();
}
if(Struct[szIndex].Count >= 15)
{
DWORD dwTimer = (GetTickCount() - Struct[szIndex].Timer) / 1000;
if(dwTimer <= 1)
{
Struct[szIndex].Send = false;
ServerCloseClient(dwIndex, 0);
}
else
{
Struct[szIndex].Count = 0;
Struct[szIndex].Timer = GetTickCount();
}
}
Struct[szIndex].Count++;
ServerActionPlayer(lpMsg, dwIndex);
}
}
--------------------------------------------------------------------------------------------
Hook:
--------------------------------------------------------------------------------------------
Hook((DWORD)&Programador:Disconnect::Action, 0x401A1E);
--------------------------------------------------------------------------------------------
Define:
--------------------------------------------------------------------------------------------
#define ServerActionPlayer ((void(*)Programador::PMSG_ACTION*, DWORD)) 0x425CD0)
--------------------------------------------------------------------------------------------
Flood Connect:
--------------------------------------------------------------------------------------------
Flood.h:
--------------------------------------------------------------------------------------------
#pragma once
namespace Programador
{
struct FloodCheck
{
bool Send;
bool Delete;
unsigned long Timer;
unsigned long Count;
std::string Address;
};
struct FloodStruct
{
FloodCheck Check;
std::string Address;
};
class Flood
{
public:
static bool Inits();
static bool Check(std::string szAddress);
static short stringExplode(std::string szAddress, std::string szExplode);
static short Connection(SOCKET szSocket, char* szAddress);
public:
static FloodStruct Struct[500];
public:
static unsigned long Count;
};
}
--------------------------------------------------------------------------------------------
Flood.cpp:
--------------------------------------------------------------------------------------------
#include "Library.h"
namespace Programador
{
FloodStruct Flood::Struct[500];
unsigned long Flood::Count;
bool Flood::Init()
{
for(int i = 0; i < 500; i++)
{
Struct[i].Address = "";
}
Count = 0;
std::fstream f(".\\Network\\Block\\IpAddress.txt", std::ios::in);
if(f.is_open() && f.good())
{
BYTE szNum = 0;
char szBuffer[1024];
std::string szLine;
while(!f.eof())
{
if(Count == 500)
{
MessageBox(NULL, "O limite de endereço IP de usuários foi excedido.", "Erro", MB_OK | MB_ICONERROR);
break;
}
memset(&szBuffer[0], 0x00, 1024);
f.getline(szBuffer, 1024);
szLine.assign(&szBuffer[0]);
if(szLine.length() > 9)
{
if(szLine.substr(0, 2) != "//" && szLine.substr(0, 1) != "#" && szLine.substr(0, 1) != ";")
{
szNum = (BYTE)Count;
for(int i = 0; i < (int)szLine.length(); i++)
{
if(szLine[i] != ' ' && szLine[i] != '\t' && szLine[i] != '"')
{
if(isdigit(szLine.c_str()[i]) || szLine[i] == '.')
{
Struct[szNum].Address += szLine[i];
}
else
{
f.close();
MessageBox(NULL, "O arquivo IpAddress.txt está configurado de forma inadequada.", "Erro", MB_OK | MB_ICONERROR);
return false;
}
}
}
Count++;
}
}
}
f.close();
return true;
}
return false;
}
short Flood::stringExplode(std::string szAddress, std::string szExplode)
{
BYTE szId = 0, szDec[4] = {0};
std::string szConvert = "";
for(int i = 0; i <= (int)szAddress.length(); i++)
{
if(!szAddress.compare(i, 1, szExplode) || i == szAddress.length())
{
szDec[szId] = (BYTE)atoi((char*)szConvert.c_str());
szConvert = "";
szId++;
}
else
{
szConvert += szAddress[i];
}
}
float szResult = (float)(((szDec[0] + szDec[1]) - szDec[2]) + (szDec[3] * 2)) / 2;
if((szResult > 400))
{
szResult /= 2;
}
return (short)szResult;
}
bool Flood::Check(std::string szAddress)
{
WORD szIndex = Function::stringExplode(szAddress, (std::string)".");
if(Count > 0)
{
for(int i = 0; i < (int)Count; i++)
{
if(Struct[i].Address.empty())
{
break;
}
if((boost::iequals(Struct[i].Address, szAddress)))
{
if(!Struct[szIndex].Check.Delete)
{
for(int i = 4800; i < 5800; i++)
{
if(Object[i].Connected <= 1)
{
if(boost::iequals(Object[i].IpAddress, szAddress.c_str()))
{
ServerDelete(i);
}
}
}
Struct[szIndex].Check.Delete++;
}
return false;
}
}
}
if(Struct[szIndex].Check.Timer <= 0)
{
Struct[szIndex].Check.Send = true;
Struct[szIndex].Check.Delete = false;
Struct[szIndex].Check.Address = szAddress;
Struct[szIndex].Check.Timer = GetTickCount();
Struct[szIndex].Check.Count = 0;
}
if(!Struct[szIndex].Check.Send)
{
if(boost::iequals(Struct[szIndex].Check.Address, szAddress))
{
return false;
}
}
if(Struct[szIndex].Check.Count >= 2)
{
DWORD dwTimer = (GetTickCount() - Struct[szIndex].Check.Timer) / 1000;
if(dwTimer <= 1)
{
Struct[szIndex].Check.Send = false;
Struct[szIndex].Check.Delete = false;
Struct[szIndex].Check.Address = szAddress;
bool szWriteProceed = false;
if(Count < 500)
{
if(Count == 499)
{
if(Struct[499].Address.empty())
{
Struct[499].Check.Address = szAddress;
szWriteProceed = true;
}
}
else
{
BYTE szNum = (BYTE)Count;
Struct[szNum].Address = szAddress;
szWriteProceed = true;
Count++;
}
}
if(szWriteProceed)
{
std::fstream f(".\\Network\\Block\\IpAddress.txt", std::ios::app | std::ios::out);
if(f.is_open() && f.good())
{
std::string Msg(255, ' ');
sprintf_s(&Msg[0], 255, "\"%s\"\n", &szAddress[0]);
f.write(Msg.c_str(), Msg.length());
f.close();
}
}
}
else
{
if(!boost::iequals(Struct[szIndex].Check.Address, szAddress))
{
Struct[szIndex].Check.Send = true;
Struct[szIndex].Check.Delete = false;
Struct[szIndex].Check.Address = szAddress;
}
Struct[szIndex].Check.Timer = GetTickCount();
Struct[szIndex].Check.Count = 0;
}
}
Struct[szIndex].Check.Count++;
return true;
}
short Flood::Connection(SOCKET szSocket, char* szAddress)
{
if(!Check((std::string)szAddress))
{
return (-1);
}
return ServerConnect(szSocket, szAddress);
}
}
--------------------------------------------------------------------------------------------
Hook:
--------------------------------------------------------------------------------------------
Hook((DWORD)&Programador::Flood::Connection, 0x401834);
--------------------------------------------------------------------------------------------
Define:
--------------------------------------------------------------------------------------------
#define ServerConnect ((short(*)(SOCKET, char*)) 0x45F0F0)
--------------------------------------------------------------------------------------------
Crèdito : Programador
- Fenix.Zk-Level 0
15
4499
2
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Jue Ago 30, 2012 4:23 pm
hice el source con scrip y si te digo que me funciono de 10 pasame tu facebook msn twiiter algo tengo un trabajo para vos papa soy dueño de una empresa :>^:
- damiancitoZk-Level 1
52
4933
7
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Jue Ago 30, 2012 4:35 pm
jaja yo lo quiero Fenix. para la empresa de un amigo no me lo robes feo jaja saludo esto es un aportaso buen post
- fabi9005Zk-Level 0
18
4518
2
Gracia por el aporte!!!
Vie Ago 31, 2012 12:08 am
Programador muchas gracias tengo sirtas dudas quiero consultarlo por telefono con vos por favor te pago si es necesario para vos agrega mi MSN [Tienes que estar registrado y conectado para ver este vínculo]
por favor dejame un mail con tu telefono y te llamo!! :>^:
buen post
por favor dejame un mail con tu telefono y te llamo!! :>^:
buen post
- FFaBByyZk-Level 0
10
4485
0
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Vie Ago 31, 2012 1:49 am
Buenisimo Source para empesar armar un mu con seguridad 100% lalala buen post
- DORITOZZk-Nuevo
2
4475
0
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Vie Ago 31, 2012 2:55 am
Programador porfavor si me podes pasar tu facebook ? ^^ graxxxx
- CGeasZk-Level 0
18
4503
2
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Dom Sep 02, 2012 3:04 pm
Hola, quisiera implementar estas protecciones a mi GS 1.00.88.
Se como crear Disconnect.cpp y Disconnect.h pero no se donde va el Hook y el Define ni que función tienen si pudieran explicármelas de los agradecería de antemano. buen post
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Dom Sep 02, 2012 4:07 pm
CGeas escribió:
Hola, quisiera implementar estas protecciones a mi GS 1.00.88.
Se como crear Disconnect.cpp y Disconnect.h pero no se donde va el Hook y el Define ni que función tienen si pudieran explicármelas de los agradecería de antemano. buen post
No sé si el método de hacer el Disconnect Hack en GS 1.00.88 es la misma que la 97D.
En caso afirmativo, usted tiene que buscar lo offset de la función llamada CGActionRecv o GCActionRecv (no recuerdo su verdadero nombre) para hacer el hook y actualizar los valores de la struct PMSG_ACTION (que puede o no se han cambiado).
- CGeasZk-Level 0
18
4503
2
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Dom Sep 02, 2012 11:53 pm
gracias ya lo encontre y funciono te lo agradesco :)
- GmZk-Nuevo
1
4452
0
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Sáb Sep 15, 2012 12:50 pm
Como Descargo eso?
- FameCrew~Zk-Level 0
13
4495
0
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Dom Sep 16, 2012 12:21 pm
CHIKOOOOS ALGIEN ME HARIA EL FAVOR DE AYUDARME HACER ESTO ???? TENGO PROBLEMAS CON MI SERVIDOR Y NO SE HACERLO ;/ PORFAVOR R AYUDENMEE !!
- XxBrayxXZk-Level 2
134
4757
0
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Dom Sep 23, 2012 6:02 pm
Si alguien explica detalladamente como se hace esto seria bueno para la comunidad
Gracias esto es un buen aporte para varios servidores de mu Online en especial los 99b
que son afectados por este hack Saludos y espero tu respuesta ;)
Gracias esto es un buen aporte para varios servidores de mu Online en especial los 99b
que son afectados por este hack Saludos y espero tu respuesta ;)
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Lun Sep 24, 2012 6:12 am
XxBrayxX escribió:Si alguien explica detalladamente como se hace esto seria bueno para la comunidad
Gracias esto es un buen aporte para varios servidores de mu Online en especial los 99b
que son afectados por este hack Saludos y espero tu respuesta ;)
como crear los Disconnect Hack: , Flood Connect: ,Disconnect.cpp: , Flood.cpp: "dll" ,con c++ Facil y sencillo no es tan dificil chicos. , al define también lo pueden crear con c++ , si no saben lo que es un c++ , Tirense unas guias. le-di detalladamente como tiene que hacer.
- GGiaNNZk-Nuevo
8
4405
0
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Jue Ene 03, 2013 3:48 pm
BUENO PRIMERO EN PRINCIPAL HOLA.
BUENO TE VOY A COMENTAR QUE SOY ALGO NUEVO EN ESTO DE LA PROGRAMACIÓN , PERO TUVE UN PROBLEMA AL CREAR LA DLL, BUENO INTENTE CREAR LA DLL CON DEV-C++ PERO AL EJECUTARLA Y COMPILARLA ME PONE ESTO: COULD NOT CREATE MAKEFILE: "C:DOCUMENTS AND SETTINGS\USUARIO\ESCRITORIO\Makefile.Win" I/O error 32. enojado
BUENO SI ME AYUDARIAS TE LO AGRADECERÍA.
BUENO TE VOY A COMENTAR QUE SOY ALGO NUEVO EN ESTO DE LA PROGRAMACIÓN , PERO TUVE UN PROBLEMA AL CREAR LA DLL, BUENO INTENTE CREAR LA DLL CON DEV-C++ PERO AL EJECUTARLA Y COMPILARLA ME PONE ESTO: COULD NOT CREATE MAKEFILE: "C:DOCUMENTS AND SETTINGS\USUARIO\ESCRITORIO\Makefile.Win" I/O error 32. enojado
BUENO SI ME AYUDARIAS TE LO AGRADECERÍA.
- FernaZk-Nuevo
9
4347
0
Re: [SOURCE] Protección contra el Disconnect Hack & Flood Connect (Attack GS)
Lun Ene 14, 2013 11:26 am
como agrego esto a mi server 0.99?
Permisos de este foro:
No puedes responder a temas en este foro.