Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
dorian

anti cheat 2.4.3

Recommended Posts

zdravim hľadám anti cheat na oregon core 2.4.3 mam iba pochybného wardena ale ani ten nefunguje tu som to myslím nikde nenašiel ak by niekto vedel pomocť ako na to bol by som rád

Share this post


Link to post
Share on other sites

- na stranke OC projektu toho maš dosť... >>>TU<<<

super dík moc už by som len úptreboval trošku pomôcť kam to mám dať stačí si to stiahnuť ako .txt súbor a pridať do /wow/oregoncore/ a zkompilovať alebo sa to nejako inač aplikuje ?

Share this post


Link to post
Share on other sites

no je fakt super jak je to tam rozpísané čo to je načo to slúži a podobné vecičky ale nejako som z toho nevyčítal ako to spojím so serverom :blushing:

Share this post


Link to post
Share on other sites

Nauč se používat repozitář a diff (patch) soubory. Co jinýho ti na to mám říct? Jde to i ručně, když máš trpělivost.

  • Upvote 1

Share this post


Link to post
Share on other sites

našiel som na OC webe ešte jednu zaujimavu vec vraj je to upravený warden.cpp ktorý chráni pred emu hackerom aj maelstormom myslíte že to bude fungovať ?

+ stačilo by tento kód pridať do /src/game/WardenWin.cpp ako je napísané v kóde alebo k tomu bude ešte niečo potreba napr. do ScriptLoader.cpp ?

 

diff --git a/src/game/WardenWin.cpp b/src/game/WardenWin.cpp

--- a/src/game/WardenWin.cpp

+++ b/src/game/WardenWin.cpp

@@ -1,8 +1,6 @@

/*

- * Copyright © 2010-2012 OregonCore <http: www.oregoncore.com="">

- * Copyright © 2008-2012 TrinityCore <http: www.trinitycore.org="">

- * Copyright © 2005-2012 MaNGOS <http: getmangos.com="">

- *

+ * Copyright © 2011-2012 BlizzLikeCore <http: blizzlike.servegame.com="">

+ * Please, read the credits file.

* This program is free software; you can redistribute it and/or modify it

* under the terms of the GNU General Public License as published by the

* Free Software Foundation; either version 2 of the License, or (at your

@@ -22,6 +20,7 @@

#include "Common.h"

#include "WorldPacket.h"

#include "WorldSession.h"

+#include "Language.h"

#include "Log.h"

#include "Opcodes.h"

#include "ByteBuffer.h"

@@ -34,6 +33,7 @@

#include "WardenWin.h"

#include "WardenModuleWin.h"

#include "WardenDataStorage.h"

+#include "AccountMgr.h"

CWardenDataStorage WardenDataStorage;

@@ -65,16 +65,16 @@

iCrypto.Init(InputKey);

oCrypto.Init(OutputKey);

- sLog.outDebug("Server side warden for client %u initializing...", pClient->GetAccountId());

- sLog.outDebug(" C->S Key: %s", ByteArrayToHexStr(InputKey, 16).c_str());

- sLog.outDebug(" S->C Key: %s", ByteArrayToHexStr(OutputKey, 16).c_str());

- sLog.outDebug(" Seed: %s", ByteArrayToHexStr(Seed, 16).c_str());

- sLog.outDebug("Loading Module...");

+ sLog.outDebug("WARDEN Server side warden for client %u initializing...", pClient->GetAccountId());

+ sLog.outDebug("WARDEN C->S Key: %s", ByteArrayToHexStr(InputKey, 16).c_str());

+ sLog.outDebug("WARDEN S->C Key: %s", ByteArrayToHexStr(OutputKey, 16).c_str());

+ sLog.outDebug("WARDEN Seed: %s", ByteArrayToHexStr(Seed, 16).c_str());

+ sLog.outDebug("WARDEN Loading Module...");

Module = GetModuleForClient(Client);

- sLog.outDebug(" Module Key: %s", ByteArrayToHexStr(Module->Key, 16).c_str());

- sLog.outDebug(" Module ID: %s", ByteArrayToHexStr(Module->ID, 16).c_str());

+ sLog.outDebug("WARDEN Module Key: %s", ByteArrayToHexStr(Module->Key, 16).c_str());

+ sLog.outDebug("WARDEN Module ID: %s", ByteArrayToHexStr(Module->ID, 16).c_str());

RequestModule();

}

@@ -101,7 +101,7 @@

void WardenWin::InitializeModule()

{

- sLog.outDebug("Initialize module");

+ sLog.outDebug("WARDEN Initialize module");

// Create packet structure

WardenInitModuleRequest Request;

@@ -145,7 +145,7 @@

void WardenWin::RequestHash()

{

- sLog.outDebug("Request hash");

+ sLog.outDebug("WARDEN Request hash");

// Create packet structure

WardenHashRequest Request;

@@ -169,13 +169,12 @@

// verify key not equal kick player

if (memcmp(buff.contents() + 1, validHash, sizeof(validHash)) != 0)

{

- sLog.outWarden("Request hash reply: failed");

- if (sWorld.getConfig(CONFIG_WARDEN_KICK))

- Client->KickPlayer();

+ sLog.outWarden("WARDEN Request hash reply: failed");

+ Client->KickPlayer();

return;

}

- sLog.outDebug("Request hash reply: succeed");

+ sLog.outDebug("WARDEN Request hash reply: succeed");

// client 7F96EEFDA5B63D20A4DF8E00CBF48304

const uint8 client_key[16] = { 0x7F, 0x96, 0xEE, 0xFD, 0xA5, 0xB6, 0x3D, 0x20, 0xA4, 0xDF, 0x8E, 0x00, 0xCB, 0xF4, 0x83, 0x04 };

@@ -197,7 +196,7 @@

void WardenWin::RequestData()

{

- sLog.outDebug("Request data");

+ sLog.outDebug("WARDEN Request data");

if (MemCheck.empty())

MemCheck.assign(WardenDataStorage.MemCheckIds.begin(), WardenDataStorage.MemCheckIds.end());

@@ -329,7 +328,7 @@

void WardenWin::HandleData(ByteBuffer &buff)

{

- sLog.outDebug("Handle data");

+ sLog.outDebug("WARDEN Handle data");

m_WardenDataSent = false;

m_WardenKickTimer = 0;

@@ -342,8 +341,7 @@

if (!IsValidCheckSum(Checksum, buff.contents() + buff.rpos(), Length))

{

buff.rpos(buff.wpos());

- if (sWorld.getConfig(CONFIG_WARDEN_KICK))

- Client->KickPlayer();

+ Client->KickPlayer();

return;

}

@@ -356,7 +354,7 @@

// TODO: test it.

if (result == 0x00)

{

- sLog.outWarden("TIMING CHECK FAIL result 0x00");

+ sLog.outWarden("WARDEN TIMING CHECK FAIL result 0x00");

found = true;

}

@@ -366,10 +364,10 @@

uint32 ticksNow = getMSTime();

uint32 ourTicks = newClientTicks + (ticksNow - ServerTicks);

- sLog.outDebug("ServerTicks %u", ticksNow); // now

- sLog.outDebug("RequestTicks %u", ServerTicks); // at request

- sLog.outDebug("Ticks %u", newClientTicks); // at response

- sLog.outDebug("Ticks diff %u", ourTicks - newClientTicks);

+ sLog.outDebug("WARDEN ServerTicks %u", ticksNow); // now

+ sLog.outDebug("WARDEN RequestTicks %u", ServerTicks); // at request

+ sLog.outDebug("WARDEN Ticks %u", newClientTicks); // at response

+ sLog.outDebug("WARDEN Ticks diff %u", ourTicks - newClientTicks);

}

WardenDataResult *rs;

@@ -389,23 +387,18 @@

uint8 Mem_Result;

buff >> Mem_Result;

- if (Mem_Result != 0)

+ if (Mem_Result == 0) // MEM_CHECK is 0x00

{

- sLog.outWarden("RESULT MEM_CHECK not 0x00, CheckId %u account Id %u", rd->id, Client->GetAccountId());

- found = true;

- continue;

+ if (memcmp(buff.contents() + buff.rpos(), rs->res.AsByteArray(0, false), rd->Length) != 0)

+ {

+ sLog.outWarden("WARDEN MEM_CHECK fail CheckId %u account Id %u", rd->id, Client->GetAccountId());

+ found = true;

+ buff.rpos(buff.rpos() + rd->Length);

+ continue;

+ }

}

-

- if (memcmp(buff.contents() + buff.rpos(), rs->res.AsByteArray(0, false), rd->Length) != 0)

- {

- sLog.outWarden("RESULT MEM_CHECK fail CheckId %u account Id %u", rd->id, Client->GetAccountId());

- found = true;

- buff.rpos(buff.rpos() + rd->Length);

- continue;

- }

-

buff.rpos(buff.rpos() + rd->Length);

- sLog.outDebug("RESULT MEM_CHECK passed CheckId %u account Id %u", rd->id, Client->GetAccountId());

+ sLog.outDebug("WARDEN MEM_CHECK passed CheckId %u account Id %u", rd->id, Client->GetAccountId());

break;

}

case PAGE_CHECK_A:

@@ -417,11 +410,11 @@

if (memcmp(buff.contents() + buff.rpos(), &byte, sizeof(uint8)) != 0)

{

if (type == PAGE_CHECK_A || type == PAGE_CHECK_ B)/>

- sLog.outWarden("RESULT PAGE_CHECK fail, CheckId %u account Id %u", rd->id, Client->GetAccountId());

+ sLog.outWarden("WARDEN PAGE_CHECK fail, CheckId %u account Id %u", rd->id, Client->GetAccountId());

if (type == MODULE_CHECK)

- sLog.outWarden("RESULT MODULE_CHECK fail, CheckId %u account Id %u", rd->id, Client->GetAccountId());

+ sLog.outWarden("WARDEN MODULE_CHECK fail, CheckId %u account Id %u", rd->id, Client->GetAccountId());

if (type == DRIVER_CHECK)

- sLog.outWarden("RESULT DRIVER_CHECK fail, CheckId %u account Id %u", rd->id, Client->GetAccountId());

+ sLog.outWarden("WARDEN DRIVER_CHECK fail, CheckId %u account Id %u", rd->id, Client->GetAccountId());

found = true;

buff.rpos(buff.rpos() + 1);

continue;

@@ -429,11 +422,11 @@

buff.rpos(buff.rpos() + 1);

if (type == PAGE_CHECK_A || type == PAGE_CHECK_ B)/>

- sLog.outDebug("RESULT PAGE_CHECK passed CheckId %u account Id %u", rd->id, Client->GetAccountId());

+ sLog.outDebug("WARDEN PAGE_CHECK passed CheckId %u account Id %u", rd->id, Client->GetAccountId());

else if (type == MODULE_CHECK)

- sLog.outDebug("RESULT MODULE_CHECK passed CheckId %u account Id %u", rd->id, Client->GetAccountId());

+ sLog.outDebug("WARDEN MODULE_CHECK passed CheckId %u account Id %u", rd->id, Client->GetAccountId());

else if (type == DRIVER_CHECK)

- sLog.outDebug("RESULT DRIVER_CHECK passed CheckId %u account Id %u", rd->id, Client->GetAccountId());

+ sLog.outDebug("WARDEN DRIVER_CHECK passed CheckId %u account Id %u", rd->id, Client->GetAccountId());

break;

}

case LUA_STR_CHECK:

@@ -443,7 +436,7 @@

if (Lua_Result != 0)

{

- sLog.outWarden("RESULT LUA_STR_CHECK fail, CheckId %u account Id %u", rd->id, Client->GetAccountId());

+ sLog.outWarden("WARDEN LUA_STR_CHECK fail, CheckId %u account Id %u", rd->id, Client->GetAccountId());

found = true;

continue;

}

@@ -456,11 +449,11 @@

char *str = new char[luaStrLen + 1];

memset(str, 0, luaStrLen + 1);

memcpy(str, buff.contents() + buff.rpos(), luaStrLen);

- sLog.outDebug("Lua string: %s", str);

+ sLog.outDebug("WARDEN Lua string: %s", str);

delete[] str;

}

buff.rpos(buff.rpos() + luaStrLen); // skip string

- sLog.outDebug("RESULT LUA_STR_CHECK passed, CheckId %u account Id %u", rd->id, Client->GetAccountId());

+ sLog.outDebug("WARDEN LUA_STR_CHECK passed, CheckId %u account Id %u", rd->id, Client->GetAccountId());

break;

}

case MPQ_CHECK:

@@ -470,21 +463,21 @@

if (Mpq_Result != 0)

{

- sLog.outWarden("RESULT MPQ_CHECK not 0x00 account id %u", Client->GetAccountId());

+ sLog.outWarden("WARDEN MPQ_CHECK not 0x00 account id %u", Client->GetAccountId());

found = true;

continue;

}

if (memcmp(buff.contents() + buff.rpos(), rs->res.AsByteArray(0), 20) != 0) // SHA1

{

- sLog.outWarden("RESULT MPQ_CHECK fail, CheckId %u account Id %u", rd->id, Client->GetAccountId());

+ sLog.outWarden("WARDEN MPQ_CHECK fail, CheckId %u account Id %u", rd->id, Client->GetAccountId());

found = true;

buff.rpos(buff.rpos() + 20); // 20 bytes SHA1

continue;

}

buff.rpos(buff.rpos() + 20); // 20 bytes SHA1

- sLog.outDebug("RESULT MPQ_CHECK passed, CheckId %u account Id %u", rd->id, Client->GetAccountId());

+ sLog.outDebug("WARDEN MPQ_CHECK passed, CheckId %u account Id %u", rd->id, Client->GetAccountId());

break;

}

default: // should never happens

@@ -492,6 +485,23 @@

}

}

- if (found && sWorld.getConfig(CONFIG_WARDEN_KICK))

- Client->KickPlayer();

+ if (found)

+ {

+ std::string accountName;

+ AccountMgr::GetName(Client->GetAccountId(), accountName);

+ sWorld.SendGMText(LANG_GM_WARDEN_ANNOUNCE, accountName.c_str());

+ switch (sWorld.getConfig(CONFIG_WARDEN_ACTION))

+ {

+ case 1:

+ Client->KickPlayer();

+ sWorld.SendGMText(LANG_GM_WARDEN_KICK_ANNOUNCE, accountName.c_str());

+ break;

+ case 2:

+ std::stringstream duration;

+ duration << sWorld.getConfig(CONFIG_WARDEN_BAN_DURATION) << "s";

+ sWorld.BanAccount(BAN_ACCOUNT, accountName, duration.str(), "Cheat","WAC");

+ sWorld.SendGMText(LANG_GM_WARDEN_BAN_ANNOUNCE, accountName.c_str());

+ break;

+ }

+ }

}

 

Edited by dorian

Share this post


Link to post
Share on other sites

Tak znovu. Toto je soubor diffu, popisuje co je kde třeba přidat a co smazat. Není to soubor zdrojového kódu. Tohle nezkompiluješ. Nevím jak ti to už napsat, abys to pochopil.

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

ok v pohode len som sa opýtal nebol som si istý nestačilo by len napísať postup ako sa to aplikuje ? nechcem stránky o tom čo to je kto to vymyslel kedy kde história využitie a kopu iných vecí potrebujem len postup ako spustím .diff súbor anticheat na wow server

Share this post


Link to post
Share on other sites

Boha jeho... Už vážně nevím jak s tebou mám komunikovat, abys to pobral.

Takže naposledy: http://wiki.wowresou...ch_s%C3%BAborov

 

PS: To je pouze jedna z možností; patch (diff) lze aplikovat přímo do repozitáře. Ale to bys nesměl bejt línej si o tom něco přečíst. :diablo: (například ZDE - "Aplikace .patch souboru")

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×