R 1
Roksam
[DEV]AB 1
[DEV]AB
Sevdamsın 1
Sevdamsın
farkmt2official 1
farkmt2official
emirhanHCL 1
emirhanHCL
Scarlet 1
Scarlet
Best Studio 1
Best Studio
mannaxxx 1
mannaxxx
Agora Metin2 1
Agora Metin2
Hikaye Ekle

MaviAyGames | Metin2 Client Güvenliği

  • Konuyu başlatan Konuyu başlatan MaviAy44
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 10
  • Görüntüleme Görüntüleme 988
5.00 yıldız(lar) 1 Değerlendirme Değerlendirenler

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

UserInterface/PythonApplication.cpp
İlgili kısmı bulun ve altına şu kodu ekleyin:

C++:
#include <fstream>
#include <ctime>

bool IsClientNameValid()
{
    char szAppPath[MAX_PATH] = "";
    std::string strAppName;

    if (GetModuleFileNameA(NULL, szAppPath, MAX_PATH) == 0)
        return false;

    strAppName = szAppPath;
    size_t pos = strAppName.find_last_of("\\/");
    if (pos != std::string::npos)
        strAppName = strAppName.substr(pos + 1);

    std::transform(strAppName.begin(), strAppName.end(), strAppName.begin(), ::tolower);

    return strAppName == "metin2client.bin";
}

void LogInvalidClientStart()
{
    std::ofstream logFile("client_protect.log", std::ios::app);
    if (!logFile)
        return;

    std::time_t t = std::time(nullptr);
    char timeBuf[64];
    std::strftime(timeBuf, sizeof(timeBuf), "%Y-%m-%d %H:%M:%S", std::localtime(&t));

    logFile << "[" << timeBuf << "] UYARI: Client hatalı isimle çalıştırıldı.\n";
}

Daha sonra CMSWindow::Create(...) altına şu satırları ekleyin:
C++:
if (!IsClientNameValid()) {
    LogInvalidClientStart();
    SET_EXCEPTION(USE_PATCHER);
    return false;
}

root/prototype.py
Arat:
C++:
elif "USE_PATCHER" == msg:
    dbg.LogBox("Oyun dosyası hatalı!\r\nLütfen Patcher.exe'yi çalıştırarak oyunu başlatın.")

Değiştir:
C++:
elif "USE_PATCHER" == msg:
    dbg.LogBox("Client yanlış isimle çalıştırıldı!\r\nLütfen sadece 'Patcher.exe' aracılığıyla oyunu başlatın.\n\n"
               "Bu güvenlik önlemi, oyun bütünlüğünü korumak için uygulanmıştır.\n"
               "Güncelleme yapmayı unutmayın.")

Patch dosyasını indirirken patcher’da doğrulama yapın:
C++:
// patcher.c
ShellExecute(NULL, "open", "metin2client.bin", NULL, NULL, SW_SHOW);

Aksi takdirde "USE_PATCHER" hatası alınır.
 
Paylaşım için teşekkürler, kullanacak arkadaşlar için hata mesajlarında string kullanmak biraz sakıncalı sadece çünkü x86dbg gibi bir programla binaryde stringler aratıldığında direk çıkacaktır, runtime da stringleri oluşturabilir, char array kullanabilir yada sunucudan çekebilirsiniz :)
 
Paylaşım için teşekkürler, kullanacak arkadaşlar için hata mesajlarında string kullanmak biraz sakıncalı sadece çünkü x86dbg gibi bir programla binaryde stringler aratıldığında direk çıkacaktır, runtime da stringleri oluşturabilir, char array kullanabilir yada sunucudan çekebilirsiniz :)
böyle ne dersin?

void ShowClientNameError()
{
const char msg[] = {
'C', 'l', 'i', 'e', 'n', 't', ' ',
'y', 'a', 'n', 'l', 'ı', 'ş', ' ',
'i', 's', 'i', 'm', 'l', 'e', ' ',
'ç', 'a', 'l', 'ı', 'ş', 't', 'ı', 'r', 'ı', 'l', 'd', 'ı', '!', '\0'
};

dbg.LogBox(msg);
}
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst