ShadowFon 1
ShadowFon
noisiv 1
noisiv
Manwe Work 1
Manwe Work
romegames 1
romegames
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Bvural41 1
Bvural41
NovaLst 1
NovaLst
bikral 1
bikral
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

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 978
5.00 yıldız(lar) 1 Değerlendirme Değerlendirenler

MaviAy44

Emre Kırıcı
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye
Fahri Üye
TM Üye
Katılım
16 Tem 2019
Konular
715
Mesajlar
3,551
Çözüm
47
Online süresi
6mo 20d
Reaksiyon Skoru
2,110
Altın Konu
34
Başarım Puanı
309
MmoLira
19,559
DevLira
122
Ticaret - 100%
7   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ 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.
 
Eline sağlık
 
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