[C++ & Py] Sequence'i Tamamen Kaldırma Rehberi

  • Konuyu açan Konuyu açan Kaiser
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 26
  • Gösterim Gösterim 2K

Kaiser

Admin
Admin
Geliştirici
Yardımsever Üye
Mesaj
4.038
Çözümler
390
Beğeni
4.159
Puan
1.849
Ticaret Puanı
0
Merhabalar, bildiğiniz üzere metin2'nin yeri geldiğinde en kanser kodlarından biri olan sequence'i artık hemen hemen hiç kimse kullanmıyor ve tamamen kaldırıyor.
Ben de kendi projemden kaldırdım ve beraberinde yapılan işlemleri faydalanmak isteyenler için paylaşıyorum. Başka yerlerde de bunun anlatımı mevcut ama "tam olmadığı" yönünde yorumlar olduğu için kendi hazırladığımı paylaşmak istedim.

Peki bilmeyenler için; sequence'i kaldırmak bize ne kazandırır? Özetlemek gerekirse; bazen düzgün çalışması gereken sistemler sequence yüzünden packet hatası verebiliyor ve logine atabiliyor. Hatta bazen amansızca kendini gösterip karakterin hareketlerinden bile(yürümesi vs.) etkilenebiliyor ve aşağıda verdiğim örnek hatayla beraber logine atabiliyor.

Sequence'i kaldırdıktan sonra ve eğer sizden kaynaklı bir sorun yoksa artık bu sorunlar yaşanmayacaktır ve artık hiç bir zaman şuna benzer bir syserr almayacaksınız:
Kod:
Genişlet Daralt Kopyala
Process: SEQUENCE 74309000 mismatch 0x72 != 0x0 header 55
SYSERR: Nov 17 07:52:57 :: Process: SEQUENCE 65febc00 mismatch 0xe2 != 0xe header 57
SYSERR: Nov 17 07:52:57 :: Process: SEQUENCE_LOG [Nick]-------------
    [007 : 0x72]
    [007 : 0xf7]
    [007 : 0x6f]

NOT: Bu syserr'i UNKNOWN PACKET HEADER hatasıyla karıştırmayınız.

Ekstra:
packet_info.cpp içinde aratın:
C++:
Genişlet Daralt Kopyala
CPacketInfoCG::CPacketInfoCG()

Bu blokta listelenen satırların sonundaki true-false kısımlarını kaldırabilirsiniz.
Örnek:
C++:
Genişlet Daralt Kopyala
Set(HEADER_CG_TEXT, sizeof(TPacketCGText), "Text");

packet_info.h içinde bulun:
C++:
Genişlet Daralt Kopyala
void Set(int header, int size, const char * c_pszName, bool bSeq=false);
Değiştirin:
C++:
Genişlet Daralt Kopyala
void Set(int header, int size, const char * c_pszName);

Takıldığınız yerleri yorum olarak belirtebilirsiniz.

Linkleri görebilmek için giriş yap veya kayıt ol.
 

Dosya Eklentileri

paylaşım için teşekkürler, uzun vadede kaldırdıktan sonraki görüşlerinizi paylaşırsanız seviniriz sequence hakkında
 
paylaşım için teşekkürler, uzun vadede kaldırdıktan sonraki görüşlerinizi paylaşırsanız seviniriz sequence hakkında
Elbette, bununla alakalı olarak bir sorun yaşarsam konu altından bildiririm.
 
Bir eksik fark etmiş olabilirim packet_info.cpp'de

, true);
, false);

Set(HEADER_CG_XXXXXX, sizeof(TPacketCGXXXXX), <"XXXXsystem", true);

gibi yerler olacak oraları da

Set(HEADER_CG_XXXXXX, sizeof(TPacketCGXXXXX), <"XXXXsystem");

bu şekilde elden geçirmek gerekiyor diye biliyorum, anlatımda göremediğim için yazayım dedim :)
 
Bir eksik fark etmiş olabilirim packet_info.cpp'de

, true);
, false);

Set(HEADER_CG_XXXXXX, sizeof(TPacketCGXXXXX), <"XXXXsystem", true);

gibi yerler olacak oraları da

Set(HEADER_CG_XXXXXX, sizeof(TPacketCGXXXXX), <"XXXXsystem");

bu şekilde elden geçirmek gerekiyor diye biliyorum, anlatımda göremediğim için yazayım dedim :)
Ona dikkat etmedim ama alakası yok sanırım onunla. Çünkü öyle olsaydı ilk denememde packet hataları alırdım diye düşünüyorum. Anlatımda gösterdiğim işlemlerden sonra oyuna girişte,offline shop da ve search systeminde hiç bir sorun yaşamadım mesela. Fakat yinede teşekkürler, eve geçtiğimde bunu inceleyeceğim.
 
Ona dikkat etmedim ama alakası yok sanırım onunla. Çünkü öyle olsaydı ilk denememde packet hataları alırdım diye düşünüyorum. Anlatımda gösterdiğim işlemlerden sonra oyuna girişte,offline shop da ve search systeminde hiç bir sorun yaşamadım mesela. Fakat yinede teşekkürler, eve geçtiğimde bunu inceleyeceğim.
Tamamdır, deneyip bilgilendirirsen sevinirim :)
 
Tamamdır, deneyip bilgilendirirsen sevinirim :)
Şimdi inceleme fırsatım oldu, gerekli düzenlemeyi konuya ekledim.
İlk denememde sorun yaşamamamın nedeni de true-false olayının artık tamamen boşa düşmüş olması. True de olsa, false de olsa sequence olmadığı için bSeq argümanı tamamen boş değer döndürüyor.
Offline shop ve search sisteminin packet_info.cpp içindeki true-false kısımlarını kaldırdım ve hiç bir şekilde etkilemedi.
Bilgilendirme için teşekkürler.
 
Ben uzun süredir kaldırılmış şekilde kullanıyorum. Absürt bir olayla karşılaşmadım. Sistem ekleme & kaldırmada hata yaşamadım. Herhangi bir syserr ile karşılaşmadım. Ha kaldırmadan önce hatalar ile karşılaşıyor muydum? Evet. Bazen Sequence log adı altında hatalar alabiliyordum. Sequence kaldırınca o paketteki hata çözülmüş mü oluyor ondan da emin değilim.
 
Ben uzun süredir kaldırılmış şekilde kullanıyorum. Absürt bir olayla karşılaşmadım. Sistem ekleme & kaldırmada hata yaşamadım. Herhangi bir syserr ile karşılaşmadım. Ha kaldırmadan önce hatalar ile karşılaşıyor muydum? Evet. Bazen Sequence log adı altında hatalar alabiliyordum. Sequence kaldırınca o paketteki hata çözülmüş mü oluyor ondan da emin değilim.
Eğer oyun içinde o packete bağlı olan sistem tamamen sorunsuz çalışıyorsa, sorun packet ile alakalı değildir sequence'in saçmalığından dolayı o hatayı alıyorsundur.
 
Eğer oyun içinde o packete bağlı olan sistem tamamen sorunsuz çalışıyorsa, sorun packet ile alakalı değildir sequence'in saçmalığından dolayı o hatayı alıyorsundur.

Sizce IMPROVED_PACKET_ENCRYPTION kaldırmak mantıklı mıdır? Çoğu forumda messi & ronaldo tartışması gibi olmuş. Bir taraf kaldırılmalı, bir taraf kaldırılmamalı. Kaldırılsa da kaldırılmasa da duvar kırılabilir gibisinden yorumlar okumuştum.
 
Şimdi inceleme fırsatım oldu, gerekli düzenlemeyi konuya ekledim.
İlk denememde sorun yaşamamamın nedeni de true-false olayının artık tamamen boşa düşmüş olması. True de olsa, false de olsa sequence olmadığı için bSeq argümanu tamamen boş değer döndürüyor.
Offline shop ve search sisteminin packet_info.cpp içindeki true-false kısımlarını kaldırdım ve hiç bir şekilde etkilemedi.
Bilgilendirme için teşekkürler.
Ne demek dostum (y) rica ederim :giggle:
 
Sizce IMPROVED_PACKET_ENCRYPTION kaldırmak mantıklı mıdır? Çoğu forumda messi & ronaldo tartışması gibi olmuş. Bir taraf kaldırılmalı, bir taraf kaldırılmamalı. Kaldırılsa da kaldırılmasa da duvar kırılabilir gibisinden yorumlar okumuştum.
Evet kaldırılsa da kaldırılmasa da duvar her türlü kırılabilir. Bu yazılım camiasının her noktasında geçerli bir istisna.
Mantıklı hareket etmek gerekirse benim görüşüm şudur;

Cryptopp, IMPROVED_PACKET_ENCRYPTION gibi güvenlik eklentilerini kaldırmak tamamen tercihe bağlı bir durum. Fakat bunları kaldıran kişinin, kaldırdıktan sonra oluşan(veya oluşabilecek) güvenlik boşluğunu tekrar dolduracak kadar bilgiye sahip olması gerek diye düşünüyorum. Sadece kaldırıp öyle bırakmak bence mantıklı değil, sağlıklı da değil. Sonuçta bunlar "ölü kodlar" dediğimiz kodlardan değiller, eski de olsa belirli bir potansiyelde çalışan kodlar. Hatta bazıları sırf src hafiflesin, build hızlansın diye cryptopp'u kaldırıyor ama sırf bu sebeplerden dolayı kaldırmayı doğru bulmuyorum şahsen.

Martysama bu konu hakkında "güvenli" diyor, elbette benim bilgim onunkinden üstün değil. Fakat bunların kaldırılması gibi işlemler, var olan güvenlik yüzdesini daha da düşürüyor bence. O yüzden bana sorarsanız tavsiye etmem.
 
Konu için teşekkürler. Yarım kalmış, tam anlamıyla tamamlanmadığı sürece (entegre edilebilecek her pakete uygulamak gibi) bir işe yaramayacak olan bu sistemi aktif tutmak bence de gereksiz, bir yıl kadar önce tamamen kaldırmıştım herhangi bir sıkıntı yaşamadım. IMPROVED_PACKET_ENCRYPTION kaldırılmaması gereken bir güvenlik önlemi, bunu geliştirmek isterseniz CrypTopp yerine farklı bir şifreleme kütüphanesi kullanabilirsiniz, örnekleri çeşitli altyapılarda mevcut (warez olan), örneğin Rubinum'un 2017 leak dosyalarını inceleyebilirsiniz.

Bu konuya artı olarak server tarafındaki ComboSequence zımbırtısını da kaldırmanızı tavsiye ederim, saygılar.
 
packet_info.h deki

void Set(int header, int size, const char * c_pszName, bool bSeq=false);

bunu değiştirdigimde durmadan hata almaktayım neden olur ?
 
packet_info.h deki

void Set(int header, int size, const char * c_pszName, bool bSeq=false);

bunu değiştirdigimde durmadan hata almaktayım neden olur ?
Ne gibi bir hata alıyorsunuz ? Buradaki kodun şu şekilde olması gerek;

C++:
Genişlet Daralt Kopyala
void Set (int header, int size, const char* c_pszName);
 
Ne gibi bir hata alıyorsunuz ? Buradaki kodun şu şekilde olması gerek;

C++:
Genişlet Daralt Kopyala
void Set (int header, int size, const char* c_pszName);
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
OBJDIR/desc.o:/root/Razuning2/Server/game/src/input.h:27: more undefined references to `CPacketInfoCG::~CPacketInfoCG()' follow
OBJDIR/input_p2p.o: In function `CInputP2P::CInputP2P()':
/root/Razuning2/Server/game/src/input_p2p.cpp:28: undefined reference to `CPacketInfoGG::CPacketInfoGG()'
OBJDIR/input_p2p.o: In function `~CInputProcessor':
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
OBJDIR/input_teen.o: In function `~CInputProcessor':
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
OBJDIR/packet_info.o: In function `CPacketInfoCG::CPacketInfoCG()':
/root/Razuning2/Server/game/src/packet_info.cpp:101: undefined reference to `vtable for CPacketInfoCG'
OBJDIR/desc_client.o: In function `~CInputProcessor':
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
OBJDIR/desc_client.o:/root/Razuning2/Server/game/src/input.h:27: more undefined references to `CPacketInfoCG::~CPacketInfoCG()' follow
aldıgım hata bu hocam
 
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
OBJDIR/desc.o:/root/Razuning2/Server/game/src/input.h:27: more undefined references to `CPacketInfoCG::~CPacketInfoCG()' follow
OBJDIR/input_p2p.o: In function `CInputP2P::CInputP2P()':
/root/Razuning2/Server/game/src/input_p2p.cpp:28: undefined reference to `CPacketInfoGG::CPacketInfoGG()'
OBJDIR/input_p2p.o: In function `~CInputProcessor':
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
OBJDIR/input_teen.o: In function `~CInputProcessor':
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
OBJDIR/packet_info.o: In function `CPacketInfoCG::CPacketInfoCG()':
/root/Razuning2/Server/game/src/packet_info.cpp:101: undefined reference to `vtable for CPacketInfoCG'
OBJDIR/desc_client.o: In function `~CInputProcessor':
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
/root/Razuning2/Server/game/src/input.h:27: undefined reference to `CPacketInfoCG::~CPacketInfoCG()'
OBJDIR/desc_client.o:/root/Razuning2/Server/game/src/input.h:27: more undefined references to `CPacketInfoCG::~CPacketInfoCG()' follow
aldıgım hata bu hocam
packet_info.cpp açın CPacketInfoGG::CPacketInfoGG() bu kod bloğunu bulun, her satırın sonunda true, false şeklinde değişkenler olacak onları silin sorun çözülür, yani şu şekilde gözükecek;

C++:
Genişlet Daralt Kopyala
CPacketInfoGG::CPacketInfoGG()
{
    Set (HEADER_GG_SETUP,                        sizeof (TPacketGGSetup),                "Setup");
    Set (HEADER_GG_LOGIN,                        sizeof (TPacketGGLogin),                "Login");
    Set (HEADER_GG_LOGOUT,                        sizeof (TPacketGGLogout),                "Logout");
    Set (HEADER_GG_RELAY,                        sizeof (TPacketGGRelay),                "Relay");
    Set (HEADER_GG_NOTICE,                        sizeof (TPacketGGNotice),                "Notice");
    Set (HEADER_GG_SHUTDOWN,                    sizeof (TPacketGGShutdown),                "Shutdown");
    Set (HEADER_GG_GUILD,                        sizeof (TPacketGGGuild),                "Guild");
    Set (HEADER_GG_SHOUT,                        sizeof (TPacketGGShout),                "Shout");
    Set (HEADER_GG_DISCONNECT,                    sizeof (TPacketGGDisconnect),            "Disconnect");
    Set (HEADER_GG_MESSENGER_ADD,                sizeof (TPacketGGMessenger),            "MessengerAdd");
    Set (HEADER_GG_MESSENGER_REMOVE,            sizeof (TPacketGGMessenger),            "MessengerRemove");
    Set (HEADER_GG_FIND_POSITION,                sizeof (TPacketGGFindPosition),            "FindPosition");
    Set (HEADER_GG_WARP_CHARACTER,                sizeof (TPacketGGWarpCharacter),        "WarpCharacter");
    Set (HEADER_GG_GUILD_WAR_ZONE_MAP_INDEX,    sizeof (TPacketGGGuildWarMapIndex),        "GuildWarMapIndex");
    Set (HEADER_GG_TRANSFER,                    sizeof (TPacketGGTransfer),                "Transfer");
    Set (HEADER_GG_XMAS_WARP_SANTA,                sizeof (TPacketGGXmasWarpSanta),        "XmasWarpSanta");
    Set (HEADER_GG_XMAS_WARP_SANTA_REPLY,        sizeof (TPacketGGXmasWarpSantaReply),    "XmasWarpSantaReply");
    Set (HEADER_GG_CHECK_CLIENT_VERSION,        sizeof (BYTE),                            "CheckClientVersion");
    Set (HEADER_GG_LOGIN_PING,                    sizeof (TPacketGGLoginPing),            "LoginPing");
    Set (HEADER_GG_BLOCK_CHAT,                    sizeof (TPacketGGBlockChat),            "BlockChat");
    Set (HEADER_GG_CHECK_AWAKENESS,                sizeof (TPacketGGCheckAwakeness),        "CheckAwakeness");
}
 
packet_info.cpp açın CPacketInfoGG::CPacketInfoGG() bu kod bloğunu bulun, her satırın sonunda true, false şeklinde değişkenler olacak onları silin sorun çözülür, yani şu şekilde gözükecek;

C++:
Genişlet Daralt Kopyala
CPacketInfoGG::CPacketInfoGG()
{
    Set (HEADER_GG_SETUP,                        sizeof (TPacketGGSetup),                "Setup");
    Set (HEADER_GG_LOGIN,                        sizeof (TPacketGGLogin),                "Login");
    Set (HEADER_GG_LOGOUT,                        sizeof (TPacketGGLogout),                "Logout");
    Set (HEADER_GG_RELAY,                        sizeof (TPacketGGRelay),                "Relay");
    Set (HEADER_GG_NOTICE,                        sizeof (TPacketGGNotice),                "Notice");
    Set (HEADER_GG_SHUTDOWN,                    sizeof (TPacketGGShutdown),                "Shutdown");
    Set (HEADER_GG_GUILD,                        sizeof (TPacketGGGuild),                "Guild");
    Set (HEADER_GG_SHOUT,                        sizeof (TPacketGGShout),                "Shout");
    Set (HEADER_GG_DISCONNECT,                    sizeof (TPacketGGDisconnect),            "Disconnect");
    Set (HEADER_GG_MESSENGER_ADD,                sizeof (TPacketGGMessenger),            "MessengerAdd");
    Set (HEADER_GG_MESSENGER_REMOVE,            sizeof (TPacketGGMessenger),            "MessengerRemove");
    Set (HEADER_GG_FIND_POSITION,                sizeof (TPacketGGFindPosition),            "FindPosition");
    Set (HEADER_GG_WARP_CHARACTER,                sizeof (TPacketGGWarpCharacter),        "WarpCharacter");
    Set (HEADER_GG_GUILD_WAR_ZONE_MAP_INDEX,    sizeof (TPacketGGGuildWarMapIndex),        "GuildWarMapIndex");
    Set (HEADER_GG_TRANSFER,                    sizeof (TPacketGGTransfer),                "Transfer");
    Set (HEADER_GG_XMAS_WARP_SANTA,                sizeof (TPacketGGXmasWarpSanta),        "XmasWarpSanta");
    Set (HEADER_GG_XMAS_WARP_SANTA_REPLY,        sizeof (TPacketGGXmasWarpSantaReply),    "XmasWarpSantaReply");
    Set (HEADER_GG_CHECK_CLIENT_VERSION,        sizeof (BYTE),                            "CheckClientVersion");
    Set (HEADER_GG_LOGIN_PING,                    sizeof (TPacketGGLoginPing),            "LoginPing");
    Set (HEADER_GG_BLOCK_CHAT,                    sizeof (TPacketGGBlockChat),            "BlockChat");
    Set (HEADER_GG_CHECK_AWAKENESS,                sizeof (TPacketGGCheckAwakeness),        "CheckAwakeness");
}
hocam böyle zaten bendeki packet_info.cpp dekiler ama hala hata almaktaym
 
bu konuda eksiklikler mevcut kimse bu sekilde calıstıramaz

Kaldırmada sıkıntı yaşayan arkadaşlar için şu linki bırakayım, olur da hata alırsanız bir de buradan kontrol edin;

Linkleri görebilmek için giriş yap veya kayıt ol.


Arkadaşın sorununu çözmek için dosyalara bakıyoruz, çözüme ulaşınca buradan paylaşırım.
 
bu konuda eksiklikler mevcut kimse bu sekilde calıstıramaz
En ufak bir eksiklik olduğunu düşünmüyorum, bunu bizzat test edip hazırladım ve paylaştım. Hala da aynı şekilde kullanıyorum.
Onlarca kişi de bu anlatımı uygulayarak Sequence'den kurtuldu.
Muhtemelen anlatımda bir yeri yanlış yaptın, tavsiyem şudur ki; server tarafını tekrardan dikkatlice uygula derim.
Eğer farklı dosyalarda (sistemsel olarak veya altyapı farklılığı olarak) Set'i hala 4 argüman olarak kullanan satırlar varsa o satırlardan hata verecektir, onları da 3 argümana indirerek yani sondaki bool değerini kaldırarak çözebilirsin.
 
Geri
Üst