Metin2 Server Source HackShield Kaldırma

Whistle

Ruhsuz :/
Kurucu
Geliştirici
Yardımsever Üye
Mesaj
12.062
Çözümler
571
Beğeni
14.469
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
 
merhaba kaldırdım fakat böyle bir hata veriyor bunuda mı kaldırmalıyım ?
Screenshot_1.webp
 
Bu konu ile alakası yok onun ancak onu da kaldırabilirsiniz.

Şu konuya göz atabilirsiniz;

 
Bu konu ile alakası yok onun ancak onu da kaldırabilirsiniz.

Şu konuya göz atabilirsiniz;

teşekkür ederim
 
Geri
Üst