Metin2 Server Source HackShield Kaldırma

Whistle

Ruhsuz :/
Kurucu
Geliştirici
Yardımsever Üye
Mesaj
11.943
Çözümler
567
Beğeni
13.653
Puan
5.915
Ticaret Puanı
2
Merhaba arkadaşlar,
Bilmeyenler varsa Metin2 Sıfırdan Altyapı Server Files Hazırlama Rehberi hazırlıyorum. Bu rehberin bir parçası olan bu konumuzda HackShield'i kaldırmayı anlatacağım.

hackshield nedir?​

Oyuncuların şüpheli aktivitelerini inceleyip bunu rapora döken bir eklentidir. Hileleri tespit etmek amacı ile kullanılıyor.

Neden kaldırıyoruz?​

Çünkü bu eklentiyi kullanamıyoruz. Bu yüzden durmasının bir amacı yok...


Server Source Kaldırılacaklar​

Kaldırmak için sırayla anlatacaklarımı uygulayınız.
Srcs/Server altındaki libhachshield klasörünü tamamen siliniz.

Srcs/Server/game/src/Makefile dosyasını açın ve şunları silin;
Makefile:
Genişlet Daralt Kopyala
INCDIR += -I../../libhackshield/include
LIBDIR += -L../../libhackshield/lib
LIBS += -lanticpxsvr


Aynı dosyada CPPFILE karşısında şunu aratın silin;
Makefile:
Genişlet Daralt Kopyala
HackShield.cpp HackShield_Impl.cpp char_hackshield.cpp

game/src içerisindeki şu dosyalarını silin.
  • HackShield.h
  • HackShield.cpp
  • HackShield_Impl.h
  • HackShield_Impl.cpp
  • char_hackshield.cpp

game/src/main.cpp dosyasını açın ve sırasıyla verdiğim şu kodları aratıp kaldırınız;
C++:
Genişlet Daralt Kopyala
#include "HackShield.h"

C++:
Genişlet Daralt Kopyala
    CHackShieldManager    HSManager;

C++:
Genişlet Daralt Kopyala
        //hackshield
        if (isHackShieldEnable)
        {
            if (!HSManager.Initialize())
            {
                fprintf(stderr, "Failed To Initialize HS");
                CleanUpForEarlyExit();
                return 0;
            }
        }

C++:
Genişlet Daralt Kopyala
    if (!g_bAuthServer)
    {
        if (isHackShieldEnable)
        {
            sys_log(0, "<shutdown> Releasing HackShield manager...");
            HSManager.Release();
        }
    }


game/src/char.h dosyasını açın ve şunları kaldırınız;
C++:
Genişlet Daralt Kopyala
    public:
        void StartHackShieldCheckCycle(int seconds);
        void StopHackShieldCheckCycle();

        bool GetHackShieldCheckMode() const { return m_HackShieldCheckMode; }
        void SetHackShieldCheckMode(bool m) { m_HackShieldCheckMode = m; }

        LPEVENT m_HackShieldCheckEvent;

    private:
        bool    m_HackShieldCheckMode;

game/src/char.cpp dosyasını açın ve şunları kaldırın;
C++:
Genişlet Daralt Kopyala
#include "HackShield.h"

C++:
Genişlet Daralt Kopyala
    m_HackShieldCheckEvent = NULL;
    m_HackShieldCheckMode = false;

C++:
Genişlet Daralt Kopyala
    if( IsPC() )
    {
        if (isHackShieldEnable)
        {
            CHackShieldManager::instance().DeleteClientHandle(GetPlayerID());
        }
    }

C++:
Genişlet Daralt Kopyala
    StopHackShieldCheckCycle();

game/src/config.h dosyasını açın ve şunları kaldırın;
C++:
Genişlet Daralt Kopyala
extern bool isHackShieldEnable;
extern int  HackShield_FirstCheckWaitTime;
extern int  HackShield_CheckCycleTime;

game/src/config.cpp dosyasını açın ve şunları kaldırın;
C++:
Genişlet Daralt Kopyala
bool        isHackShieldEnable = false;
int            HackShield_FirstCheckWaitTime = passes_per_sec * 30;
int            HackShield_CheckCycleTime = passes_per_sec * 180;

