Oto Pack Dışından Oyuna Girişi Engelleme

Whistle

Ruhsuz Filozof
Kurucu
Kurumsal Üye
Geliştirici
Yardımsever Üye
Mesaj
11.540
Çözümler
549
Beğeni
12.197
Puan
5.915
Ticaret Puanı
2
Oyunumuzu sürekli güncel tutmak ve hilelere karşı bir nebze olsun savunma kalkanı oluşturmak için oto pack kullanırız. Oto pack sayesinde oyunculara son güncellemeleri zoraki olarak gönderebilirsiniz. Otopack yapımıyla ilgili daha detaylı bilgiyi bu sayfadan edinebilirsiniz.

Tabii ki sadece oto pack yapmakla iş bitmiyor. Sunucu güvenliği için uygulanması gereken bir sürü adımlarda bulunuyor. Daha önce oluşturduğum şu Metin2 PvP Sunucu Güvenliği İçin Config Dosyasına Eklememiz Gerekenler rehber konusuna bakabilirsiniz.

Ne yazık ki oto pack devredışı bırakılarak normal istemciden oyuna giriş yapılabiliyor. Bu konumuzda ise bunu engellemeyi göstereceğim. Daha önceden çok soran kişi vardı. En sonunda da bir şirket sahibinden bu meseleyle ilgili bana soru geldiği için bu konuyu açmaya karar verdim. 2016 senesinde Casro2 serveri için kullandığım bir yöntemdi ve işe yaramıştı.

Fazla konuyu uzatmadan anlatıma başlayalım. :)

1. Anlatım: Novaline Client kullananlar için.
Novaline client dosyasında zaten oto pack dışında girişi engellemek için eklenmiş bir kod var.
Client/UserInterface/UserInterface.cpp dosyasını açın ve aratın;
C++:
    if (strstr(lpCmdLine, NEEDED_COMMAND_ARGUMENT) == 0) {
        MessageBox(NULL, ApplicationStringTable_GetStringz(IDS_ERR_MUST_LAUNCH_FROM_PATCHER, "ERR_MUST_LAUNCH_FROM_PATCHER"), ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP);
            goto Clean;
    }

Fakat bu kod varsayılan olarak devredışı olacaktır. Aktif etmek için NEEDED_COMMAND_ARGUMENT makrosunu locale_inc.h dosyasına ekliyoruz.
Örnek;
C++:
#define    NEEDED_COMMAND_ARGUMENT "#!whistle*/5556#c2!!"

Daha sonra Client/UserInterface/UserInterface.rc dosyasını açın ve aratın;
C++:
    IDS_ERR_MUST_LAUNCH_FROM_PATCHER "Please run patcher."

Şu şekilde değiştiriniz
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Daha sonra client soureyi build ediniz.

Şimdi sıra geldi belirlediğimiz şifreyi oto packa tanımlamaya. Eğer oto pack düzenlemelerini bilmiyorsanız buraya bakabilirsiniz.
skin.xml dosyasını açın ve aratın;
XML:
<control type="button" id="START" image="btn_start_1" x="818" y="612" enable_on_complete="true" />


Değiştiriniz;
XML:
<control type="button" id="START" image="btn_start_1" x="818" y="612" exec_path="casro2client.bin" exec_args="#!whistle*/5556#c2!!" enable_on_complete="true" />
Not: path ve args kısmını kendinize göre düzenleyiniz.

Daha sonra oto packı tekrardan paketleyiniz.


2. Anlatım: Diğer
İlk önce Client/UserInteface/UserInterface.cpp dosyasını açın ve aratın;
C++:
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{

Altına ekleyin;
C++:
#ifndef _DEBUG
    // oto packsiz giris engeli
    if (strstr(lpCmdLine, "#!whistle*/5556#c2!!") == 0)
    {
        MessageBox(NULL, "Casro2 Patcherdan giris yapiniz.", ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP);
        return 0;
    }
#endif
(debug modu hariç diğerleri ile build ettiğinizde oto pack dışında girişi engeller.)

Şimdi sıra geldi belirlediğimiz şifreyi oto packa tanımlamaya. Eğer oto pack düzenlemelerini bilmiyorsanız buraya bakabilirsiniz.
skin.xml dosyasını açın ve aratın;
XML:
<control type="button" id="START" image="btn_start_1" x="818" y="612" enable_on_complete="true" />


Değiştiriniz;
XML:
<control type="button" id="START" image="btn_start_1" x="818" y="612" exec_path="casro2client.bin" exec_args="#!whistle*/5556#c2!!" enable_on_complete="true" />
Not: path ve args kısmını kendinize göre düzenleyiniz.

Daha sonra oto packı tekrardan paketleyiniz.

İşini iyi bilen kişiler bu engeli aşabilir. Yine de büyük oranda koruma sağlayacaktır.

Kanıt;


oto packsiz giris engeli kanit.jpg


Normalde yazılı rehberler paylaşmak istemiyorum. Çünkü bazı insanlar kendisi yapmış gibi içerikleri kopyalıyor. Fakat azınlığın yaptığı bir hata yüzünden bu camiayı bu bilgiden mahrum bırakmanın doğru olmadığını düşünüyorum.

Bu içerik @Whistle tarafından MMO Tutkunları için hazırlanmıştır. Kaynağı gösterildiği sürece başka platformlarda paylaşılabilir.
 
Son düzenleme:
Python taraflı olanda sorunlar vardı ignore'lanabiliyordu bu iyi olmuş teşekkürler
 
Paylaşım için teşekkürler. Herkesin işine yarayacağı bir paylaşım olarak düşündüğüm için sabite aldım.
 
Paylaşım için teşekkürler , direk otopack çalıştırma olabilir mi?
yani bin dosyasını exeye çevirdiler exeye tıklayınca direk otopacki çalıştırsın yoksada indirme linki açsın gibi...
 
Sevgili @Whistle novaline clientte dediklerini aynen uygulayıp exe girişini engelledim. Otopacktanda skin.xml editleyip kapattıp ama otopacktanda oyuna girmiyor? Sence nerde hata yapıyorum?
 
Sevgili @Whistle novaline clientte dediklerini aynen uygulayıp exe girişini engelledim. Otopacktanda skin.xml editleyip kapattıp ama otopacktanda oyuna girmiyor? Sence nerde hata yapıyorum?
Konuda anlatılanları tekrardan uygulayın. Oyuna girmiyor derken hiç mi açılmıyor yoksa hata mı veriyor
 
Konuda anlatılanları tekrardan uygulayın. Oyuna girmiyor derken hiç mi açılmıyor yoksa hata mı veriyor
3 Defa uyguladım ancak sonuç aynı. Exeden giriş yaparken verilen hatayı veriyor. Metin2 yi başlatmak için yamayı kullan şeklinde. Ben şifrede başka özel karakterlerde kullandım onunla alakası olabilir mi ?
 
Olabilir, belki desteklenmeyen bir şey vardır. Konudaki ile aynısını kullanıp deneyebilir misin?
 
Geri
Üst