4 mesaje
  • Mesaje: 13
  • Reacții: 4
  • Mesaje utile: 0
  • Status: 24/7 :)
  • Regat: Chunjo
  • [ID Discord]
  • Contact:

    Medalii

    *Descriere:
    M-am gândit să public această funcție împreună cu mecanismul logic din spatele ei. Spre deosebire de implementarea implicită din clientul Metin2, această versiune rulează codul Python direct din memorie, fără a-l salva pe disk.

    Aici intervine partea voastră: trebuie să adăugați un hook (recomand librăria MinHook) pentru a intercepta conținutul scripturilor Python la momentul execuției, astfel încât să le puteți clasifica în funcție de ce conțin și de unde provin.

    Funcția este doar fix-ul de bază, oferind un interpret Python mult mai securizat decât cel implicit. Cu o logică corect implementată în client (sau chiar server-side), puteți bloca majoritatea scripturilor Python externe care nu fac parte din clientul vostru oficial.

    🔐 BONUS
    Primul care reușește să înțeleagă logica completă și să adauge ce mai trebuie pentru a face hook-ul perfect funcțional și capabil să detecteze "cod Python" injectat din surse externe va primi un bonus: dezvăluirea a 5 verificări esențiale ce pot fi aplicate pe acest mecanism.

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------

    I decided to share this function along with its internal logic. Unlike the default Metin2 client implementation, this version runs Python code directly from memory, without saving it to disk.

    This is where your contribution comes in: you’ll need to implement a hook (I recommend using MinHook) to intercept the Python code at execution time, allowing you to classify it based on its content and its origin.

    The function itself is just the core fix, laying the groundwork for a much more secure Python interpreter than the default one. With proper client-side (or even server-side) logic, you can block most external Python scripts that don’t come from your official client.

    🔐 BONUS
    The first person who fully understands the logic and adds what’s needed to make the hook fully functional, capable of detecting Python code injected from external sources, will receive a bonus: a reveal of 5 essential checks that can be applied to this mechanism.

    *Link download / Code:
    Code:
    #ifdef ENABLE_PYTHON_CHECKS
    bool CPythonLauncher::RunMemoryTextFile(const char* c_szFileName, UINT uFileSize, const VOID* c_pvFileData)
    {
    	const CHAR* c_pcFileData = (const CHAR*)c_pvFileData;
    	std::string stConvFileData;
    	stConvFileData.reserve(uFileSize);
    
    	for (UINT i = 0; i < uFileSize; ++i)
    	{
    		if (c_pcFileData[i] != 13)
    			stConvFileData += c_pcFileData[i];
    	}
    
    	const CHAR* c_pcConvFileData = stConvFileData.c_str();
    	PyObject* pCompiledCode = Py_CompileString(c_pcConvFileData, c_szFileName, Py_file_input);
    	if (!pCompiledCode)
    		return false;
    	PyObject* pResult = PyEval_EvalCode((PyCodeObject*)pCompiledCode, m_poDic, m_poDic);
    	Py_DECREF(pCompiledCode);
    	if (!pResult)
    		return false;
    
    	Py_DECREF(pResult);
    	if (Py_FlushLine())
    		PyErr_Clear();
    
    	return true;
    }
    #else
    
    
    Your old function
    
    
    #endif

    🔥 Hai pe Discord! - Chat activ și support direct

    Te așteptăm și pe serverul de Discord - aici ne-am strâns toată comunitatea de Metin2 din România.

    Alătură-te acum!
    1300+ de membri activi!
    Robot Discord
    Roboțelu'
    Anunț
    Moderator Moderator
  • Mesaje: 163
  • Reacții: 2099
  • Mesaje utile: 7
  • Status: Recuperator de taxe .
  • Regat: Jinno
  • [ID Discord]
  • Contact:

    Medalii

    Avatar utilizator
    Moderator
    Moderator

    Mesaj de annoyed__ »

    Asta e un cod facut de AI si nu e stabil :) Cand incercati sa protejati exec ul vietii ar fi bine sa fiti atenti ca nu e de joaca cu functia asta . Cea mai mica greseala iti pocneste clientul si zici amin fara sa stii de la ce ;) .
    See full signature
  • Mesaje: 13
  • Reacții: 4
  • Mesaje utile: 0
  • Status: 24/7 :)
  • Regat: Chunjo
  • [ID Discord]
  • Contact:

    Medalii

    annoyed__ scrie: Asta e un cod facut de AI si nu e stabil :) Cand incercati sa protejati exec ul vietii ar fi bine sa fiti atenti ca nu e de joaca cu functia asta . Cea mai mica greseala iti pocneste clientul si zici amin fara sa stii de la ce ;) .
    Argumenteaza, poate asa nici noi in secure nici doofy si nici mihai nu il vom mai folosi in cshield/ninjaeye etc. , dar argumenteaza macar cu partea critica din aceasta functie
    Moderator Moderator
  • Mesaje: 163
  • Reacții: 2099
  • Mesaje utile: 7
  • Status: Recuperator de taxe .
  • Regat: Jinno
  • [ID Discord]
  • Contact:

    Medalii

    Avatar utilizator
    Moderator
    Moderator

    Mesaj de annoyed__ »

    Muskito667 scrie:
    annoyed__ scrie: Asta e un cod facut de AI si nu e stabil :) Cand incercati sa protejati exec ul vietii ar fi bine sa fiti atenti ca nu e de joaca cu functia asta . Cea mai mica greseala iti pocneste clientul si zici amin fara sa stii de la ce ;) .
    Argumenteaza, poate asa nici noi in secure nici doofy si nici mihai nu il vom mai folosi in cshield/ninjaeye etc. , dar argumenteaza macar cu partea critica din aceasta functie
    In primul rand da un check te rog ca sa nu repostezi chestii deja postate
    post4978.html#p4978
    In al 2 lea rand si descrierea care ai facut-o tot de AI e facuta , si nu are nici o treaba cu realitatea :) E impopotonata cu mult text care doar iti zice ce ar trebui tu sa faci in plus ca sa fie buna . Nu e stabila , ca sa fie stabila mai trebuie adaugate niste functii in + .
    Codul nu face nicio verificare de sursa sau locatia scriptului sau altfel de verificari . Pur si simplu compileaza si ruleaza stringul.
    Mai adaug eu de la mine ceva gratis :
    if (!ListaScriptPermis(c_szFileName))
    {
    TraceError("scriptblocat %s , nu e in lista", c_szFileName);
    return false;
    }
    Ca sa fiu explicit cea mai buna optiune daca chiar vrei protectie e sa preiei bytecode (co_code) / iei hashurile si le salvezi si le compari cu un white list .
    Dar asta necesita rabdare . Mereu cand schimbi ceva sa schimbi hashurile in white list si etc .
    Ce folositi voi e invechit deja si nu reprezinta nici un "safe" real cand vine vorba de protectie .
    T/C Nu am nimic cu tine ca l-ai repostat . Dar postul nu contine nimic in + decat cel deja postat de scoob .

    🔥 Hai pe Discord! - Chat activ și support direct

    Te așteptăm și pe serverul de Discord - aici ne-am strâns toată comunitatea de Metin2 din România.

    Alătură-te acum!
    1300+ de membri activi!
    Robot Discord
    Roboțelu'
    Anunț
    Închis

    Înapoi la “Arhivă resurse”

    Informații

    Utilizatori ce navighează pe acest forum: Niciun utilizator înregistrat și 1 vizitator

    Discord ID copiat: