Obfuskovanie v Jave

Jednou z nespornych vyhod Javy je platformova nezavislost. Zdrojovy kod sa preklada do univerzalneho “medzi” kodu ktory sa nazyva bytecode, pricom az na dannej platforme sa za behu prelozi do nativneho kodu (JIT). Slabym miestom bytecode, kde jeho pomerne lahka spatna uprava do povodnej podoby zdrojoveho kodu, takzvana dekompilacia kodu. Z toho vyplyva jednoducha cesta pre zneuzite zdrojovych kodov. Aj ked na druhej strane v pripade, ze ste prisli za nejakych okolnosti o zdrojove kody, resp. ste prebrali aplikaciu bez nich, sa dekompilacia moze stat uzitocnym pomocnikom.

Obfuskovanie je technika, ktora ma za ulohu zabranit dekompilacii. Upravuje javovy bytecode tak, aby vysledny zdrojovy kod bol zle citatelny a bez hlbsej analyzy nepouzitelny.

Na trhu existuje niekolko nastrojov na obfuskaciu. V pomere vykon – cena je pravdepodobne najlepsou volbou bezplatny “Proguard”. Obfuscator realizuje:

  • zneprehladnenie kodu
    Premenovanie tried, metod a atributov na jednopismenkove. V pripade potreby (napriklad potomok triedy MIDLet) sa da nastavit moznost zachovania niektorych povodnych nazvov.
  • zmensovanie kodu
    Vymazanim nepotrebnych tried, metod, atributov sa minimalizuje potrebny kod. Jeho velkost sa takisto zmensi aj premenovanim. V enterprise aplikaciach je to bezpredmetne, ale napr. pre aplikaciu v mobilnom telefone je velkost mimoriadne dolezitym parametrom.
  • optimalizaciu kodu
    Detekcia a vymazanie nepouzitych instrukcii.

V praxi je vyhodne pouzit obfuscator pri buildovani v automatizovanom procese s vyuzitim buildovacích nástrojov napr. ANT.

Autor príspevku: Marek Čizík

Domovská stránka ANT
Specifikacia a sposob pouzitia Proguard