Buonasera ragazzi,
dati i miliardi di messaggi che mi arrivano per aiuti ai source, più precisamente per "proteggere" i proprio game da molti hack, ho deciso di postare direttamente qui tutti i codici.
-Serverside-
Anti Wait Hack:
Aprire battle.cpp ed includere:
cercare bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
e modificarlo con:
Anti Safezone:
In char_battle.cpp cercare:
sotto aggiungere questo:
Anti Ghostmode:
Cercare in input_main.cpp;
e sotto aggiungere:
Anti Wallhack:
Cercare in input_main.cpp:
e sotto aggiungere:
Anti Long name generator:
Cercare in input_login.cpp:
e sotto aggiungere:
Anti Mining Bot:
Cercare in char.cpp:
e sotto aggiungere:
Anti Drophack
Cercare in char_item.cpp:
e sotto aggiungere:
Activate Anti Teleport Hack
Cercare in input_main.cpp:
e modificarlo con:
-Clientside-
Attivazione Protezione Anti Injection Py
Cercare in EterPack/EterPackManager.cpp
cercare ancora sotto:
e modificarlo in:
Spero vi siano utili, se avete altre protezioni da aggiungere segnalatemele in questo thread e verranno aggiunte.
Codici presi su mt2dev.
dati i miliardi di messaggi che mi arrivano per aiuti ai source, più precisamente per "proteggere" i proprio game da molti hack, ho deciso di postare direttamente qui tutti i codici.
-Serverside-
Anti Wait Hack:
Aprire battle.cpp ed includere:
C++:
#include "db.h"
cercare bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
e modificarlo con:
C++:
#define ENABLE_SYSCHAT_NOTICE
#define ENABLE_SYSLOG_NOTICE
#define ENABLE_BAN_WAITHACK
bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
{
if (ch->m_kAttackLog.dwVID == victim->GetVID())
{
if (current_time - ch->m_kAttackLog.dwTime < GET_ATTACK_SPEED(ch))
{
INCREASE_SPEED_HACK_COUNT(ch);
if (test_server)
{
sys_log(0, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d",
ch->GetName(),
current_time - ch->m_kAttackLog.dwTime,
GET_ATTACK_SPEED(ch),
ch->m_speed_hack_count);
ch->ChatPacket(CHAT_TYPE_INFO, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d",
ch->GetName(),
current_time - ch->m_kAttackLog.dwTime,
GET_ATTACK_SPEED(ch),
ch->m_speed_hack_count);
}
SET_ATTACK_TIME(ch, victim, current_time);
SET_ATTACKED_TIME(ch, victim, current_time);
return true;
}
}
SET_ATTACK_TIME(ch, victim, current_time);
if (victim->m_AttackedLog.dwPID == ch->GetPlayerID())
{
if (current_time - victim->m_AttackedLog.dwAttackedTime < GET_ATTACK_SPEED(ch))
{
INCREASE_SPEED_HACK_COUNT(ch);
if (ch->m_speed_hack_count > 50)
{
#ifdef ENABLE_SYSLOG_NOTICE
sys_log(0, "%s Attack Speed HACK! time (delta, limit)=(%u, %u), hack_count = %d",
ch->GetName(),
current_time - victim->m_AttackedLog.dwAttackedTime,
GET_ATTACK_SPEED(ch),
ch->m_speed_hack_count);
#endif
#ifdef ENABLE_SYSCHAT_NOTICE
ch->ChatPacket(CHAT_TYPE_INFO, "Attack Speed Hack(%s), (delta, limit)=(%u, %u), hack_count = %d",
ch->GetName(),
current_time - victim->m_AttackedLog.dwAttackedTime,
GET_ATTACK_SPEED(ch),
ch->m_speed_hack_count);
#endif
#ifdef ENABLE_BAN_WAITHACK
std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery("UPDATE account.account SET status= 'BLOCK' WHERE id = %d", ch->GetDesc()->GetAccountTable().id));
#endif
ch->GetDesc()->DelayedDisconnect(3);
}
SET_ATTACKED_TIME(ch, victim, current_time);
return true;
}
}
SET_ATTACKED_TIME(ch, victim, current_time);
return false;
}
Anti Safezone:
In char_battle.cpp cercare:
C++:
bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)
{
if (test_server)
sys_log(0, "[TEST_SERVER] Attack : %s type %d, MobBattleType %d", GetName(), bType, !GetMobBattleType() ? 0 : GetMobAttackRange());
//PROF_UNIT puAttack("Attack");
if (!CanMove())
return false;
sotto aggiungere questo:
C++:
SECTREE *sectree = NULL;
SECTREE *vsectree = NULL;
sectree = GetSectree();
vsectree = pkVictim->GetSectree();
if (sectree && vsectree){
if (sectree->IsAttr(GetX(), GetY(), ATTR_BANPK) || vsectree->IsAttr(pkVictim->GetX(), pkVictim->GetY(), ATTR_BANPK)) {
if (GetDesc()) {
LogManager::instance().HackLog("ANTISAFEZONE", this);
GetDesc()->DelayedDisconnect(3);
}
}
}
Anti Ghostmode:
Cercare in input_main.cpp;
C++:
if (!test_server) //2012.05.15 ±è¿ë¿í : Å×¼·¿¡¼ (¹«Àû»óÅ·Î) ´Ù¼ö ¸ó½ºÅÍ »ó´ë·Î ´Ù¿îµÇ¸é¼ °ø°İ½Ã ÄŞº¸ÇÙÀ¸·Î Á×´Â ¹®Á¦°¡ ÀÖ¾ú´Ù.
e sotto aggiungere:
C++:
if (ch->IsPC() && ch->IsDead()) {
if (ch->GetDesc()) {
LogManager::instance().HackLog("GHOSTMODE", ch);
ch->GetDesc()->DelayedDisconnect(3);
}
}
Anti Wallhack:
Cercare in input_main.cpp:
C++:
const float fDist = DISTANCE_SQRT((ch->GetX() - pinfo->lX) / 100, (ch->GetY() - pinfo->lY) / 100);
e sotto aggiungere:
C++:
PIXEL_POSITION pos = ch->GetXYZ();
if (!SECTREE_MANAGER::instance().GetMovablePosition(ch->GetMapIndex(), pos.x, pos.y, pos)) {
if (ch->GetDesc()) {
LogManager::instance().HackLog("WALLHACK", ch);
ch->GetDesc()->DelayedDisconnect(3);
}
}
Anti Long name generator:
Cercare in input_login.cpp:
C++:
if (true == g_BlockCharCreation)
{
d->Packet(&packFailure, sizeof(packFailure));
return;
}
e sotto aggiungere:
C++:
if (strlen(pinfo->name) > 12){
d->Packet(&packFailure, sizeof(packFailure));
return;
}
Anti Mining Bot:
Cercare in char.cpp:
C++:
if (mining::GetRawOreFromLoad(chLoad->GetRaceNum()) == 0)
return;
e sotto aggiungere:
C++:
if (GetMapIndex() != chLoad->GetMapIndex() || DISTANCE_APPROX(GetX() - chLoad->GetX(), GetY() - chLoad->GetY()) > 1000)
return;
Anti Drophack
Cercare in char_item.cpp:
C++:
LPCHARACTER owner = funcFindOwnership.owner;
e sotto aggiungere:
C++:
if (!owner) {
LogManager::instance().HackLog("DROPHACK", this);
return false;
}
Activate Anti Teleport Hack
Cercare in input_main.cpp:
C++:
if( false == LC_IsEurope() )
{
const PIXEL_POSITION & warpPos = ch->GetWarpPosition();
if (warpPos.x == 0 && warpPos.y == 0)
LogManager::instance().HackLog("Teleport", ch); // ºÎÁ¤È®ÇÒ ¼ö ÀÖÀ½
}
sys_log(0, "MOVE: %s trying to move too far (dist: %.1fm) Riding(%d)", ch->GetName(), fDist, ch->IsRiding());
ch->Show(ch->GetMapIndex(), ch->GetX(), ch->GetY(), ch->GetZ());
ch->Stop();
return;
e modificarlo con:
C++:
const PIXEL_POSITION & warpPos = ch->GetWarpPosition();
if (warpPos.x == 0 && warpPos.y == 0)
LogManager::instance().HackLog("Teleport", ch); // ºÎÁ¤È®ÇÒ ¼ö ÀÖÀ½
sys_log(0, "MOVE: %s trying to move too far (dist: %.1fm) Riding(%d)", ch->GetName(), fDist, ch->IsRiding());
ch->Show(ch->GetMapIndex(), ch->GetX(), ch->GetY(), ch->GetZ());
ch->Stop();
ch->GetDesc()->DelayedDisconnect(0);
return;
-Clientside-
Attivazione Protezione Anti Injection Py
Cercare in EterPack/EterPackManager.cpp
C++:
bool CEterPackManager::GetFromFile(CMappedFile & rMappedFile, const char * c_szFileName, LPCVOID * pData)
cercare ancora sotto:
C++:
#ifndef _DEBUG
//const char *pcExt = strchr(c_szFileName, '.');
//if (pcExt &&
// _strnicmp(pcExt, ".py", 3) == 0 && // python ½ºÅ©¸³Æ® Áß
// stricmp(c_szFileName, "logininfo.py") != 0 && // ·Î±×ÀÎ Á¤º¸ ÆÄÀÏÀÌ ¾Æ´Ï°í
// strnicmp(c_szFileName, "locale", 6) != 0
// )
//{
// return false;
//}
#endif
e modificarlo in:
C++:
const char *pcExt = strchr(c_szFileName, '.');
if (_strnicmp(pcExt, ".py", 3) == 0){
ExitProcess(0);
}
Spero vi siano utili, se avete altre protezioni da aggiungere segnalatemele in questo thread e verranno aggiunte.
Codici presi su mt2dev.