*Descriere:
Metin2 Buffer & Packet Security Fix – Protecție Network
Thanks @SystemPolaris
Acest fix îmbunătățește securitatea și stabilitatea sistemului de buffer și a pachetelor de rețea din Metin2. Sunt adăugate mai multe verificări pentru dimensiuni invalide, overflow-uri, citirea datelor și procesarea pachetelor dinamice.
- blochează lungimile negative și dimensiunile invalide;
- previne citirea în afara datelor existente în buffer;
- adaugă verificări pentru overflow la alocarea memoriei;
- reutilizează spațiul consumat din buffer înainte de realocare;
- validează pachetele dinamice și pachetele HybridCrypt;
- adaugă verificări suplimentare pentru Guild Mark și Symbol Data.
*Link download / Code:
Deschide libthecore/src/buffer.c si cauta:
Adauga dedesubt:
Cauta in ambele functii buffer_get_pool_index si buffer_get_exac_pool_index:
Inlocuieste in ambele cu:
Cauta:
Adauga la inceputul functiei:
Cauta:
Inlocuieste toata functia cu:
Cauta:
Inlocuieste toata functia cu:
Cauta aceste trei functii:
Inlocuieste-le cu:
Cauta:
Asigura-te ca functia incepe cu:
Cauta:
Inlocuieste toata functia cu:
Cauta:
Inlocuieste toata functia cu:
Cauta:
Inlocuieste toata functia cu:
Deschide EterLib/NetStream.cpp si cauta:
Inlocuieste ambele functii cu:
Cauta:
Adauga la inceputul functiei:
Dupa m_sendBuf si m_sendTEABuf adauga:
Cauta in CNetworkStream::CNetworkStream:
Foloseste:
Cauta:
Adauga la inceput:
Cauta:
Adauga la inceput:
Cauta:
Inlocuieste validarea cu:
Cauta toate aparitiile:
din __RecvInternalBuffer si foloseste in toate cele trei cazuri:
Deschide UserInterface/PythonNetworkStream.cpp si cauta:
Adauga imediat dedesubt:
Deschide UserInterface/Packet.h si cauta:
Foloseste in locul constructorilor existenti:
Deschide UserInterface/PythonNetworkStreamPhaseHandShake.cpp si cauta:
Inlocuieste toata functia cu:
Cauta:
Inlocuieste toata functia cu:
Deschide UserInterface/AccountConnector.cpp si cauta:
Inlocuieste toata functia cu:
Cauta:
Inlocuieste toata functia cu:
Cauta in CAccountConnector::__AnalyzeVarSizePacket:
Adauga imediat dedesubt:
Deschide UserInterface/GuildMarkDownloader.cpp si cauta:
Adauga dupa header:
Inainte de bucla pentru block-uri adauga:
Valideaza fiecare block comprimat cu:
Dupa bucla adauga:
Cauta:
Adauga inainte de header:
Metin2 Buffer & Packet Security Fix – Protecție Network
Thanks @SystemPolaris
Acest fix îmbunătățește securitatea și stabilitatea sistemului de buffer și a pachetelor de rețea din Metin2. Sunt adăugate mai multe verificări pentru dimensiuni invalide, overflow-uri, citirea datelor și procesarea pachetelor dinamice.
- blochează lungimile negative și dimensiunile invalide;
- previne citirea în afara datelor existente în buffer;
- adaugă verificări pentru overflow la alocarea memoriei;
- reutilizează spațiul consumat din buffer înainte de realocare;
- validează pachetele dinamice și pachetele HybridCrypt;
- adaugă verificări suplimentare pentru Guild Mark și Symbol Data.
*Link download / Code:
Deschide libthecore/src/buffer.c si cauta:
Cod: Selectaţi tot
void buffer_realloc(LPBUFFER& buffer, int length); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta in ambele functii buffer_get_pool_index si buffer_get_exac_pool_index:
Cod: Selectaţi tot
for (i = 0; i < 32; ++i) { Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
LPBUFFER buffer_new(int size) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
void buffer_write(LPBUFFER& buffer, const void *src, int length) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
void buffer_read(LPBUFFER buffer, void * buf, int bytes) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta aceste trei functii:
Cod: Selectaţi tot
buffer_byte
buffer_word
buffer_dword Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
void buffer_read_proceed(LPBUFFER buffer, int length) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
void buffer_write_proceed(LPBUFFER buffer, int length) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
void buffer_adjust_size(LPBUFFER& buffer, int add_size) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
void buffer_realloc(LPBUFFER& buffer, int length) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide EterLib/NetStream.cpp si cauta:
Cod: Selectaţi tot
void CNetworkStream::SetRecvBufferSize(int recvBufSize)
void CNetworkStream::ReleaseRecvBuffer() Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
void CNetworkStream::SetSendBufferSize(int sendBufSize) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Dupa m_sendBuf si m_sendTEABuf adauga:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta in CNetworkStream::CNetworkStream:
Cod: Selectaţi tot
m_sendTEABuf Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
bool CNetworkStream::Peek(int size) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
bool CNetworkStream::Peek(int size, char * pDestBuf) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
bool CNetworkStream::Send(int size, const char * pSrcBuf) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta toate aparitiile:
Cod: Selectaţi tot
if (recvSize < 0) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide UserInterface/PythonNetworkStream.cpp si cauta:
Cod: Selectaţi tot
TDynamicSizePacketHeader DynamicSizePacketHeader; Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide UserInterface/Packet.h si cauta:
Cod: Selectaţi tot
SPacketGCHybridCryptKeys
SPacketGCHybridSDB Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide UserInterface/PythonNetworkStreamPhaseHandShake.cpp si cauta:
Cod: Selectaţi tot
bool CPythonNetworkStream::RecvHybridCryptKeyPacket() Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
bool CPythonNetworkStream::RecvHybridCryptSDBPacket() Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide UserInterface/AccountConnector.cpp si cauta:
Cod: Selectaţi tot
bool CAccountConnector::__AuthState_RecvHybridCryptKeys(int iTotalSize) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
bool CAccountConnector::__AuthState_RecvHybridCryptSDB(int iTotalSize) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta in CAccountConnector::__AnalyzeVarSizePacket:
Cod: Selectaţi tot
TDynamicSizePacketHeader dynamicHeader;
if (!Peek(sizeof(dynamicHeader), &dynamicHeader))
return true; Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide UserInterface/GuildMarkDownloader.cpp si cauta:
Cod: Selectaţi tot
__LoginState_RecvMarkBlock Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Inainte de bucla pentru block-uri adauga:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Valideaza fiecare block comprimat cu:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Dupa bucla adauga:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
__LoginState_RecvSymbolData Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.



