Obfuskace Java kódu
V tomto článku si vysvetlíme čo to tá obfuskace je a tiež si povieme niečo málo o jednom z najznámejších obfuskátorů pre Javu.
Takže čo to tá obfuskace vôbec je? A prečo ju používať?
Už z anglického názvu obfuscate, čo znamená okrem iného zatemniť, vyplýva, že pôjde o znemožnenie čítanie zdrojového kódu. Takéto obfuskátory sú pre väčšinu jazykov. Je dobré ich používať, keď Vaše projekty nie sú open source, alebo tomu podobné a nechcete aby niekto obchádzal licenčné čísla či nejaká hesla. Väčšinu ľudí obfuskovaný kód odradí a ďalej ho nechajú byť, 99% určite, sa zvyšným percentom sa musíte zmieriť, to sú prevažne hackeri ktorí idú za svojím cieľom a zdrojový kód nejako získajú.
Ako to funguje?
Väčšinou to robí tieto veci:
- odstraňuje Vaše poznámky, komentáre
- zmaže všetky medzery, proste úplne zničí úpravu kódu
- premenuje premenné, metódy, triedy, prípadne rozdelí na niekoľko tried navyše
Prečo používať?
V .jar súbore sú preložené triedy do byte kódu (u GUI sú tam i Listener), ktoré idú ľahko preložiť späť, obzlášť v Jave. Ak nechcete, aby niekto vedel, ako ste docielili výsledku, poznal vaše postupy, alebo nechcete, aby obchádzali rôzne ochrany, ktoré tam máte, tak je dobré kód obfuskovat. Kód to zmení na nepoznanie, do tej miery, aby to interpret prelúskal. Pre človeka, ktorý to bude chcieť prečítať, to bude nepoužiteľné, všetky premenné, metódy, triedy budú rôzne rozhádzané a pomenované pár písmenami z abecedy. Tým pádom nebude vedieť, čo čo robí a prečo to robí.
Tak to sme si povedali niečo málo o obfuskaci. Ted je rad na obfuskator pre Javu. Najznámejším je zrejme proguard a to z dôvodu že neobsahuje len Obfuskátor, ale okrem iného aj poskytuje optimalizáciu kódu a iné užitočné funkcie.
Stiahnuť si ho môžete tu: http://proguard.sourceforge.net/
U starších verzií sa muselo všetko robiť cez príkazový riadok. Našťastie už majú grafické rozhranie. Rozbalíte si zložku ktorú ste stiahli, pôjdete do zložky bin a spustíte súbor proguardgui.bat, ten Vám zapne samotný program. Ďalej sa len riadite sprievodcom. Väčšina vecí je už nastavená takže len zadáte .jar súbor ktorý chcete obfuskovat a cestu kam sa má výsledný súbor uložiť. Potom stačí len všetko preskočiť a obfuskovat. Ak sa Vám to bude zdať nedostatočné môžete sa pohrať s nastavením, ale myslím že je to nastavené optimálne.
Samozrejme existujú aj tzv. Deobfuskátory, ale tých nie som priaznivcom =)