reklama

Umíme ve Flashi – 6. díl – ochrana swf souborů

Každý tvůrce flashových animací se časem zamyslí nad otázkou, jak by mohl ochránit své jedinečné výtvory před nenechavými zloději kódů a objektů. Dnes si ukážeme, jak alespoň částečně zabránit těmto nežádoucím zásahům.

File - Publish Settings - Flash - Protect from import

Toto je asi první cesta, kterou se vydáme, pokud chceme ochránit své flashové animace. Napíšeme do příslušného políčka heslo a jsme spokojeni. Zatím se nic neděje, ale pak v dlouhé chvíli zadáme do fulltextového vyhledávače heslo „swf decompile“ a máme po klidu. Pokud bychom si ovšem pozorně přečetli specifikaci swf formátu, toto zjištění by nás pak nepřekvapilo.

Je to způsobeno otevřeným formátem flashových souborů. Znamená to, že jsou dostupné informace o tom, kde a jakým způsobem jsou uloženy data v swf souborech. To umožňuje vývoj širokého spektra nástrojů, které umí generovat a pracovat se swf soubory.

Heslo, které jsme tak v dobré víře zadali do políčka, ochrání flashový soubor před importem do samotného Flashe. Pokud ale použijeme některý z dostupných dekompilerů, je nám heslo k ničemu.

Nejnovější nástroje určené pro extrahování dat ze swf souborů jsou schopné dostat prakticky veškeré potřebné objekty a části naší animace. Ať již se jedná o použité obrázky, zvuky, vektorové objekty, vložená písma a bohužel i zdrojový kód ActionScriptu, nic není bezpečné proti těmto nástrojům.

Ovšem hned na začátku musím upozornit, že diskutované dekompilery jsou i velmi užitečnými pomocníky v případech, kdy nedopatřením přijdeme o svůj zdrojový soubor a máme k dispozici pouze zkompilovaný swf soubor. Poslední záchranou pak často bývají nástroje pro extrahování dat a obnovu zdrojových souborů.

Jak chránit své soubory?

Nijak. V této oblasti to máme opravdu těžké, zloději mají kompletní návod, jak se vloupat do našeho domu a navíc k tomu mají výkonné nástroje. My tak můžeme vyklidit celý dům a nenabízet nic ke zcizení a nebo jim co nejvíce znepříjemnit cestu a odradit je tak od dalších loupeží.

Nejjednodušší je samozřejmě nic nezveřejňovat. Ale to není zrovna dobré řešení, zvlášť, když chceme provozovat například online hry. V tomto případě se striktně řídíme pravidly, že do swf souboru nevkládáme žádná hesla, citlivé osobní údaje, přístupové kódy. Tyto údaje se snažíme načítat externě, nejlépe z databází a Flash používáme pouze jako vizualizační mezičlánek.

Obecně lze říci, že externí načítání proměnných a dalších objektů patří mezi nejčastější formy obrany před útočníky. Ale kdo někdy používal dekompilery zdrojových kódů, jistě ví, že všechny příkazy ActionScriptu zde má jako na dlani a často i s vysvětlujícími popiskami. Jsou zachovány veškeré názvy proměnných, funkcí a objektů a proto není těžké se dopátrat i již zmíněných externích součástí.

Pokud se na to ale podíváme z druhé strany, můžeme velikým počtem externě načítaných objektů znepříjemnit útočníkovi práci, který se pak raději vydá snazší cestou a nebude se vaší animací již dále zabývat.

Zmatení jazyků

Asi nás napadne, že bychom mohli zdrojový kód nějak znepřehlednit. Udělat jej hodně dlouhým, nesrozumitelným, zkrátka takovým, abychom případného „uchazeče“ o přečtení ihned odradili jeho složitostí. Můžeme se o to pokusit ručně, ale asi nás to brzy omrzí, protože se kód pro nás stane hůře čitelným a téměř nepoužitelným.

Naštěstí zde ale existují účinné nástroje, které v exportovaném swf souboru provedou úpravu zdrojového kódu, který se po otevření v dekompileru buď vůbec nezobrazí a nebo se veškeré funkce a proměnné nahradí náhodnými znaky, které jsou pro člověka naprosto nečitelné, ale flashový přehrávač jim bez problémů rozumí.

Samozřejmě, že i těmto nástrojům šlapou již na paty nové verze dekompilerů, ale momentálně se mi jeví jako nejlepší forma ochrany ve spojení s načítáním externích dat a objektů. Pokud se totiž podíváme do ochráněného zdrojového kódu, těžko z něj vyčteme případné adresy dalších součástí aplikace.

Kódujeme animace

Práce s kódovacími nástroji je velmi jednoduchá. Ukážeme si na příkladu, jak se postupuje. Dejme tomu, že jsme vytvořili naprosto geniální hru ježdění s autíčkem (27.díl seriálu) a nechceme, aby se kdokoliv zmocnil jejího jedinečného zdrojového kódu.

První nástroj, který otestujeme, provádí změnu názvů proměnných a jmenuje se ASO Lite.

Jako testovací nástroj pro extrahování swf souborů použijeme SWF Decompiler.

Pokud otevřeme nechráněný swf soubor v SWF Decompileru, bez problémů vidíme všechny akce a příkazy:

// Action script...

// [onClipEvent of sprite 3 in frame 1]
onClipEvent (load)
{
    rychlost = 0;
    zvukMotoru = new Sound();
    zvukMotoru.attachSound("motor");
    zvukMotoru.setVolume(0);
    zvukMotoru.start(0, 9999);
    opotrebeni = 0;
}

Pokud ale provedeme zakódování, výsledný skript je již méně čitelný:

onClipEvent (load)
{
    aso#55646 = 0;
    aso#18320 = new Sound();
    aso#18320.attachSound("aso#57038");
    aso#18320.setVolume(0);
    aso#18320.start(0, 9999);
    aso#86983 = 0;
}

Vidíme, že veškeré proměnné jsou nahrazeny pro nás nesrozumitelnými výrazy. Ovšem tento stupeň ochrany nás asi moc neuspokojí, pořád se v kódu dočteme dost důležitých věcí.

Vyzkoušíme další nástroj SWF Encrypt. Po zakódování a otevření v dekompileru dostaneme už značně nečitelný kód:

onClipEvent (load)
{
    var \x1 = 533;
    \x1 = \x1 + 120;
    if (\x1 == 440)
    {
        \x1 = \x1 + 268;
       
       
    } // end if
    if (\x1 == 653)
    {
        \x1 = \x1 - 213;
        if (false)
        {
        }
        else
        {
            \x1 = \x1 + 268;
        } // end if
       
    } // end if
    if (\x1 == 708)
    {
        \x1 = \x1 + 211;
       
       
    } // end if
    if (\x1 == 919)
    {
        \x1 = \x1 - 318;
    }
    else
    {
       
    } // end if
}

Lépe řečeno, čitelný kód je, ale rozumět mu bude asi opravdu málokdo. A do třetice vyzkoušíme nástroj SWF Protect.

Po jeho aplikaci dostaneme v SWF Decompileru dost nudný a nezajímavý kód:

// Action script...

// [onClipEvent of sprite 3 in frame 1]
onClipEvent (load)
{
    try
    {
       
        if (![false])
        {
        } // end if
        try
        {
            if (![false])
            {
            } // end if
            try
            {
                if (true)
                {
                }
                else
                {
                    function ?(ˆ, , , , ?yî? , , , , , , , , , )
                    {
                    } // end if
}

Nástrojů pro ochranu flashových souborů je opravdu velké množství, proto pokud víte o některém zajímavém a účinném nástroji, můžete se podělit o zkušenosti s jeho používáním v diskuzi k našemu seriálu.

Témata článku: Software, Programování, Protect

1 komentář

Nejnovější komentáře

  • gully, gully 14. 11. 2005 6:14:54
    http://diskuse-zaciname-s-flash-mx-2004.wz.cz
reklama
Určitě si přečtěte

UPC překopli páteřní kabel. V Brně i druhý den nejede internet ani kabelovka

UPC překopli páteřní kabel. V Brně i druhý den nejede internet ani kabelovka

** V Brně byl velký výpadek služeb UPC ** Důvodem je překopnutý páteřní kabel ** V některých lokalitách služby stále nefungují

Včera | Jakub Čížek | 94

ASUS ZenBook 3 se začal prodávat v Česku. Je ve všem lepší než MacBook, ale bude to stačit?

ASUS ZenBook 3 se začal prodávat v Česku. Je ve všem lepší než MacBook, ale bude to stačit?

** Novinka od Asusu míří přímo proti MacBooku od Applu ** Nabídne daleko více výkonu za stejné peníze

2.  12.  2016 | David Polesný | 137


reklama