Server Tabanlı Anti Hile Rehberi

LDrago

The Dragon's Excalibur
Üye
Mesaj
162
Çözümler
1
Beğeni
179
Puan
726
Anti Waithack:
"battle.cpp" açın ve include listesine aşağıdaki kodu ekleyin
Kod:
#include "db.h"

Örnek;


ss+(2014-11-23+at+06.57.51).png


Şimdi bu kodu aratın;

Kod:
bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)

ve altındaki fonksiyonda dahil olmak üzere aşağıda verdiğim kod bloğu ile değiştirin

Kod:
#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;
}

Yapıştırdığınızda 3 define da aktif olur kapatmak için başına "//"(comment tag) koymanız yeterlidir.


Kod:
//#define ENABLE_BAN_WAITHACK

gibi

Oluşacak görüntü

ilk hali:

ss+(2014-11-23+at+07.00.43).png


ss+(2014-11-23+at+07.01.41).png


Yeni Hali;

ss+(2014-11-23+at+07.02.18).png

ss+(2014-11-23+at+07.02.41).png



Sonuç:



Anti Safezone:
*char_battle.cpp

Bulun:
Kod:
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;
Altına ekleyin:
Kod:
    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);
            }
        }
    }

ss+(2015-09-10+at+02.27.06).png

safezone.png


Anti Ghostmode:
Uyarı!:
Bu önlem yapılan testlerde oyuncu öldüğünde oyundan atabilir.
*input_main.cpp

Bulun:
Kod:
if (!test_server) //2012.05.15 ±è¿ë¿í : Å×¼·¿¡¼* (¹«Àû»óÅ·Î) ´Ù¼ö ¸ó½ºÅÍ »ó´ë·Î ´Ù¿îµÇ¸é¼* °ø°İ½Ã ÄŞº¸ÇÙÀ¸·Î Á×´Â ¹®Á¦°¡ ÀÖ¾ú´Ù.
Altına ekleyin:
Kod:
 if (ch->IsPC() && ch->IsDead()) {
if (ch->GetDesc()) {
LogManager::instance().HackLog("GHOSTMODE", ch);
ch->GetDesc()->DelayedDisconnect(3);
}
}

ss+(2015-09-10+at+02.30.51).png


ghost.png


Anti Wallhack:
*input_main.cpp


Bulun:
Kod:
const float fDist = DISTANCE_SQRT((ch->GetX() - pinfo->lX) / 100, (ch->GetY() - pinfo->lY) / 100);
Üstüne ekleyin:
Kod:
 PIXEL_POSITION pos = ch->GetXYZ();
if (!SECTREE_MANAGER::instance().GetMovablePosition(c h->GetMapIndex(), pos.x, pos.y, pos)) {
if (ch->GetDesc()) {
LogManager::instance().HackLog("WALLHACK", ch);
ch->GetDesc()->DelayedDisconnect(3);
}
}

ss+(2015-09-10+at+02.34.04).png

ss+(2015-09-10+at+02.19.03).png


Anti Long name generator:
*input_login.cpp


Bulun:
Kod:
if (true == g_BlockCharCreation)
{
d->Packet(&packFailure, sizeof(packFailure));
return;
}
Altına ekleyin:
Kod:
if (strlen(pinfo->name) > 12){
d->Packet(&packFailure, sizeof(packFailure));
return;
}
ss+(2015-09-07+at+06.48.21).png

ss+(2015-09-10+at+02.42.07).png


#Güncelleme 1

-Client taraflı-

PythonPlayerModule.cpp


Kod:
{ "SetItemData", playerSetItemData, METH_VARARGS },
*Sahte item oluşturma fonkiyonu


PythonItemModule.cpp


Kod:
{ "CreateItem", itemCreateItem, METH_VARARGS },
*Sahte item oluşturma fonkiyonu


PythonCharacterModule.cpp


