Hızlı kanal değiştirme inject dupe fixi. [FIX]

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Selamlar yine ufak bir fix kendi sistemlerinizin open{} fonksiyonlarınıza göre kodu güncellemenizi TAVSİYE EDERİM.

char.cpp bul
Kod:
#ifdef ENABLE_CHANNEL_SWITCH_SYSTEM bool CHARACTER::SwitchChannel(long newAddr, WORD newPort) {     if (!IsPC() || !GetDesc() || !CanWarp())         return false;

altına ekle

Kod:
if (IsOpenSafebox() || GetExchange() || GetMyShop() || IsAcceOpened())     {         ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Açık pencereleri kapatmadan kanal değiştiremezsin."));         return false;     }

Yapmazsan ne olur?

Exit ile yapılan py inject dupe sorunu vardı hatırlar mısın? Aynısı olur kanal değiştirirken py inject ile item envanter > safebox taşınarak kopyalanır. Sadece bir örnek kendi sistemlerinize göre kodu geliştirin.KESİNLİKLE YAPIN! Keyifli günler.
Hızlı Kanal Değiştirme Inject Dupe Fixi [FIX]

Metin2 özel sunucularında geliştirme yaparken karşılaşılan hatalardan birisi de 'hızlı kanal değiştirme inject dupe' hatasıdır. Bu hata, oyuncuların kanal değiştirme işlemi sırasında bazı eşyaları çoğaltabilmelerine olanak tanıyabilir. Bu durum, hem sunucu yöneticileri hem de oyuncular için ciddi bir güvenlik ve denge sorunudur. Bu yazıda, hızlı kanal değiştirme sırasında meydana gelen inject dupe hatasının neden oluştuğunu ve nasıl düzeltileceğini detaylıca ele alacağız.

Inject Dupe Nedir?
Inject dupe, oyuncuların belirli aksiyonlar sırasında sunucuya gönderilen paketlerden yararlanarak eşya çoğaltma yöntemiyle karşılaştıkları bir güvenlik açığıdır. Özellikle kanal değiştirme gibi geçiş süreçlerinde bu açığın kullanılması mümkündür. Bu durumda, oyuncu bir eşyayı göndermeden önce kanal değiştirerek, gönderim işlemini iptal ettirip aynı eşyayı iki kez elde edebilir.

Sorunun Kaynağı
Bu sorun genellikle sunucu tarafında eşya transferi ve oyun durumu kontrol mekanizmalarının eksik ya da yetersiz uygulanmasından kaynaklanır. Kanal değiştirme sırasında eşyaların doğru şekilde kontrol edilmemesi, oyuncunun geçici olarak.disconnect olup tekrar bağlanması gibi senaryolar, inject dupe'nin tetiklenmesine sebep olabilir. Ayrıca, C++ kaynak kodlarında eksik senkronizasyon veya hatalı veri işleme algoritmaları da bu hataya zemin hazırlar.

Fix Uygulaması Nasıl Yapılır?
Bu hatayı düzeltmek için öncelikle kanal değiştirme işlemi sırasında eşya işlemlerinin tamamen durdurulması sağlanmalıdır. Bunun için, kanal değiştirme isteği geldiğinde oyuncunun envanterindeki tüm işlemler askıya alınmalı ve bu süre zarfında hiçbir eşya transferi yapılmamalıdır. Bu işlem, auth ve game sunucularında senkronize şekilde yapıldığında daha güvenli sonuçlar alınır.

Ayrıca, C++ kaynak kodda bulunan 'transfer_item' fonksiyonuna ek kontroller getirilmelidir. Oyuncunun kanal değiştirme sürecinde aktif olarak bir işlem yapmaması gerektiğini belirten flag sistemleri kurulabilir. Bu sayede, kanal değiştirme sırasında yapılan herhangi bir item gönderimi engellenir.

Python Tarafında Kontroller
Metin2 sunucularında py root üzerinde çalışan sistemler varsa, burada da benzer kontroller yapılmalıdır. Py GUI veya UIScript tabanlı arayüzler üzerinden yapılan işlemler de kanal değiştirme sırasında askıya alınmalıdır. Bu durum, 'player.SetWaitForClose' gibi fonksiyonlar ile sağlanabilir. Böylece, oyuncu kanal değiştirme sürecinde herhangi bir işlem yapamaz hale gelir.

Veritabanı Seviyesinde Güvenlik
Eğer DB tarafında eşya geçmişi logları tutuluyorsa, kanal değiştirme esnasında yapılan transferlerin loglanması ve bu loglara göre filtreleme yapılması da önemli bir güvenlik katmanı sağlayabilir. Bu sayede, potansiyel inject dupe girişimleri daha erken tespit edilebilir.

Sonuç
Hızlı kanal değiştirme inject dupe hatası, Metin2 özel sunucularında sıkça karşılaşılan fakat çözülmesi gereken kritik güvenlik açıklarından biridir. Doğru kodlama, uygun senkronizasyon ve veritabanı kontrolleri ile bu sorun tamamen ortadan kaldırılabilir. Sunucu geliştiricilerinin bu konuda hassas davranması ve düzenli olarak güvenlik denetimleri yapması büyük önem taşır.


Fast Channel Switching Inject Dupe Fix [FIX]

One of the common issues encountered during development on Metin2 private servers is the 'fast channel switching inject dupe' bug. This issue allows players to duplicate certain items while changing channels. This situation poses a serious security and balance problem for both server administrators and players. In this article, we will discuss in detail what causes the inject dupe bug during fast channel switching and how to fix it.

What is Inject Dupe?
Inject dupe is a security vulnerability that allows players to exploit packet transmissions during specific actions to duplicate items. Especially during transitions such as channel switching, exploiting this vulnerability becomes possible. In this scenario, a player may change channels before sending an item, canceling the send action and obtaining the same item twice.

Root of the Problem
This issue generally stems from incomplete or insufficient implementation of item transfer and game state control mechanisms on the server side. Improper handling of items during channel switching, scenarios where the player temporarily disconnects and reconnects, can trigger inject dupe. Additionally, missing synchronization or incorrect data processing algorithms in C++ source code can contribute to this error.

How to Apply the Fix
To resolve this issue, all item-related operations should be paused when a channel switch request occurs. During this time, no item transfers should take place. When applied synchronously between the auth and game servers, better security outcomes are achieved.

Moreover, additional checks should be added to the 'transfer_item' function within the C++ source code. Flag systems can be established to indicate that the player should not perform any active operations during the channel switching process. This ensures that any item transmission attempted during channel switching is blocked.

Checks in Python Side
If there are systems running on the py root in Metin2 servers, similar checks must also be performed there. Operations made through Py GUI or UIScript-based interfaces should be suspended during channel switching. This can be achieved using functions like 'player.SetWaitForClose', preventing the player from performing any action during the channel switching phase.

Database-Level Security
If item transaction logs are maintained in the database, logging and filtering transactions occurring during channel switching can provide an important layer of security. This enables earlier detection of potential inject dupe attempts.

Conclusion
The fast channel switching inject dupe bug is one of the frequently encountered critical security vulnerabilities in Metin2 private servers but can be completely eliminated with proper coding, appropriate synchronization, and database checks. It is crucial for server developers to remain vigilant about this issue and conduct regular security audits.
 

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

Benzer konular

Geri
Üst Alt