Gereksiz Yükten Kurtulun: ProcessCRC & MagicCube Kaldırma Rehberi
Saldırı paketlerini hafifletin, gereksiz güvenlik simülasyonlarından kurtulun.
Saldırı paketlerini hafifletin, gereksiz güvenlik simülasyonlarından kurtulun.
Nedir ve Neden Kaldırıyoruz?
Metin2’nin çok eski dönemlerinde client bütünlüğünü kontrol etmek amacıyla eklenmiş bir güvenlik mekanizmasıdır. Mantık olarak client çalışırken belleğinden ve exe dosyasından CRC alır, bunu parça parça (MagicCube denilen yöntemle) server’a gönderir ve server da bu değerleri önceden tanımlı bir liste ile karşılaştırır.
Ancak günümüzde bu sistem tamamen işlevsizdir:
- <li data-xf-list-type="ul">
Bypass Kolaylığı: Modern hileler bu kontrolleri saniyeler içinde atlatmaktadır. <li data-xf-list-type="ul">
Derleyici Sorunları: Modern Visual Studio sürümleri, ASLR ve optimizasyonlar yüzünden temiz clientlerde bile farklı CRC çıkararak oyuncuların oyundan atılmasına sebep olabilir. <li data-xf-list-type="ul">
Paket Kirliliği: En çok kullanılan Saldırı (Attack) paketinin içine gömülüdür. Gereksiz yere veri trafiği yaratır. <li data-xf-list-type="ul">
Yönetilemezlik: CRC listelerini yöneten resmi araçlar elimizde yoktur.
Bu rehber ile Client ve Server tarafından bu eski yapıyı tamamen söküp atacağız.
İşlemlere başlamadan önce mutlaka Source yedeğinizi alınız!
BÖLÜM 1: Client Source (İstemci Kaynakları)
Dosya: Client\Source\UserInterface\Packet.h
İşlem: Aşağıdaki yapıları bulun ve belirtilen satırları silin.
Bul:
Kod:
typedef struct command_attack
Kod:
BYTE bCRCMagicCubeProcPiece; BYTE bCRCMagicCubeFilePiece;
Bul ve Sil (Tüm struct):
Kod:
typedef struct command_crc_report { BYTE header; BYTE byPackMode; DWORD dwBinaryCRC32; DWORD dwProcessCRC32; DWORD dwRootPackCRC32; } TPacketCGCRCReport;
Dosya: Client\Source\UserInterface\PythonNetworkStream.cpp
- <li data-xf-list-type="ul">Include sil:
<li data-xf-list-type="ul">Bul ve Sil (Kod:
#include "ProcessCRC.h"içinde):Kod:RecvPhasePacketKod:BuildProcessCRC();
Dosya: Client\Source\UserInterface\PythonNetworkStream.h
İşlem: Aşağıdaki fonksiyon tanımlarını silin.
Kod:
bool SendSpecial(int nLen, void* pvBuf); bool __SendCRCReportPacket();
Dosya: Client\Source\UserInterface\PythonNetworkStreamPhaseGame.cpp
- <li data-xf-list-type="ul">Include sil:
<li data-xf-list-type="ul">Bul ve Sil (Kod:
#include "ProcessCRC.h"fonksiyonu ve içeriği):Kod:SendSpecial
<li data-xf-list-type="ul">Bul ve Sil (Kod:bool CPythonNetworkStream::SendSpecial(int nLen, void* pvBuf) { // ... (tüm fonksiyon içeriğini silin) }fonksiyonu ve içeriği):Kod:__SendCRCReportPacket
Kod:bool CPythonNetworkStream::__SendCRCReportPacket() { // ... (tüm fonksiyon içeriğini silin) }
Bul:
Kod:
if (!SendSpecial(sizeof(kPacketAtk), &kPacketAtk))
Değiştir:
Kod:
if (!Send(sizeof(kPacketAtk), &kPacketAtk))
BÖLÜM 2: Server Source (Sunucu Kaynakları)
Dosya: Server\Source\game\config.cpp & .h
İşlem: CRC listelerini yükleyen ve kontrol eden kodları temizliyoruz.
- <li data-xf-list-type="ul">Sil:
veKod:
static std::set<DWORD> s_set_dwFileCRC;<li data-xf-list-type="ul">Sil:Kod:static std::set<DWORD> s_set_dwProcessCRC;(Hem prototipini, hem çağırıldığı yeri, hem de fonksiyon gövdesini silin). <li data-xf-list-type="ul">Sil:Kod:LoadValidCRCList();veKod:IsValidProcessCRCfonksiyonlarını silin. <li data-xf-list-type="ul">Header (.h) dosyasındaki `extern` tanımlarını silin.Kod:IsValidFileCRC
Dosya: Server\Source\game\desc.cpp & .h
İşlem: MagicCube birleştirme mantığını kaldırıyoruz.
- <li data-xf-list-type="ul">Sil:
,Kod:
m_bCRCMagicCubeIdx,Kod:m_dwProcCRC,Kod:m_dwFileCRC(Tanımlar ve constructor içindeki atamalar). <li data-xf-list-type="ul">Sil:Kod:m_bHackCRCQueryfonksiyonunu ve headerdaki tanımını silin.Kod:AssembleCRCMagicCube
Dosya: Server\Source\game\desc_manager.cpp & .h
İşlem:
- <li data-xf-list-type="ul">Sil:
değişkenini veKod:
m_bDisconnectInvalidCRC,Kod:IsDisconnectInvalidCRCmetodlarını silin.Kod:SetDisconnectInvalidCRCMode
Dosya: Server\Source\game\input_main.cpp
İşlem: Saldırı paketi işlenirken yapılan MagicCube çağrısını siliyoruz.
Bul ve Sil:
Kod:
ch->GetDesc()->AssembleCRCMagicCube(packMelee->bCRCMagicCubeProcPiece, packMelee->bCRCMagicCubeFilePiece);
Dosya: Server\Source\game\input_p2p.cpp
İşlem:
Kod:
HEADER_GG_RELOAD_CRC_LIST
Dosya: Server\Source\game\packet.h
İşlem: Server tarafındaki paket yapısını Client ile eşitlememiz gerek.
Bul ve Sil:
Kod:
HEADER_GG_RELOAD_CRC_LIST = 19,
Bul (
Kod:
typedef struct command_attack
İçinden Sil:
Kod:
BYTE bCRCMagicCubeProcPiece; BYTE bCRCMagicCubeFilePiece;
Dosya: Server\Source\game\packet_info.cpp
Sil:
Kod:
Set(HEADER_GG_RELOAD_CRC_LIST, sizeof(BYTE), "ReloadCRCList");
Dosya: Server\Source\game\questmanager.cpp
Sil:
Kod:
else if (name == "crcdisconnect")
Tüm işlemleri yaptıktan sonra Build almayı unutmayın.
İyi forumlar!
ProcessCRC Sistemi Detaylı Kaldırma Rehberi
ProcessCRC, Metin2 özel sunucularında yaygın olarak kullanılan bir güvenlik mekanizmasıdır. Bu sistem, oyuncu tarafından gönderilen paketlerin doğruluğunu kontrol ederek, hileli veya değiştirilmiş verilerin sunucuya ulaşmasını engeller. Ancak bazı durumlarda bu sistemi devre dışı bırakmak isteyebilirsiniz. Özellikle C++ kaynak kod üzerinde değişiklik yaparken ya da özel game core yapılandırması gerçekleştirmek istiyorsanız, ProcessCRC kaldırılması gerekebilir.
UYARI: Bu işlem, sunucunuzun güvenliğini azaltabilir. Sadece test ortamında veya gerekli önlemleri aldıktan sonra uygulayın.
Adım 1: Game Server Kaynak Koduna Erişim
Öncelikle Metin2 server src dosyalarına erişim sağlamanız gerekir. Genellikle bu dosyalar game core ve db core bölümlerinde bulunur. Martysama gibi popüler kaynaklar üzerinden bu yapıya ulaşabilirsiniz.
Adım 2: ProcessCRC Fonksiyonunu Bulma
Oyun sunucusunun ana dosyasında (örneğin ClientHandle.cpp) ProcessCRC fonksiyonunu arayın. Bu fonksiyon genellikle packet validation işlemleri sırasında çağrılır.
Adım 3: Fonksiyonu Devre Dışı Bırakma
Fonksiyonun içeriğini boşaltarak veya doğrudan çağrımı kaldırarak ProcessCRC sistemini devre dışı bırakabilirsiniz. Alternatif olarak, fonksiyonun dönen değerini true olarak sabitleyebilirsiniz.
Adım 4: Derleme ve Test
Değişikliklerden sonra projeyi yeniden derlemeniz (compile) gerekir. Metin2 compile işlemini doğru şekilde tamamladığınızdan emin olun. Ardından sunucuyu başlatıp test edin.
Ekstra Bilgi
Bu işlem client src üzerinde de benzer şekilde yapılabilir. Ancak bu durumda hem auth hem de game sunucularında uyumlu çalıştığından emin olmalısınız. Py root ve uiscript gibi yapılar bu işlemi etkilemez, ancak pack dosyalarında uyumlu olmanız önemlidir.
Daha fazla bilgi için Metin2Lobby'e göz atabilirsiniz.
Detailed Guide on Removing ProcessCRC System
ProcessCRC is a common security mechanism used in Metin2 private servers. This system validates the integrity of packets sent by players, blocking any modified or cheat-like data from reaching the server. However, there may be times when you want to disable this system. When making changes in C++ source code or configuring a custom game core, removing ProcessCRC might become necessary.
WARNING: This action may reduce your server's security. Only apply in testing environments or after taking appropriate precautions.
Step 1: Access Game Server Source Code
First, you need access to Metin2 server src files. These files are usually located within game core and db core. You can find these structures via popular sources like Martysama.
Step 2: Locate ProcessCRC Function
In the main game server file (e.g., ClientHandle.cpp), search for the ProcessCRC function. This function is typically called during packet validation processes.
Step 3: Disable the Function
You can disable ProcessCRC by clearing its content or removing its call entirely. Alternatively, you can force the function to return true.
Step 4: Compile and Test
After making changes, you must recompile the project (compile). Ensure that the Metin2 compile process completes successfully. Then start the server and test it.
Additional Info
This process can also be applied similarly in client src. However, ensure compatibility between both auth and game servers. While Py root and uiscript do not affect this operation, compatibility in pack files remains important.
Visit Metin2Lobby for more information.
İyi forumlar!
ProcessCRC Sistemi Detaylı Kaldırma Rehberi
ProcessCRC, Metin2 özel sunucularında yaygın olarak kullanılan bir güvenlik mekanizmasıdır. Bu sistem, oyuncu tarafından gönderilen paketlerin doğruluğunu kontrol ederek, hileli veya değiştirilmiş verilerin sunucuya ulaşmasını engeller. Ancak bazı durumlarda bu sistemi devre dışı bırakmak isteyebilirsiniz. Özellikle C++ kaynak kod üzerinde değişiklik yaparken ya da özel game core yapılandırması gerçekleştirmek istiyorsanız, ProcessCRC kaldırılması gerekebilir.
UYARI: Bu işlem, sunucunuzun güvenliğini azaltabilir. Sadece test ortamında veya gerekli önlemleri aldıktan sonra uygulayın.
Adım 1: Game Server Kaynak Koduna Erişim
Öncelikle Metin2 server src dosyalarına erişim sağlamanız gerekir. Genellikle bu dosyalar game core ve db core bölümlerinde bulunur. Martysama gibi popüler kaynaklar üzerinden bu yapıya ulaşabilirsiniz.
Adım 2: ProcessCRC Fonksiyonunu Bulma
Oyun sunucusunun ana dosyasında (örneğin ClientHandle.cpp) ProcessCRC fonksiyonunu arayın. Bu fonksiyon genellikle packet validation işlemleri sırasında çağrılır.
Adım 3: Fonksiyonu Devre Dışı Bırakma
Fonksiyonun içeriğini boşaltarak veya doğrudan çağrımı kaldırarak ProcessCRC sistemini devre dışı bırakabilirsiniz. Alternatif olarak, fonksiyonun dönen değerini true olarak sabitleyebilirsiniz.
Adım 4: Derleme ve Test
Değişikliklerden sonra projeyi yeniden derlemeniz (compile) gerekir. Metin2 compile işlemini doğru şekilde tamamladığınızdan emin olun. Ardından sunucuyu başlatıp test edin.
Ekstra Bilgi
Bu işlem client src üzerinde de benzer şekilde yapılabilir. Ancak bu durumda hem auth hem de game sunucularında uyumlu çalıştığından emin olmalısınız. Py root ve uiscript gibi yapılar bu işlemi etkilemez, ancak pack dosyalarında uyumlu olmanız önemlidir.
Daha fazla bilgi için Metin2Lobby'e göz atabilirsiniz.
Detailed Guide on Removing ProcessCRC System
ProcessCRC is a common security mechanism used in Metin2 private servers. This system validates the integrity of packets sent by players, blocking any modified or cheat-like data from reaching the server. However, there may be times when you want to disable this system. When making changes in C++ source code or configuring a custom game core, removing ProcessCRC might become necessary.
WARNING: This action may reduce your server's security. Only apply in testing environments or after taking appropriate precautions.
Step 1: Access Game Server Source Code
First, you need access to Metin2 server src files. These files are usually located within game core and db core. You can find these structures via popular sources like Martysama.
Step 2: Locate ProcessCRC Function
In the main game server file (e.g., ClientHandle.cpp), search for the ProcessCRC function. This function is typically called during packet validation processes.
Step 3: Disable the Function
You can disable ProcessCRC by clearing its content or removing its call entirely. Alternatively, you can force the function to return true.
Step 4: Compile and Test
After making changes, you must recompile the project (compile). Ensure that the Metin2 compile process completes successfully. Then start the server and test it.
Additional Info
This process can also be applied similarly in client src. However, ensure compatibility between both auth and game servers. While Py root and uiscript do not affect this operation, compatibility in pack files remains important.
Visit Metin2Lobby for more information.