Kod:
{ "IsGameMaster", chrIsGameMaster, METH_VARARGS },
*Gm dedektör fonksiyonu


Bu fonksiyonlar kullanılmıyor, bu satırları silin.

-Server taraflı-

Anti Maden botu


*char.cpp

Ara:
Kod:
 if (mining::GetRawOreFromLoad(chLoad->GetRaceNum()) == 0)
return;
Üstüne ekle:
Kod:
 if (GetMapIndex() != chLoad->GetMapIndex() || DISTANCE_APPROX(GetX() - chLoad->GetX(), GetY() - chLoad->GetY()) > 1000)
return;

ss+(2015-09-18+at+03.13.18).png



Su olmayan yerde balık tutma fix

*char.cpp

Bul:
Kod:
void CHARACTER::fishing()

Üstüne ekle:
Kod:
bool CHARACTER::IsNearWater() const
{
if (!GetSectree())
return false;


for (int x = -1; x <= 1; ++x)
{
for (int y = -1; y <= 1; ++y)
{
if (IS_SET(GetSectree()->GetAttribute(GetX() + x * 100, GetY() + y * 100), ATTR_WATER))
return true;
}
}


return false;
}

ss+(2015-09-18+at+03.21.45).png


Bul:
Kod:
 if (m_pkFishingEvent)
{
fishing_take();
return;
}

Altına ekle:
Kod:
 if (!IsNearWater())
return;

ss+(2015-09-18+at+03.22.57).png



*char.h

Bul:
Kod:
void fishing();

Üstüne ekle:
Kod:
bool IsNearWater() const;

ss+(2015-09-18+at+03.21.17).png



Anti renkli pazar

*input_main.cpp

Bul:
Kod:
 if (uiBytes < sizeof(TPacketCGMyShop) + iExtraLen)
return -1;
Üstüne ekle:
Kod:
 if (strstr(p->szSign, ("|c")) || strstr(p->szSign, ("|C"))){
LogManager::instance().HackLog("COLORFUL_SHOP", ch);
return (iExtraLen);
}

ss+(2015-09-18+at+04.14.00).png



Anti Drophack

*char_item.cpp

Bul:
Kod:
LPCHARACTER owner = funcFindOwnership.owner;
Üstüne ekle:
Kod:
 if (!owner) {
LogManager::instance().HackLog("DROPHACK", this);
return false;
}

ss+(2015-09-18+at+04.47.03).png



#Güncelleme 2

-Server taraflı-


Anti Fishbot

*fishing.cpp

Ara:
Kod:
int ret = Compute(info->fish_id, ms, &item_vnum, GetFishingLevel(ch));
Altına ekle:
Kod:
if (!ch->GetLastFishTime())
ch->SetLastFishTime(ms);
else {
if (ch->GetFishHackCount() == 3) {
ch->ResetFishHackCount();
LogManager::instance().HackLog("FISHBOT", ch);
ch->GetDesc()->DelayedDisconnect(3);
}
else {
if ((ms == ch->GetLastFishTime()) || (abs(ch->GetLastFishTime() - ms) < 70) || (abs(ms - ch->GetLastFishTime()) < 70))
ch->UpdateFishHackCount();
else
ch->ResetFishHackCount();
}
}

if (test_server)
ch->ChatPacket(CHAT_TYPE_INFO, "/HACK-TEST/ Last: %d Now: %d HackCount: %d", ch->GetLastFishTime(), ms, ch->GetFishHackCount());

ss+(2015-09-21+at+05.53.35).png



*char.cpp

Ara:
Kod:
m_dwMountTime = 0;
Üstüne ekle:
Kod:
m_iLastFishTime = 0;
m_iFishHackCount = 0;

ss+(2015-09-21+at+05.57.25).png



Ara:
Kod:
void CHARACTER::ResetChatCounter()
Üstüne ekle:
Kod:
void CHARACTER::SetLastFishTime(int time)
{
m_iLastFishTime = time;
}


int CHARACTER::GetLastFishTime()
{
return m_iLastFishTime;
}


int CHARACTER::GetFishHackCount()
{
return m_iFishHackCount;
}


void CHARACTER::UpdateFishHackCount()
{
m_iFishHackCount += 1;
}


void CHARACTER::ResetFishHackCount()
{
m_iFishHackCount = 0;
}

ss+(2015-09-21+at+05.58.56).png



*char.h

Ara:
Kod:
DWORD GetSkipComboAttackByTime() const;
Altına ekle:
Kod:
int GetFishHackCount();
void UpdateFishHackCount();
void ResetFishHackCount();
void SetLastFishTime(int time);
int GetLastFishTime();

ss+(2015-09-21+at+05.59.53).png



Ara:
Kod:
DWORD m_dwSkipComboAttackByTime;
Altına ekle:
Kod:
int m_iFishHackCount;
int m_iLastFishTime;

Anti Guild Maker(düşük seviyede)

*input_main.cpp


Ara:
Kod:
if (ch->GetGold() < 200000)
return;
Altına ekle:
Kod:
if (ch->GetLevel() < 40)
{
LogManager::instance().HackLog("GUILDMAKER", ch);
ch->GetDesc()->DelayedDisconnect(3);
return;
}

ss+(2015-09-21+at+06.09.16).png



Anti Teleport Hack'i aktif etme
Uyarı:
Bu sistem maymun zindanı gibi yerlerde ışınlanırken oyundan düşürüyor.
*input_main.cpp

Bul:
Kod:
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;
Değiştir:
Kod:
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;
ss+(2015-09-21+at+06.14.32).png



-Client taraflı-


Anti py injection

*EterPack/EterPackManager.cpp
Ara:
Kod:
bool CEterPackManager::GetFromFile(CMappedFile & rMappedFile, const char * c_szFileName, LPCVOID * pData)
Bul:
Kod:
#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
Değiştir:
Kod:
const char *pcExt = strchr(c_szFileName, '.');
if (_strnicmp(pcExt, ".py", 3) == 0){
PostQuitMessage(0);
}


Anti Anti Stun & Anti Sanal GM Efekti

*PythonCharacterManagerModule.cpp

Silin:
Kod:
{ "SetAffect", chrmgrSetAffect, METH_VARARGS },


Anti Attackspeed & Anti Movespeed

*PythonCharacterModule.cpp


Aşağıdaki satırları silin:
Kod:
{ "SetMoveSpeed", chrSetMoveSpeed, METH_VARARGS },
{ "SetAttackSpeed", chrSetAttackSpeed, METH_VARARGS },


Bu konu altındaki başlıklar genel olarak kullanılan hileleri engellemek için yeterlidir
Daha iyi bir koruma için ve bot, hile ve macro scriptlerini engellemek için modül yada fonksiyon isimlerini değiştirmenizide öneririm
Aşağıda net modülünün adını değiştirmek için basit bir anlatım var




*PythonNetworkStreamModule.cpp


Ara:
Kod:
PyObject* poModule = Py_InitModule("net", s_methods);
Modül adını kendinize göre değiştirin, örnek olarak:
Kod:
PyObject* poModule = Py_InitModule("mt2net", s_methods);

Şimdi, Tüm python dosyalarını Notepad++ ile açın


CTRL+H ye basın ve Gelen ekrandan Değiştir butonuna basın


"Aranan" kısmına bunu yazın: import net


"Değiştir" kısmına bunu yazın: import mt2net as net
 

Dosya Eklentileri

  • ss+(2015-09-10+at+02.19.03).jpg
    ss+(2015-09-10+at+02.19.03).jpg
    332,5 KB · Gösterim: 675
