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

Whistle

Luntar
Kurucu
Kurumsal Üye
Geliştirici
Yardımsever Üye
Mesaj
11.824
Çözümler
560
Beğeni
12.889
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++:
Genişlet Daralt Kopyala
    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++:
Genişlet Daralt Kopyala
#define    NEEDED_COMMAND_ARGUMENT "#!whistle*/5556#c2!!"

Daha sonra Client/UserInterface/UserInterface.rc dosyasını açın ve aratın;
C++:
Genişlet Daralt Kopyala
    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:
Genişlet Daralt Kopyala
<control type="button" id="START" image="btn_start_1" x="818" y="612" enable_on_complete="true" />


Değiştiriniz;
XML:
Genişlet Daralt Kopyala
<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++:
Genişlet Daralt Kopyala
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{

Altına ekleyin;
C++:
Genişlet Daralt Kopyala
#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:
Genişlet Daralt Kopyala
<control type="button" id="START" image="btn_start_1" x="818" y="612" enable_on_complete="true" />


Değiştiriniz;
XML:
Genişlet Daralt Kopyala
<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?
 
Üst