C++:
Genişlet Daralt Kopyala
        TOKEN("hackshield_enable")
        {
            int flag = 0;

            str_to_number(flag, value_string);

            //if (1 == flag && LC_IsEurope() )
            if (1 == flag)
            {
                isHackShieldEnable = true;
            }
        }

        TOKEN("hackshield_first_check_time")
        {
            int secs = 30;
            str_to_number(secs, value_string);

            HackShield_FirstCheckWaitTime = passes_per_sec * secs;
        }

        TOKEN("hackshield_check_cycle_time")
        {
            int secs = 180;
            str_to_number(secs, value_string);

            HackShield_CheckCycleTime = passes_per_sec * secs;
        }



game/src/desc.cpp dosyasını açın ve şunları kaldırınız;
C++:
Genişlet Daralt Kopyala
#include "HackShield.h"



game/src/input.cpp dosyasını açın ve şunları kaldırınız;
C++:
Genişlet Daralt Kopyala
#include "HackShield_Impl.h"

game/src/input_db.cpp dosyasını açın ve şunları kaldırınız;
C++:
Genişlet Daralt Kopyala
#include "HackShield.h"

C++:
Genişlet Daralt Kopyala
    if (isHackShieldEnable)
    {
        if (! CHackShieldManager::instance().CreateClientHandle(ch->GetPlayerID()))
        {
            d->SetPhase(PHASE_CLOSE);
        }
        else
        {
            ch->StartHackShieldCheckCycle( HackShield_CheckCycleTime );
        }
    }


Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.



game/src/input_login.cpp dosyasını açın ve şunları kaldırınız;
C++:
Genişlet Daralt Kopyala
#include "HackShield.h"

Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.



game/src/input_main.cpp dosyasını açın ve şunları kaldırınız;
C++:
Genişlet Daralt Kopyala
#include "HackShield.h"

C++:
Genişlet Daralt Kopyala
        case HEADER_CG_HS_ACK:
            if (isHackShieldEnable)
            {
                CHackShieldManager::instance().VerifyAck(d->GetCharacter(), c_pData);
            }
            break;


game/src/log.h dosyasını açın ve şunları kaldırınız;
C++:
Genişlet Daralt Kopyala
        void        HackShieldLog(unsigned long ErrorCode, LPCHARACTER ch);

game/src/log.cpp dosyasını açın ve şunları kaldırınız;
C++:
Genişlet Daralt Kopyala
void LogManager::HackShieldLog(unsigned long ErrorCode, LPCHARACTER ch)
{
    struct in_addr st_addr;

#ifndef __WIN32__
    if (0 == inet_aton(ch->GetDesc()->GetHostName(), &st_addr))
#else
    unsigned long in_address;
    in_address = inet_addr(ch->GetDesc()->GetHostName());
    st_addr.s_addr = in_address;
    if (INADDR_NONE == in_address)
#endif
    {
        Query( "INSERT INTO hackshield_log(time, account_id, login, pid, name, reason, ip) "
                "VALUES(NOW(), %u, '%s', %u, '%s', %u, 0)",
                ch->GetDesc()->GetAccountTable().id, ch->GetDesc()->GetAccountTable().login,
                ch->GetPlayerID(), ch->GetName(),
                ErrorCode);
    }
    else
    {
        Query( "INSERT INTO hackshield_log(time, account_id, login, pid, name, reason, ip) "
                "VALUES(NOW(), %u, '%s', %u, '%s', %u, inet_aton('%s'))",
                ch->GetDesc()->GetAccountTable().id, ch->GetDesc()->GetAccountTable().login,
                ch->GetPlayerID(), ch->GetName(),
                ErrorCode,
                ch->GetDesc()->GetHostName());
    }
}


game/src/packet_info.cpp dosyasını açın şunları kaldırın;
C++:
Genişlet Daralt Kopyala
#include "HackShield_Impl.h"

C++:
Genişlet Daralt Kopyala
    Set(HEADER_CG_HS_ACK, sizeof(TPacketGCHSCheck), "HackShieldResponse", false);

game/src/packet.h dosyasını açın ve şunları kaldırın;
C++:
Genişlet Daralt Kopyala
    HEADER_CG_HS_ACK                = 203,
C++:
Genişlet Daralt Kopyala
    HEADER_GC_HS_REQUEST                    = 204,


Veritabanında Kaldırılacaklar​

Daha sonra log.hackshield_log tablosunu kaldırınız.


Client source kaldırılacaklar için şu konuya bakınız: Metin2 Client Source HackShield Kaldırma
 
Son düzenleme:
64bit ile derlemeye çalışırken libanticpxsvr.a 32bit olduğu için hata vermişti. Bunun açık kaynak kodlarını elde edemeyeceğimizden dolayı ve zaten serverlerimizde kullanamayacağımız için kaldırmak en mantıklı seçenek.

libhackshield.jpg
 
Geri
Üst