En son bir moderatör tarafından düzenlenmiş:
Çok iyi bir konu olmuş. Yalnız anti safezone filan başlık koymuşsunuz. Onun altında hilenin detaylarını paylaşırsanız iyi olur. En azından kişi neyi fixlediğini daha iyi bilsin. Konunun sabitlenmesini bende onaylıyorum. :)
 
Ghost mode için uygulanan şeyde öldüğünüzde sürekli sizi oyundan atıyor.
Anti teleport hackta aynı şekilde. Maymun zindanında geçitlerden geçerken çok atıyor.
@LDrago lütfen düzgün çalışmayan önlemlerin başına uyarı ekleyin. Aksi halde bu konuyu kapatmak zorunda kalacağım.
 
Son düzenleme:
Anti Waithack:
"battle.cpp" açın ve include listesine aşağıdaki kodu ekleyin
Kod:
#include "db.h"

Örnek;


725 eklentisini görüntüle

Şimdi bu kodu aratın;

Kod:
bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)

ve altındaki fonksiyonda dahil olmak üzere aşağıda verdiğim kod bloğu ile değiştirin

Kod:
#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;
}

Yapıştırdığınızda 3 define da aktif olur kapatmak için başına "//"(comment tag) koymanız yeterlidir.


Kod:
//#define ENABLE_BAN_WAITHACK

gibi

Oluşacak görüntü

ilk hali:

726 eklentisini görüntüle

727 eklentisini görüntüle

Yeni Hali;

728 eklentisini görüntüle
729 eklentisini görüntüle


Sonuç:



Anti Safezone:
*char_battle.cpp

Bulun:
Kod:
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;
Altına ekleyin:
Kod:
    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);
            }
        }
    }

730 eklentisini görüntüle
731 eklentisini görüntüle

Anti Ghostmode:
Uyarı!:
Bu önlem yapılan testlerde oyuncu öldüğünde oyundan atabilir.
*input_main.cpp

Bulun:
Kod:
if (!test_server) //2012.05.15 ±è¿ë¿í : Å×¼·¿¡¼* (¹«Àû»óÅ·Î) ´Ù¼ö ¸ó½ºÅÍ »ó´ë·Î ´Ù¿îµÇ¸é¼* °ø°İ½Ã ÄŞº¸ÇÙÀ¸·Î Á×´Â ¹®Á¦°¡ ÀÖ¾ú´Ù.
Altına ekleyin:
Kod:
 if (ch->IsPC() && ch->IsDead()) {
if (ch->GetDesc()) {
LogManager::instance().HackLog("GHOSTMODE", ch);
ch->GetDesc()->DelayedDisconnect(3);
}
}

732 eklentisini görüntüle

734 eklentisini görüntüle

Anti Wallhack:
*input_main.cpp


Bulun:
Kod:
const float fDist = DISTANCE_SQRT((ch->GetX() - pinfo->lX) / 100, (ch->GetY() - pinfo->lY) / 100);
Üstüne ekleyin:
Kod:
 PIXEL_POSITION pos = ch->GetXYZ();
if (!SECTREE_MANAGER::instance().GetMovablePosition(c h->GetMapIndex(), pos.x, pos.y, pos)) {
if (ch->GetDesc()) {
LogManager::instance().HackLog("WALLHACK", ch);
ch->GetDesc()->DelayedDisconnect(3);
}
}

735 eklentisini görüntüle
740 eklentisini görüntüle

Anti Long name generator:
*input_login.cpp


Bulun:
Kod:
if (true == g_BlockCharCreation)
{
d->Packet(&packFailure, sizeof(packFailure));
return;
}
Altına ekleyin:
Kod:
if (strlen(pinfo->name) > 12){
d->Packet(&packFailure, sizeof(packFailure));
return;
}
737 eklentisini görüntüle
741 eklentisini görüntüle

#Güncelleme 1

-Client taraflı-

PythonPlayerModule.cpp


Kod:
{ "SetItemData", playerSetItemData, METH_VARARGS },
*Sahte item oluşturma fonkiyonu


PythonItemModule.cpp


Kod:
{ "CreateItem", itemCreateItem, METH_VARARGS },
*Sahte item oluşturma fonkiyonu


PythonCharacterModule.cpp


Kod:
{ "IsGameMaster", chrIsGameMaster, METH_VARARGS },
*Gm dedektör fonksiyonu


Bu fonksiyonlar kullanılmıyor, bu satırları silin.

-Server taraflı-

Anti Maden botu


*char.cpp

Ara:
Kod:
 if (mining::GetRawOreFromLoad(chLoad->GetRaceNum()) == 0)
return;
Üstüne ekle:
Kod:
 if (GetMapIndex() != chLoad->GetMapIndex() || DISTANCE_APPROX(GetX() - chLoad->GetX(), GetY() - chLoad->GetY()) > 1000)
return;

742 eklentisini görüntüle


Su olmayan yerde balık tutma fix

*char.cpp

Bul:
Kod:
void CHARACTER::fishing()

Üstüne ekle:
Kod:
bool CHARACTER::IsNearWater() const
{
if (!GetSectree())
return false;


for (int x = -1; x <= 1; ++x)
{
for (int y = -1; y <= 1; ++y)
{
if (IS_SET(GetSectree()->GetAttribute(GetX() + x * 100, GetY() + y * 100), ATTR_WATER))
return true;
}
}


return false;
}

743 eklentisini görüntüle

Bul:
Kod:
 if (m_pkFishingEvent)
{
fishing_take();
return;
}

Altına ekle:
Kod:
 if (!IsNearWater())
return;

744 eklentisini görüntüle


*char.h

Bul:
Kod:
void fishing();

Üstüne ekle:
Kod:
bool IsNearWater() const;

745 eklentisini görüntüle


Anti renkli pazar

*input_main.cpp

Bul:
Kod:
 if (uiBytes < sizeof(TPacketCGMyShop) + iExtraLen)
return -1;
Üstüne ekle:
Kod:
 if (strstr(p->szSign, ("|c")) || strstr(p->szSign, ("|C"))){
LogManager::instance().HackLog("COLORFUL_SHOP", ch);
return (iExtraLen);
}

746 eklentisini görüntüle


Anti Drophack

*char_item.cpp

Bul:
Kod:
LPCHARACTER owner = funcFindOwnership.owner;
Üstüne ekle:
Kod:
 if (!owner) {
LogManager::instance().HackLog("DROPHACK", this);
return false;
}

747 eklentisini görüntüle


#Güncelleme 2

-Server taraflı-


Anti Fishbot

*fishing.cpp

Ara:
Kod:
int ret = Compute(info->fish_id, ms, &item_vnum, GetFishingLevel(ch));
Altına ekle:
Kod:
if (!ch->GetLastFishTime())
ch->SetLastFishTime(ms);
else {
if (ch->GetFishHackCount() == 3) {
ch->ResetFishHackCount();
LogManager::instance().HackLog("FISHBOT", ch);
ch->GetDesc()->DelayedDisconnect(3);
}
else {
if ((ms == ch->GetLastFishTime()) || (abs(ch->GetLastFishTime() - ms) < 70) || (abs(ms - ch->GetLastFishTime()) < 70))
ch->UpdateFishHackCount();
else
ch->ResetFishHackCount();
}
}

if (test_server)
ch->ChatPacket(CHAT_TYPE_INFO, "/HACK-TEST/ Last: %d Now: %d HackCount: %d", ch->GetLastFishTime(), ms, ch->GetFishHackCount());

748 eklentisini görüntüle


*char.cpp

Ara:
Kod:
m_dwMountTime = 0;
Üstüne ekle:
Kod:
m_iLastFishTime = 0;
m_iFishHackCount = 0;

749 eklentisini görüntüle


Ara:
Kod:
void CHARACTER::ResetChatCounter()
Üstüne ekle:
Kod:
void CHARACTER::SetLastFishTime(int time)
{
m_iLastFishTime = time;
}


int CHARACTER::GetLastFishTime()
{
return m_iLastFishTime;
}


int CHARACTER::GetFishHackCount()
{
return m_iFishHackCount;
}


void CHARACTER::UpdateFishHackCount()
{
m_iFishHackCount += 1;
}


void CHARACTER::ResetFishHackCount()
{
m_iFishHackCount = 0;
}

750 eklentisini görüntüle


*char.h

Ara:
Kod:
DWORD GetSkipComboAttackByTime() const;
Altına ekle:
Kod:
int GetFishHackCount();
void UpdateFishHackCount();
void ResetFishHackCount();
void SetLastFishTime(int time);
int GetLastFishTime();

751 eklentisini görüntüle


Ara:
Kod:
DWORD m_dwSkipComboAttackByTime;
Altına ekle:
Kod:
int m_iFishHackCount;
int m_iLastFishTime;

Anti Guild Maker(düşük seviyede)

*input_main.cpp


Ara:
Kod:
if (ch->GetGold() < 200000)
return;
Altına ekle:
Kod:
if (ch->GetLevel() < 40)
{
LogManager::instance().HackLog("GUILDMAKER", ch);
ch->GetDesc()->DelayedDisconnect(3);
return;
}

752 eklentisini görüntüle


Anti Teleport Hack'i aktif etme
Uyarı:
Bu sistem maymun zindanı gibi yerlerde ışınlanırken oyundan düşürüyor.
*input_main.cpp

Bul:
Kod:
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;
Değiştir:
Kod:
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;
753 eklentisini görüntüle


-Client taraflı-


Anti py injection

*EterPack/EterPackManager.cpp
Ara:
Kod:
bool CEterPackManager::GetFromFile(CMappedFile & rMappedFile, const char * c_szFileName, LPCVOID * pData)
Bul:
Kod:
#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
Değiştir:
Kod:
const char *pcExt = strchr(c_szFileName, '.');
if (_strnicmp(pcExt, ".py", 3) == 0){
PostQuitMessage(0);
}


Anti Anti Stun & Anti Sanal GM Efekti

*PythonCharacterManagerModule.cpp

Silin:
Kod:
{ "SetAffect", chrmgrSetAffect, METH_VARARGS },


Anti Attackspeed & Anti Movespeed

*PythonCharacterModule.cpp


Aşağıdaki satırları silin:
Kod:
{ "SetMoveSpeed", chrSetMoveSpeed, METH_VARARGS },
{ "SetAttackSpeed", chrSetAttackSpeed, METH_VARARGS },


Bu konu altındaki başlıklar genel olarak kullanılan hileleri engellemek için yeterlidir
Daha iyi bir koruma için ve bot, hile ve macro scriptlerini engellemek için modül yada fonksiyon isimlerini değiştirmenizide öneririm
Aşağıda net modülünün adını değiştirmek için basit bir anlatım var




*PythonNetworkStreamModule.cpp


Ara:
Kod:
PyObject* poModule = Py_InitModule("net", s_methods);
Modül adını kendinize göre değiştirin, örnek olarak:
Kod:
PyObject* poModule = Py_InitModule("mt2net", s_methods);

Şimdi, Tüm python dosyalarını Notepad++ ile açın


CTRL+H ye basın ve Gelen ekrandan Değiştir butonuna basın


"Aranan" kısmına bunu yazın: import net


"Değiştir" kısmına bunu yazın: import mt2net as net


Şu son kısımdaki
Şimdi, Tüm python dosyalarını Notepad++ ile açın


CTRL+H ye basın ve Gelen ekrandan Değiştir butonuna basın


"Aranan" kısmına bunu yazın: import net


"Değiştir" kısmına bunu yazın: import mt2net as net
olayını anlamadım hangi python kodları bunlar nerdekiler değişecek yani?
 
Geri
Üst