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

Microsoft: Zbavte se už konečně zastaralých a děravých Windows 7

Microsoft: Zbavte se už konečně zastaralých a děravých Windows 7

** Microsoft pomalu začíná kritizovat svůj nejpopulárnější OS ** Chce konečně dostat podniky na Desítky ** Bezpečnostní podpora Sedmiček vydrží ještě necelé tři roky

17.  1.  2017 | Jakub Čížek | 406

Český státní blacklist už funguje. Ministerstvo financí se pochlubilo s detaily

Český státní blacklist už funguje. Ministerstvo financí se pochlubilo s detaily

** Dva týdny po Novém roce zajím zeje prázdnotou ** Ministerstvo vydalo metodický pokyn ** Takhle to bude fungovat v praxi

16.  1.  2017 | Jakub Čížek | 49

8 produktů, o kterých byste neřekli, že nesou značku Apple

8 produktů, o kterých byste neřekli, že nesou značku Apple

** Věděli jste, že Apple vyvinul celkem 45 modelů tiskáren? ** ** Monitor na výšku, plotter nebo herní konzole - to vše měl Apple ve své nabídce ** Většinu z těchto produktů pohřbil Steve Jobs

19.  1.  2017 | Stanislav Janů | 41

Opera Neon: Takto prý bude vypadat prohlížeč budoucnosti. Chcete to?

Opera Neon: Takto prý bude vypadat prohlížeč budoucnosti. Chcete to?

** Opera představila Neon ** Koncepci prohlížeče budoucnosti ** Připomíná Chrome OS

16.  1.  2017 | Jakub Čížek | 35


Aktuální číslo časopisu Computer

99 nejlepších programů pro váš počítač

Zvykejte si na umělou inteligenci

Velké testy PC zdrojů a gamepadů

Alternativní zdroje energie

reklama
reklama