Disconnect açığı düzeltmesi

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 35

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Son zamanlarda kimliği belirsiz kişiler tarafından büyük, küçük oyunlara yapılan hesap adı gözüken oyuncuları oyundan atma açığının fixini paylaşıyorum.
Hatanın yapılış şeklini bu fixi uygulamayacak arkadaşların zarar görmemesi için anlatmıyorum.
Açığı bulup benimle düzeltmem için paylaşan arkadaşa da teşekkürlerimi iletiyorum.

DB/ClientManagerLogin.cpp bulunur.

Kod:
if (FindLogonAccount(r.login)) {     sys_log(0, "LOGIN_BY_KEY already login %s %lu", r.login, p->dwLoginKey);     TPacketDGLoginAlready ptog;     strlcpy(ptog.szLogin, szLogin, sizeof(ptog.szLogin));     pkPeer->EncodeHeader(HEADER_DG_LOGIN_ALREADY, dwHandle, sizeof(TPacketDGLoginAlready));     pkPeer->Encode(&ptog, sizeof(TPacketDGLoginAlready));     return; }

Bu kod
Kod:
strlcpy(ptog.szLogin, szLogin, sizeof(ptog.szLogin));
Bununla değiştirilir
Kod:
strlcpy(ptog.szLogin, r.login, sizeof(ptog.szLogin));

Disconnect Açığı Düzeltmesi

Metin2 özel sunucularında güvenlik açıklarının kapatılması, oyuncu deneyimini ve sunucu kararlılığını doğrudan etkiler. Bu bağlamda Disconnect Açığı, oyuncuların kasıtlı olarak sunucudan koparak avantaj elde etmelerine olanak tanıyan ciddi bir güvenlik zafiyetidir. Bu yazıda, Disconnect Açığı nedir, nasıl çalışır ve C++ tabanlı Metin2 sunucularda bu açığın nasıl düzeltileceği detaylıca ele alınacaktır.

Disconnect Açığı Nedir?

Disconnect Açığı, oyuncunun belirli bir işlem sırasında (örneğin PvP dövüşü, item transferi, seviye atlama gibi) kasıtlı olarak internet bağlantısını keserek sistemin bu eylemi tamamlayamamasını sağlayan bir yöntemdir. Bu durum, oyuncunun zarar görmeden veya istatistiklerinde değişiklik olmadan bazı işlemlerden kaçmasına neden olabilir.

Örneğin bir oyuncu PvP sırasında canı düşmeye başlayınca kasıtlı olarak bağlantısını koparabilir. Sunucu, oyuncunun bağlantısı kesildiğini fark edene kadar onun PvP sürecini tamamlayamaz ve oyuncu bu sayede ölüm riskinden kurtulabilir. Benzer şekilde trade işlemleri sırasında da_disconnect açığı_ kullanılarak item kaybı önlenmeye çalışılabilir.

Açığın Kaynağı ve Etkileri

Bu açığın temel kaynağı, sunucunun oyuncunun bağlantısının kesilip kesilmediğini anlayana kadar geçen sürece, başlatılmış işlemleri sonlandırmama eğilimidir. Özellikle Metin2'nin auth ve game sunucuları arasında veri aktarımı yapılırken bu gecikme,_disconnect açığı_'nın oluşmasına neden olabilir.

Etkileri ise şunlardır:

- Oyuncuların adil olmayan yollarla avantaj sağlaması
- PvP sistemlerinde adaletsizlik
- Sunucu performansında düşüş
- Oyun içi ekonomi dengesinin bozulması

C++ Tabanlı Sunucularda Disconnect Açığı Düzeltme Yöntemleri

Metin2 özel sunucu geliştirme sürecinde_disconnect açığı_'nı düzeltmek için bazı C++ seviyesinde değişiklikler yapılmalıdır. Aşağıda bu düzeltmeler detaylı şekilde anlatılmaktadır:

1. Oyuncu Bağlantı Takibi

Sunucu tarafında her oyuncunun bağlantısını anlık olarak takip eden bir sistem kurulmalıdır. Özellikle oyuncu bir eylem gerçekleştirmeye başladığında, bağlantı koparsa bu eylemin iptal edilmesi sağlanmalıdır. Bunun için_client.cpp_ veya_battle.cpp_ dosyasında gerekli kontroller yapılmalıdır.

2. Zaman Aşımı Kontrolleri

Sunucuda belirli eylemler için zaman aşımı (timeout) mekanizmaları kurulabilir. Örneğin bir oyuncu PvP发起 sırasında 10 saniye içinde bağlantı koparsa, sunucu bu eylemi otomatik olarak iptal edebilir. Bu,_disconnect açığı_'nın kullanılmasını engeller.

3. Game ve Auth Sunucu Senkronizasyonu

Auth ve Game sunucuları arasındaki veri senkronizasyonu güçlendirilmelidir. Özellikle oyuncu disconnect olduğunda, auth sunucusuna anında bildirim gönderilmeli ve gerekli kontroller burada yapılmalıdır. Bu işlem için_packet.h_ ve_packet.cpp_ dosyalarında gerekli değişiklikler yapılmalıdır.

4. Trade ve Item Transfer İşlemleri

Trade sırasında.disconnect açığı_'ndan yararlanmak için oyuncular, işlem sırasında bağlantıyı koparabilir. Bu durumu önlemek için_trade_process()_ fonksiyonuna bağlantı kontrolü eklenmelidir. Eğer oyuncu bağlantısı kesilirse, trade işlemi iptal edilmelidir.

Sonuç

Disconnect Açığı, Metin2 özel sunucularında sıkça karşılaşılan ancak doğru şekilde ele alındığında kolaylıkla düzeltilebilen bir güvenlik zafiyetidir. Sunucu geliştiricileri, C++ seviyesinde bağlantı takibi, zaman aşımı kontrolleri ve sunucular arası senkronizasyon gibi yöntemlerle bu açığı başarıyla kapatabilirler. Güvenli ve adil bir oyun ortamı sağlamak için bu tür açıkların erken tespiti ve çözümü büyük önem taşır.

Daha fazla Metin2 geliştirme ipucu ve sistem önerisi için Metin2Lobby'yi ziyaret edin.


Disconnect Exploit Fix

Closing security vulnerabilities in Metin2 private servers directly affects player experience and server stability. In this context, the Disconnect Exploit is a serious vulnerability that allows players to gain advantages by intentionally disconnecting from the server. This article will explain what the Disconnect Exploit is, how it works, and how to fix it on C++ based Metin2 servers in detail.

What Is the Disconnect Exploit?

The Disconnect Exploit is a method where a player intentionally cuts their internet connection during specific actions (such as PvP fights, item transfers, level-ups, etc.) to prevent the server from completing those actions. This allows the player to avoid damage or prevent statistics changes without consequences.

For example, a player may intentionally disconnect when their HP drops during a PvP battle. Until the server detects that the player has disconnected, it cannot complete the player’s PvP action, allowing the player to avoid dying. Similarly,_disconnect exploit_ may be used during trading to avoid item loss.

Source and Effects of the Exploit

The main cause of this exploit is the delay in the server recognizing a disconnection before finishing initiated actions. Particularly during data transfers between Metin2's auth and game servers, such delays can lead to the occurrence of the_disconnect exploit_.

Effects include:

- Players gaining unfair advantages
- Unfairness in PvP systems
- Decreased server performance
- Disruption of in-game economy balance

Fixing the Disconnect Exploit in C++ Based Servers

To fix the_disconnect exploit_ in Metin2 private server development, certain modifications at the C++ level are necessary. The fixes are detailed below:

1. Player Connection Tracking

A system must be implemented to monitor each player's connection in real-time. When a player starts an action and then disconnects, that action should be canceled immediately. Necessary checks can be made in _client.cpp_ or _battle.cpp_ files.

2. Timeout Controls

Timeout mechanisms for certain actions can be set up on the server. For example, if a player disconnects within 10 seconds after initiating a PvP fight, the server can automatically cancel the action, preventing the use of the_disconnect exploit_.

3. Game and Auth Server Synchronization

Data synchronization between the Auth and Game servers must be strengthened. When a player disconnects, immediate notification should be sent to the Auth server, and necessary checks should be performed there. Modifications in _packet.h_ and _packet.cpp_ files are required for this process.

4. Trade and Item Transfer Processes

During trading, players might exploit the_disconnect exploit_ by cutting their connection mid-process. To prevent this, connection checks should be added to the _trade_process()_ function. If a player disconnects, the trade should be canceled immediately.

Conclusion

The Disconnect Exploit is a common vulnerability in Metin2 private servers, but it can be easily fixed with proper implementation. Server developers can successfully eliminate this exploit by implementing connection tracking, timeout controls, and inter-server synchronization at the C++ level. Early detection and resolution of such exploits are crucial for maintaining a secure and fair gaming environment.

Visit Metin2Lobby for more Metin2 development tips and system recommendations.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt