Trenér (hry) - Trainer (games)
Herní trenéři jsou programy vytvořené tak, aby upravovaly paměť počítačové hry a tím upravovaly její chování pomocí adres a hodnot, aby bylo možné podvádět. Může „zmrazit“ paměťovou adresu, což hře znemožní snížit nebo změnit informace uložené na této paměťové adrese (např. Měřič stavu, počítadlo munice atd.) Nebo manipulovat s daty na uvedených adresách paměti, aby vyhovovaly potřebám podvádějícího ve hře.
Dějiny
V osmdesátých a devadesátých letech byli trenéři obecně integrováni přímo do skutečné hry pomocí praskání skupin . Když byla hra poprvé spuštěna, trenér nejprve načetl a zeptal se hráče, zda si přáli podvádět a jaké podvody by chtěly být povoleny. Poté kód přejde ke skutečné hře. Tito vložení trenéři přišli s úvodem o skupinách vydávajících hru a trenér často předváděl dovednosti dovedností demo kódování praskající skupiny . Některé z těchto skupin se dnes plně soustředí na svou demoscénu . V seznamech a úvodních vydáních skupiny crackerů byly trénované hry označeny jedním nebo více znaménky plus, po každé pro každou možnost nebo podváděním v trenéru, například: „Mega Krew uvádí: paní Astro Chicken ++ “ . Moderní trenéři připojují své názvy jediným + nebo psaním „plus“ a číslem, protože mnoho z nich má několik funkcí. Použité číslo představuje počet úprav, které má trenér k dispozici, např. „Nekonečné zdraví“ nebo „jeden zásah zabíjí“. Dalším rozdílem je zahrnutí verze hry nebo zdroje digitálního stahování hry. Například: „Hitman: Absolution Steam +11 Trainer“, „FEAR 3 v 1.3 PLUS 9 Trainer“ atd.
Moderní trenéři také přicházejí jako samostatně stažené programy. Místo přímé úpravy programování hry upravují hodnoty uložené v paměti. Ve skutečnosti se to stalo tak běžným, že trenéři dnes podle definice pouze upravují paměť; modifikace spustitelného souboru hry je odsuzována a takové programy nejsou považovány za skutečné trenéry, ale za záplaty.
Při objektově orientovaném programování jsou paměťové objekty často ukládány dynamicky na haldě, ale moderní operační systémy používají randomizaci rozložení adresního prostoru (ASLR) . Jediným způsobem, jak takovou paměť reprodukovat reprodukovatelným způsobem, je tedy získat informace z vnitřku herního procesu. To vyžaduje reverzního inženýrství metody, jako je API hákování z malloc () a free () , vkládání kódu nebo vyhledáním statické ukazatele přístupu. Trenér se aktivuje, když je objekt přidělen, a sám se deaktivuje, když se objekt uvolní.
Moderní operační systémy mají pro zabezpečení také spustitelné soubory nezávislé na poloze (PIE) . Spolu s ASLR jsou binární soubory načteny na jinou adresu virtuální paměti při každém spuštění kódu. Díky tomu je spolehlivá úprava hodnot statické paměti složitější. Adresu zatížení je třeba určit a odečíst od nalezené adresy paměti, aby byl získán posun statické paměti. Tento posun je často přesně adresou statické proměnné v binárním souboru PIE. Například nástroj Linux pro skenování systému Linux podporuje PIE tímto způsobem. Pro nakonfigurovaný offset paměti určí herní trenér také adresu zátěže a přidá ji zpět za běhu. Stejnou metodu lze použít i pro dynamické knihovny .
Ukazatele statického přístupu vs. zaháknutí API
Hledání a sledování ukazatelů přístupu zpět k ukazatelům ve statické paměti může být těžkopádné. Neposkytuje velikost objektu a pokud existuje více objektů stejné třídy, často je nelze správně zpracovat, protože mezi hromadou mohou být např. Vektory nebo seznamy. Výhodou ale je, že tuto metodu lze použít k připojení k již spuštěnému procesu, pokud funguje. Podpora DMA (Dynamic Memory Allocation) v Cheat Engine je toho příkladem.
API hákování funguje úplně jinak: Preloader načte knihovnu do procesu hry při jejím spuštění. Knihovna špehuje dynamické přidělování paměti a zjišťování začíná jejich zaznamenáváním. Při paralelním hledání statické paměti je možné přiřadit adresu nalezené hodnoty k jedinečné alokaci paměti. Smyslem je ukončit herní proces bezprostředně poté, co je hodnota nalezena a objekt stále existuje. Potom je poslední odpovídající přidělení paměti správné. Metoda volby je tedy shoda opačného směru. Zjištěna je velikost objektu a také ofset hodnot v něm a adresu zpětného kódu v binární hře lze určit zpětným trasováním. Často se najde konstruktor a díky tomu je možné sledovat všechny objekty paměti, které přiděluje. Knihovna v herním procesu a herní trenér musí spolu komunikovat prostřednictvím meziprocesové komunikace (IPC) . Nevýhodou je: To lze detekovat jako malware . Ale je možné najít více hodnot v objektech jejich dumpingem a jejich porovnáním. Také adaptace na jiné verze her a kompilátorů je snadná, protože stačí při demontáži hledat volání funkce knihovny se známým parametrem (velikost objektu). Například bezplatný a open-source (FOSS) univerzální herní trenér „ugtrain“ ukazuje tuto metodu zcela legálně u her FOSS jako příklad.
Automatizované nástroje používané při výrobě trenérů
V minulosti byli trenéři často kódováni v jazyce sestavení nebo v některém z jazyků na vysoké úrovni, které byly v té době k dispozici. Dnes mohou být trenéři vyráběni také s nástroji pro automatizovanou tvorbu trenažérů, které vyžadují pouze základní informace o podvodech, jako je adresa a injekční kód, program poté sestaví trenéra pomocí předem definovaných hodnot a nastavení, které od koncového uživatele nevyžadují žádné znalosti programování. Nejoblíbenějším nástrojem pro tvorbu trenérů, který se dnes používá, je Cheat Engine, který podporuje širokou škálu typů vstřikování a ukazatelů, další nástroje, které byly použity v minulosti, ale již nejsou použitelné, jsou Trainer Maker Kit , Game Trainer Studio a Trainer Creation Kit atd. Některé z pokročilé techniky, které trenéři Cheat Engine podporují, zahrnují vkládání kódu, přesouvání kódu a flexibilitu a univerzálnost poskytovanou skriptováním Lua, které vyřadilo jiné nástroje pro vytváření trenérů, kterým chyběla podpora pro některé z těchto funkcí.