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  
lolee

WPE ? Ano nebo ne.

Recommended Posts

Zdravím uživatele Wowresource.

 

Jak už jde z názvu poznat , tento topic by byl spíš informativní a to ohledně WPE pro.

 

Samozřejmě o WPE už nějakou dobu vím , ale nebyl jsem si úplně jistý co všechno editování packetů a tvoření filtrů obnáší.

Nedávno jsem byl svědkem velice impozantních věcí které tato činnost umožňuje a jelikož jsem rád pánem situace , rozhodl jsem se pro tvorbu něco udělat.

Nechápejte mě jako dalšího rádoby "playera" který si jen snaží ulehčit hru..opravdu mě to zajímá.

 

 

 

Chtěl bych se zeptat jak to je v dnešní době s WPE :

- Má cenu začínat se studiem ?

- Jak to vypadá ze strany omezení za tu dobu co se core a wardeny zlepšují ?

- Pokud by to nějaký smysl mělo , kde začít ? (Samozřejmě mi je jasné , že se spíše něco naučím na mezinárodním fóru než někde na CZ/SK scéně)

- Jak dlouho je potřeba do studia investovat času? Za předpokladu , že jsem opravdu chápavý a rychle učící člověk ?

- Je potřeba znát jiné jazyky (HTML , HTML5 , PHP , C++ , C# , SQL etc.) ?

- Tvorba Hex kódů , máte nějaký web který extractne normální např. ID do hexu ? Nebo na to je jiný fígl ?

 

Děkuji za všechny rady které mi můžete dát.

Share this post


Link to post
Share on other sites

na prevod cisel do hexu ti stačí kalkulačka ktorú ma každy PC :D

 

Ano , tohle mi bylo řečeno , ale nějak mi to smrdělo :D jak se říká .. jistoty není nikdy dost.

Share this post


Link to post
Share on other sites

Nejdřív si musíš uvědomit, že WPE není žádný hack, to je jen primitivní nástroj, tam se nemáš co učit... Prostě jen modifikuješ packety, místo toho čísla, tam dáš jiné a to je vše co o WPE potřebuješ vědět.

 

Všechny filtry vznikly tak, že si autor pročetl zdrojové kódy emulátoru a našel tam neošetřenou podmínku. Respektive programátor neošetřil situaci, kterou klient vyvolat nedokáže ale neuvědomil si, že nemusí dostat jen packety vygenerované WoW klientem. Je to prakticky samý princip jako SQL injection.

 

Takže jediné co potřebuješ je zdrojový kód emulátoru, low-level znalosti komunikace, znalost WoW klienta (jaké packety generuje, to se můžeš naučit zpětně ze zdrojáků emulátoru či je odposlouchat), dávku štěstí a spoustu času...

 

Z mojeho hlediska to moc smysl nemá, protože čekat až udělá programátor chybu a půjde nějak zneužít je nuda... V případě aktivně vyvíjených emulátorů jako je TrinityCore je poměrně nemožné něčeho podobného docílit, protože do kódu kouká hodně lidí a šance, že všichni bezpečnostní díru přehlédnou je minimální. Navíc si ještě musíš uvědomit, že když chybu neviděl autor, tak jí nejspíš neuvidíš ani ty... Každopádně předpoklad je takový, že emulátor budeš znát lépe než ti co ho píšou, což je prostě jinej level programování a to většina lidí nedokáže.

 

Nevím, zda by se to dalo vůbec učit cíleně. Osobně si nemyslím, že autor nějakého WPE filtru byl vyloženě "hacker". To byl spíš programátor, co sledoval vývoj emulátor a shodou náhod na něco narazil. Potom začal hledat podobné záležitosti i jinde a tak vznikla série funkčních filtrů... Celkově každý hacker musí být velmi dobrý programátor a musí znát konkrétní odvětví jako svoje boty, protože když nechápeš jak něco funguje, tak těžko můžeš hledat kde to má chyby. Což je samozřejmě strašně časově náročné, protože zkušenosti nenabudeš za týden... Musíš s tím pracovat měsíce, roky, ...

Edited by Tomáš Kolinger

Share this post


Link to post
Share on other sites

Nejdřív si musíš uvědomit, že WPE není žádný hack, to je jen primitivní nástroj, tam se nemáš co učit... Prostě jen modifikuješ packety, místo toho čísla, tam dáš jiné a to je vše co o WPE potřebuejš vědět.

 

Všechny filtry vznikly tak, že si autor pročetl zdrojové kódy emulátoru a našel tam neošetřenou podmínku. Respektive programátor neošetřil situaci, kterou klient vyvolat nedokáže ale neuvědomil si, že nemusí dostat jen packety vygenerované WoW klientem. Je to prakticky samý princip jako SQL injection.

 

Takže jediné co potřebuješ je zdrojový kód emulátoru, low-level znalosti komunikace, znalost WoW klienta (jaké packety generuje, to se můžeš naučit zpětně ze zdrojáků emulátoru či je odposlouchat), dávku štěstí a spoustu času...

 

Z mojeho hlediska to moc smysl nemá, protože čekat až udělá programátor chybu, nikdo si jí nevšimne a půjde nějak zneužít je nuda... V případě aktivně vyvíjených emulátorů jako je TrinityCore je poměrně nemožné něčeho podobného docílit, protože do kódu kouká hodně lidí a šance, že všichni bezpečnostní díru přehlédnou je minimální. Navíc si ještě musíš uvědomit, že když chybu neviděl autor, tak jí nejspíš neuvidíš ani ty...

 

Nevím, zda by se to dalo vůbec učit cíleně. Osobně si nemyslím, že autor nějakého WPE filtru byl vyloženě "hacker". To byl spíš programátor, co sledoval vývoj emulátor a shodou náhod na něco narazil. Potom začal hledat podobné záležitosti i jinde a tak vznikla série funkčních filtrů... Celkově každý hacker musí být velmi dobrý programátor a musí znát konkrétní odvětví jako svoje boty, protože když nechápeš jak něco funguje, tak těžko můžeš hledat kde mohl autor udělat chybu.

Ano , jsem si určitě vědom , že WPE není hack jako takový .. ale spíš "vychcanost" lidí.

 

Takže v souhrnu to je jen "studování" zdrojáků a metoda na "pokus omyl" ?

 

Pokud vím , ne každý kdo tvoří projecty má čas na upgrade Core z důvodu časté odstávky etc. (Např. Project-nemesis)...tím myslím , že je možnost pokud server jede na starším core využít starších filtrů nebo si vytvořit na stejnou "díru" vlastní ? Nebo , pokud ještě preferuji starší Datadisky (Vanilla , TBC) kde se už skoro core nevyvíjí využít stávajících děr ?

 

Je nejaké specifické forum (nemusí být CZ/SK) které tyto věci sleduje a informuje o tom veřejnost ?

Edited by lolee

Share this post


Link to post
Share on other sites

Děravý core byly když se s emulací více-méně začínalo. Dneska má každý emulátor (včetně 1.x, 2.x patche) vše opraveno... Jak se nějaký exploit našel, tak se to do pár dnů fixnulo a všichni to přeportovali do svého emulátoru. Takže ti starý filter fungovat nebude. Můžeš jen doufat, že narazíš na nějakou novou chybu. Největší pravděpodobnost bezpečnostních děr je u serverů, kde se do core hrabou amatéři, kteří přistupujou k programování jakože "tento kód dělá asi takto, tak ho sem okopčím"... Tam ale zase nevidíš zdrojáky, takže seš zkrátka slepý a stejně prd zmůžeš.

 

Žádné takové fórum existovat nebude. Maximálně sekce pro WPE, třeba na owne3d core a tak... Ale i to je více-méně dead, protože nic nového nevzniká. Emulátory jsou holt kvalitnější. Navíc tady máš wardena, který tomuhle předchází a pokud v tvé paměti najde injectnutý WPE, tak tě kickne/zabanuje. V případě TBC je warden k ničemu, takže tam se toho bát nemusíš ale v případě 3.x či novějšího patche se už detekuje ledacos. Což je další překážka, i když chybu najdeš, tak tě zabanuje podobná pasivní ochrana a je ti to k prdu.

 

Metoda pokus/omyl určitě ne. To je taktika lidí, co tomu nerozumí. Pokud tomu rozumět budeš a chybu najdeš, tak nemusíš nic zkoušet. Prostě si na to uděláš filter a to je celé.

Edited by Tomáš Kolinger

Share this post


Link to post
Share on other sites

Dobrá , myslím že je to asi většina toho co potřebuji vědět .. děkuji za užitečné informace.

 

Samozřejmě pokud by měl někdo další něco na srdci , rád se přiučím . ;)

Share this post


Link to post
Share on other sites

deravy je to furt ale veci kterejch s tim muzes docilit uz moc neni :-)

warden si proti tomu neskrtne pokud clovek vi co dela (kvuli duvodum co tu nebudu rozepisovat)

 

prijit na novy moznosti lze analyzou komunikace mezi serverem a klientem treba pomoci https://github.com/T.../commits/master a https://github.com/A...s/SzimatSzatyor

 

jak pro predstavu vypada takova komunikace mezi klientem a serverem:

 

http://pastebin.com/VD63yYAZ (uz rozparsovana cast jsou videt jednotlivy idcka apod)

 

komunikace bez vyparsovani vypada nejak takhle

 

Packet type: SMSG, Opcode: 0x2C14, Packet size: 284 bytes
Timestamp: 1390264798, Date: 2014. 01. 21. - 01:39:58
|--------|-------------------------------------------------|---------------------------------|
|		| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0 1 2 3 4 5 6 7 8 9 A B C D E F |
|--------|-------------------------------------------------|---------------------------------|
| 0x0001 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x0011 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x0021 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x0031 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x0041 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x0051 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x0061 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x0071 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x0081 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x0091 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x00A1 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x00B1 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x00C1 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x00D1 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x00E1 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x00F1 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x0101 | 02 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00 | . . . . . . . . . . . . . . . . |
| 0x0111 | 02 01 00 00 00 00 00 00 00 00 00 00			 | . . . . . . . . . . . .		 |
|--------|-------------------------------------------------|---------------------------------|
|		| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0 1 2 3 4 5 6 7 8 9 A B C D E F |
|--------|-------------------------------------------------|---------------------------------|

Packet type: SMSG, Opcode: 0x2734, Packet size: 4 bytes
Timestamp: 1390264798, Date: 2014. 01. 21. - 01:39:58
|--------|-------------------------------------------------|---------------------------------|
|		| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0 1 2 3 4 5 6 7 8 9 A B C D E F |
|--------|-------------------------------------------------|---------------------------------|
| 0x0001 | 30 00 00 00									 | 0 . . .						 |
|--------|-------------------------------------------------|---------------------------------|
|		| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0 1 2 3 4 5 6 7 8 9 A B C D E F |
|--------|-------------------------------------------------|---------------------------------|

 

 

 

SMSG se posila od serveru ke klientovi to te skoro nemusi zajimat protoze do toho nemuzes zasahovat (maximalne to muzes zmenit pred prichodem do klienta ale to neudela nic zajimavyho)

CMSG se posila od klienta serveru (to jsou baliky ktery te zajimaj pro manipulaci)

 

jako spravnyho hackera te zajimaj jen nektery CMSG placnu treba

 

ClientToServer: CMSG_USE_ITEM (0x2C06) Length: 24 ConnectionIndex: 0 Time: 01/21/2014 00:40:14.000 Number: 299
Bag: -1
Slot: 25
Cast Count: 2
Spell ID: 6262
GUID: Full: 0x4000000000254065 Type: Item Low: 2441317
Glyph Index: 0
Cast Flags: None (0)
Target Flags: Self (0)

 

v tomhle odchozim packetu muzes zmenit misto ze kteryho se pouzil item na neexistujici v baglu a tim zpusobit nullpointer na serveru protoze na tom miste nenajde item (coz je samozrejme osetreny ale jen pro ukazku :D)

nebo zmenit idcko spellu (coz je taky osetreny) ve WPE takova manipulace vyzaduje znalost puvodniho paketu kterej vypadal takhle

 

 

Packet type: CMSG, Opcode: 0x2C06, Packet size: 24 bytes
Timestamp: 1390264814, Date: 2014. 01. 21. - 01:40:14
|--------|-------------------------------------------------|---------------------------------|
|		| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0 1 2 3 4 5 6 7 8 9 A B C D E F |
|--------|-------------------------------------------------|---------------------------------|
| 0x0001 | FF 19 02 76 18 00 00 65 40 25 00 00 00 00 40 00 | . . . v . . . e @ % . . . . @ . |
| 0x0011 | 00 00 00 00 00 00 00 00						 | . . . . . . . .				 |
|--------|-------------------------------------------------|---------------------------------|
|		| 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | 0 1 2 3 4 5 6 7 8 9 A B C D E F |
|--------|-------------------------------------------------|---------------------------------|

 

(a tak bys ho i videl ve WPE) no a pak uz jen staci nastudovat v kterej offset znaci kterou hodnotu

 

to jde bud delat drevacky tak ze si prevedes hodnoty na hex napr 6262 na 0x1876 coz nasledne hledas v paketu nebo se podivas do wowpackettraceru pripadne do emulatoru jak prichozi balik vyparsuje

naslednej WPE pro filtr proto bude hledat 0x1876 a nahrazovat to treba 0x1B9E

 

co by ale mohlo fungovat je zkusit zmenit target spellu ze self na nekoho okolo a tak mu dat za warlocka healthstone :D

 

pro zjisteni co jde a co ne staci pohledat v core pod prislusnou metodou co to zpracovava

 

void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket) tak se ale rychle dozvis ze

 

if (glyphIndex >= MAX_GLYPH_SLOT_INDEX)
{
	pUser->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL);
	return;
}

 

pro glypthindex nemuzes dat nic vyssiho nez MAX_GLYPH_SLOT_INDEX navic neni dal vyuzity

 

tahle cast kodu zas kontroluje jestli existuje slot a bagl ze kteryho se ten item pouziva takze tam ve wpecku taky nic moc nevymyslis (maximalne pouzijes jinej item nez na kterej si kliknul)

 

Item* pItem = pUser->GetUseableItemByPos(bagIndex, slot);
if (!pItem)
{
	pUser->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL);
	return;
}

 

stejne tak nemuzes pouzit item kterej nemas

 

if (pItem->GetGUID() != itemGUID)
{
	pUser->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL);
	return;
}

 

nemuzes pouzit nic jinyho nez consumables bandage a poisony (coz ti vicemene zabranuje snazit se pouzit treba lahvicku v arene

// only allow conjured consumable, bandage, poisons (all should have the 2^21 item flag set in DB)
if (proto->Class == ITEM_CLASS_CONSUMABLE && !(proto->Flags & ITEM_PROTO_FLAG_USEABLE_IN_ARENA) && pUser->InArena())
{
	pUser->SendEquipError(EQUIP_ERR_NOT_DURING_ARENA_MATCH, pItem, NULL);
	return;
}


// don't allow items banned in arena
if (proto->Flags & ITEM_PROTO_FLAG_NOT_USEABLE_IN_ARENA && pUser->InArena())
{
	pUser->SendEquipError(EQUIP_ERR_NOT_DURING_ARENA_MATCH, pItem, NULL);
	return;
}

 

 

navic dal v kodu se dozvis ze spellid na ktery sem mel zalusk na zmenu se od klienta vubec k nicemu nevyuzije a server misto toho pristoupi pres

 

   pUser->CastItemUseSpell(pItem, targets, castCount, glyphIndex);

 

a nacte si timpadem svoje interni IDcko takze WPE utok na ID spellu neni v tomhle pripade vubec moznej :) protoze server vycasti spell podle pozice z baglu a ne podle ID odeslanyho klientem

 

jaktovlastnevypada.png

 

tady je jak vypada "uspesnej" utok ve WPE - v zelenym ramecku je 24 bytes samotnyho paketu (pozor ve WPE pro se to takhle krasne nerozparsuje takze tam je branej i s hlavickou ktera ma 6bytes a ukazuje se delka 30 viz modry kolecka na obrazku)

ve fialovym ramecku je vyrobenej samotnej filtr kterej pri odeslani z klienta zmeni paket z 76 18 na 20 20 coz ve vysledku nema zadnej efekt ale funguje to :D

 

v cervenym ramecku je oznacena hlavicka paketu (ta je sifrovana nebo cosi takze je ve wpe kompletne necitelna musite uhodnout ktera CMSG to je :D)

 

PS: nabiram devy :D

PS2: kdyby tohle bylo pres caru tak to klidne zcenzurujte ale treba ho to privede na svetlou stranu sily :D

PS3: nekolik veci s wpe bude fungovat vzdycky hlavne z duvodu ze kontrolovat specificky veci (napr. interakci 2 spellu ktery bezne klient nepovoli) lze jen tezko odkontrolovat

PS4: pro inspiraci me napadnulo napr zablokovani SMSG s informaci o znehybneni postavy na coz klientovi vyusti v moznost pohybu etc...

PS5: ukazka byla provedena na 4.3.4 coz neni pro zacatecnika uplne idealni, lepsi je zacit na 2.4.3/1.12.1 kde je komunikace znacne jednodussi navic vas nezabanuje za 10sec warden

Edited by OneB1t
  • Upvote 3

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  

×