27 mesaje
  • Mesaje: 84
  • Reacții: 833
  • Mesaje utile: 0
  • Status: Discord: mihaimiti
  • Regat: Jinno
  • [ID Discord]
  • Contact:

    Medalii

    DEVE scrie:
    mihaimiti30 scrie:
    NoNNeX scrie: dacă îmi aduc bine aminte la când primești oferte sau când oferi la systemul de shop db sta încărcat nu mi mai amintesc exact dacă e sigur de la oferte dar la ceva era la shopul lui
    Chiar nu am bagat de seama , o sa verific.Momentan n am gasit probleme.Am inteles ca se poate face ceva duping dar nu stiu cum ca sa pot testa. Ceva cu trecerea de pe un core pe altul ... :-?
    Cauta in sursa de la sinners2 LASTMOVEITEM si baga-l, a mai postat si Tiger pe dev cateva fixuri pt dupe-uri. Poti pune cooldown la actiuni ca sa eviti dupe-urile gen cand scoti/pui iteme in shop, cand schimbi ch-ul etc.

    Oare pot evita facand canal general pe map1?
    See full signature

    📢 Resurse Metin2 Premium!

    Zeci de resurse Metin2 Premium - exclusive și 100% funcționale începând cu 15.99€!.

    Vezi resursele Cumpără premium
    Premium
    Premium
    Anunț
  • Mesaje: 84
  • Reacții: 833
  • Mesaje utile: 0
  • Status: Discord: mihaimiti
  • Regat: Jinno
  • [ID Discord]
  • Contact:

    Medalii

    NoNNeX scrie:
    mihaimiti30 scrie:
    NoNNeX scrie: dacă îmi aduc bine aminte la când primești oferte sau când oferi la systemul de shop db sta încărcat nu mi mai amintesc exact dacă e sigur de la oferte dar la ceva era la shopul lui
    Chiar nu am bagat de seama , o sa verific.Momentan n am gasit probleme.Am inteles ca se poate face ceva duping dar nu stiu cum ca sa pot testa. Ceva cu trecerea de pe un core pe altul ... :-?
    da și exista se poate face prin script py în care sa execute de exemplu move item use item tp crafting etc ev la iteme nici cooldown nu e safe ca poți da bypass la el
    Mersi de raspuns , dar astea nu se intalnesc asa la majoritatea offshop urilor?
    See full signature
  • Mesaje: 92
  • Reacții: 102
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Shinsoo
  • Medalii

    Mesaj de DEVE »

    Faci python static si scapi de injecturi + asa cum am zis scoti lastmoveitem din Sinners2. In sursa lu distraught gasiti tot clientul full static, python etc
  • Mesaje: 2
  • Reacții: 3
  • Mesaje utile: 0
  • Regat: Jinno
  • Medalii

    Mesaj de Nermin »

    Looks good. Keep up the good work. Offline Shop is a blessing and a curse, it can be good, and it can be really bad.
    I've already tested a few, including fixes. I would tend to go for a Tradehouse system, as it offers better control, optimization, a map that isn't overcrowded, and many other things + maybe web support.
    Unfortunately, there are no good public Tradehouse systems, but it's not that difficult.

    example: not perfect still in work
  • Mesaje: 14
  • Reacții: 5
  • Mesaje utile: 0
  • Status: 24/7 :)
  • Regat: Chunjo
  • [ID Discord]
  • Contact:

    Medalii

    Pe Ikarus cel de pe net se poate face dupe usor la fortare cu login key pentru a trece rapid de pe un core pe altul, eu l-am cumparat cand la lansat si insusi Ikarus dupa instalare mi-a adaugat cate ceva care in versiunea free de pe net nu se gaseste nici la ora actuala, nu vorbim de patch-urile by default, are un .bat care iti modifica si adauga automat codul de la sistem in fisierele server-ului, dar dupa cand am crezut ca am terminat instalarea a mai durat 30-35 minute in care se vedea clar ca adauga cod nou in partile sistemului, presupun ca a fost metoda lui pentru a evita leak-urile la sistem, este 100% stabil odata facuta instalarea a testat el insusi relogic cu login key pe alt core si cu multiple conturi ca sa-si/sa-mi demonstreze ca sistemul era 100% functional si nu avea nici un dupe descoperit si/sau exploatabil in momentul acela, vorbim de 1/2 anisori cred. Am incercat si eu versiunea de pe net si este ceea ce el vinde doar ca in partea originala eu am mult mai mult cod in define-urile lui decat in cel de pe net, si am presupus ca este de la patchuri dar ghici ce nu de acolo era codul in plus. Arata super la design spor cu el :)
    Administrator Administrator
  • Mesaje: 3353
  • Reacții: 51115
  • Mesaje utile: 33
  • Status: Pe aici.. 🤠
  • Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Contact:
    Avatar utilizator
    Administrator
    Administrator

    Mesaj de [HF]White »

    Muskito667 scrie: Pe Ikarus cel de pe net se poate face dupe usor la fortare cu login key pentru a trece rapid de pe un core pe altul, eu l-am cumparat cand la lansat si insusi Ikarus dupa instalare mi-a adaugat cate ceva care in versiunea free de pe net nu se gaseste nici la ora actuala, nu vorbim de patch-urile by default, are un .bat care iti modifica si adauga automat codul de la sistem in fisierele server-ului, dar dupa cand am crezut ca am terminat instalarea a mai durat 30-35 minute in care se vedea clar ca adauga cod nou in partile sistemului, presupun ca a fost metoda lui pentru a evita leak-urile la sistem, este 100% stabil odata facuta instalarea a testat el insusi relogic cu login key pe alt core si cu multiple conturi ca sa-si/sa-mi demonstreze ca sistemul era 100% functional si nu avea nici un dupe descoperit si/sau exploatabil in momentul acela, vorbim de 1/2 anisori cred. Am incercat si eu versiunea de pe net si este ceea ce el vinde doar ca in partea originala eu am mult mai mult cod in define-urile lui decat in cel de pe net, si am presupus ca este de la patchuri dar ghici ce nu de acolo era codul in plus. Arata super la design spor cu el :)
    Bagi Ikarus V1 si iei fixurile din Sinners2 si ai cel mai bun shop offline free.
    Te asteptam si pe serverul de Discord :p - aici ne-am strans toata comunitatea de Metin2 din Romania.
    Link: https://discord.gg/jWxeDSf7HP

    Suntem peste 1700 membri! - Avem chat activ zilnic, support, cereri, resurse. :D :ymcowboy:




    See full signature
  • Mesaje: 92
  • Reacții: 102
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Shinsoo
  • Medalii

    Mesaj de DEVE »

    Muskito667 scrie: Pe Ikarus cel de pe net se poate face dupe usor la fortare cu login key pentru a trece rapid de pe un core pe altul, eu l-am cumparat cand la lansat si insusi Ikarus dupa instalare mi-a adaugat cate ceva care in versiunea free de pe net nu se gaseste nici la ora actuala, nu vorbim de patch-urile by default, are un .bat care iti modifica si adauga automat codul de la sistem in fisierele server-ului, dar dupa cand am crezut ca am terminat instalarea a mai durat 30-35 minute in care se vedea clar ca adauga cod nou in partile sistemului, presupun ca a fost metoda lui pentru a evita leak-urile la sistem, este 100% stabil odata facuta instalarea a testat el insusi relogic cu login key pe alt core si cu multiple conturi ca sa-si/sa-mi demonstreze ca sistemul era 100% functional si nu avea nici un dupe descoperit si/sau exploatabil in momentul acela, vorbim de 1/2 anisori cred. Am incercat si eu versiunea de pe net si este ceea ce el vinde doar ca in partea originala eu am mult mai mult cod in define-urile lui decat in cel de pe net, si am presupus ca este de la patchuri dar ghici ce nu de acolo era codul in plus. Arata super la design spor cu el :)
    Este FIX la loginkey pe net. Am dat copy ca la prosti si pus paste aici, ca e greu de cautat.



    As you probably know, there's an exploit that players use to change channels by abusing the LoginByKey function (a hack function). This function lacks any limitations, any connection can use it at any time. When combined with poorly written systems, it can be used to duplicate items or yang.

    I have already shared the fix privately with many people. At one point, someone even posted it on a forum, but it appears that the content has since been deleted. I’ve now been informed that this same user is selling the “fix”, despite the fact that it isn’t even theirs.

    The fix isn’t perfect, but it works. Essentially, it ensures that only players with a valid logout can use LoginByKey, as it should be.

    // common/tables.h
    // 1. Search:
    typedef struct SLogoutPacket
    {
    char login[LOGIN_MAX_LEN + 1];
    char passwd[PASSWD_MAX_LEN + 1];
    } TLogoutPacket;

    // 1. Replace with:
    typedef struct SLogoutPacket
    {
    char login[LOGIN_MAX_LEN + 1];
    char passwd[PASSWD_MAX_LEN + 1];
    bool bCanUseLoginByKey;
    } TLogoutPacket;




    // db/ClientManagerLogin.cpp
    // 1. Search: (void CClientManager::QUERY_LOGIN_BY_KEY)
    if (memcmp(pkLoginData->GetClientKey(), p->adwClientKey, sizeof(DWORD) * 4))
    {
    const DWORD* pdwClientKey = pkLoginData->GetClientKey();
    sys_log(0, "LOGIN_BY_KEY client key differ %s %lu %lu %lu %lu, %lu %lu %lu %lu", r.login, p->adwClientKey[0], p->adwClientKey[1], p->adwClientKey[2], p->adwClientKey[3], pdwClientKey[0], pdwClientKey[1], pdwClientKey[2], pdwClientKey[3]);
    pkPeer->EncodeReturn(HEADER_DG_LOGIN_NOT_EXIST, dwHandle);
    return;
    }

    // 1. Add after:
    if (!pkLoginData->IsAllowLoginByKey())
    {
    sys_err("LOGIN_BY_KEY without request %s", r.login); // To track them down
    sys_log(0, "LOGIN_BY_KEY without request %s %lu", r.login, p->dwLoginKey);
    TPacketDGLoginAlready ptog;
    strlcpy(ptog.szLogin, szLogin, sizeof(ptog.szLogin));
    pkPeer->EncodeHeader(HEADER_DG_LOGIN_ALREADY, dwHandle, sizeof(TPacketDGLoginAlready));
    pkPeer->Encode(&ptog, sizeof(TPacketDGLoginAlready));
    return;
    }

    pkLoginData->SetAllowLoginByKey(false);

    // db/ClientManagerLogin.cpp
    // 2. Search: (void CClientManager::QUERY_LOGOUT)
    CLoginData* pLoginData = GetLoginDataByLogin(packet->login);
    if (pLoginData == NULL)
    return;

    // 2. Add after:
    pLoginData->SetAllowLoginByKey(packet->bCanUseLoginByKey);



    // db/LoginData.cpp
    // 1. Inside constructor add: (CLoginData::CLoginData())
    m_bAllowLoginByKey = true; // We allow loginByKey by default (so the first login doesn't fail)


    // db/LoginData.h
    // 1. Add:
    public:
    bool IsAllowLoginByKey() const { return m_bAllowLoginByKey; }
    void SetAllowLoginByKey(bool bFlag) { m_bAllowLoginByKey = bFlag; }

    private:
    bool m_bAllowLoginByKey;



    // game/char.cpp
    // 1. Somwhere inside void CHARACTER::Initialize() add:
    m_bCanUseLoginByKey = false;


    // 2. Inside your warp functions search: (WarpSet, ChangeChannel, etc)
    Stop();
    Save();

    // 2. Add before that:
    m_bCanUseLoginByKey = true;


    // game/char.h
    // 1. Add:
    public:
    bool CanUseLoginByKey() const { return m_bCanUseLoginByKey; }

    protected:
    bool m_bCanUseLoginByKey;



    // game/desc.cpp
    // 1. Search: (void DESC::Destroy())
    if (m_lpCharacter)
    {
    m_lpCharacter->Disconnect("DESC::~DESC");
    m_lpCharacter = NULL;
    }

    // 1. Replace with:
    bool bCanUseLoginByKey = true;

    if (m_lpCharacter)
    {
    bCanUseLoginByKey = m_lpCharacter->CanUseLoginByKey();

    m_lpCharacter->Disconnect("DESC::~DESC");
    m_lpCharacter = NULL;
    }


    // game/desc.cpp
    // 2. Search: (void DESC::Destroy())
    if (!g_bAuthServer)
    {
    if (m_accountTable.login[0] && m_accountTable.passwd[0])
    {
    TLogoutPacket pack;

    strlcpy(pack.login, m_accountTable.login, sizeof(pack.login));
    strlcpy(pack.passwd, m_accountTable.passwd, sizeof(pack.passwd));

    db_clientdesc->DBPacket(HEADER_GD_LOGOUT, m_dwHandle, &pack, sizeof(TLogoutPacket));
    }
    }

    // 2. Change it like this:
    if (!g_bAuthServer)
    {
    if (m_accountTable.login[0] && m_accountTable.passwd[0])
    {
    TLogoutPacket pack;

    strlcpy(pack.login, m_accountTable.login, sizeof(pack.login));
    strlcpy(pack.passwd, m_accountTable.passwd, sizeof(pack.passwd));
    pack.bCanUseLoginByKey = bCanUseLoginByKey;

    db_clientdesc->DBPacket(HEADER_GD_LOGOUT, m_dwHandle, &pack, sizeof(TLogoutPacket));
    }
    }



    // game/input_db.cpp
    // 1. Search: (void CInputDB::LoginSuccess)
    if (!d)
    {
    sys_log(0, "CInputDB::LoginSuccess - cannot find handle [%s]", pTab->login);

    TLogoutPacket pack;

    strlcpy(pack.login, pTab->login, sizeof(pack.login));
    db_clientdesc->DBPacket(HEADER_GD_LOGOUT, dwHandle, &pack, sizeof(pack));
    return;
    }

    if (strcmp(pTab->status, "OK"))
    {
    sys_log(0, "CInputDB::LoginSuccess - status[%s] is not OK [%s]", pTab->status, pTab->login);

    TLogoutPacket pack;

    strlcpy(pack.login, pTab->login, sizeof(pack.login));
    db_clientdesc->DBPacket(HEADER_GD_LOGOUT, dwHandle, &pack, sizeof(pack));

    LoginFailure(d, pTab->status);
    return;
    }

    // 1. Replace with:
    if (!d)
    {
    sys_log(0, "CInputDB::LoginSuccess - cannot find handle [%s]", pTab->login);

    TLogoutPacket pack;

    strlcpy(pack.login, pTab->login, sizeof(pack.login));
    pack.bCanUseLoginByKey = false;
    db_clientdesc->DBPacket(HEADER_GD_LOGOUT, dwHandle, &pack, sizeof(pack));
    return;
    }

    if (strcmp(pTab->status, "OK"))
    {
    sys_log(0, "CInputDB::LoginSuccess - status[%s] is not OK [%s]", pTab->status, pTab->login);

    TLogoutPacket pack;

    strlcpy(pack.login, pTab->login, sizeof(pack.login));
    pack.bCanUseLoginByKey = false;
    db_clientdesc->DBPacket(HEADER_GD_LOGOUT, dwHandle, &pack, sizeof(pack));

    LoginFailure(d, pTab->status);
    return;
    }




    📢 Resurse Metin2 Premium!

    Zeci de resurse Metin2 Premium - exclusive și 100% funcționale începând cu 15.99€!.

    Vezi resursele Cumpără premium
    Premium
    Premium
    Anunț
    Scrie răspuns

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra sau conecta rapid utilizând contul tău de Discord, Github sau Google.

    Înregistrare

    Autentifică-te

    Înapoi la “Proiecte personale”

    Informații

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

    Discord ID copiat: