Obfuskace Java kódu
V tomto článku si vysvětlíme co to ta obfuskace je a taky si povíme něco málo o jednom z nejznámnějších obfuskátorů pro Javu.
Takže co to ta obfuskace vůbec je? A proč ji používat?
Již z anglického názvu obfuscate, což znamená mimo jiné zatemnit, vyplývá, že půjde o znemožnění čtení zdrojového kódu. Takovéto obfuskátory jsou pro většinu jazyků. Je dobré je používat, když Vaše projekty nejsou open source, nebo tomu podobné a nechcete aby někdo obcházel licenční čísla či nějaká hesla. Většinu lidí obfuskovaný kód odradí a dále ho nechají být, 99% určite, se zbylým procentem se musíte smířit, to jsou převážně hackeři kteří jdou za svým cílem a zdrojový kód nějak získají.
Jak to funguje?
Většinou to dělá tyto věci:
- odstraňuje Vaše poznámky, komentáře
- smaže veškeré mezery, prostě naprosto zničí úpravu kódu
- přejmenuje proměnné, metody, třídy, případně rozdělí na několik tříd navíc
Proč používat?
V .jar souboru jsou přeložené třídy do byte kódu (u GUI jsou tam i listenery), které jdou lehce přeložit zpět, obzlášť v Javě. Pokud nechcete, aby někdo věděl, jak jste docílili výsledku, znal vaše postupy, nebo nechcete, aby obcházeli různé ochrany, které tam máte, tak je dobré kód obfuskovat. Kód to změní k nepoznání, do té míry, aby to interpret přelouskal. Pro člověka, který to bude chtít přečíst, to bude nepoužitelné, všechny proměnné, metody, třídy budou různě rozházeny a pojmenovány pár písmeny z abecedy. Tím pádem nebude vědět, co co dělá a proč to dělá.
Tak to jsme si řekli něco málo o obfuskaci. Ted je řada na obfuskator pro Javu. Nejznámnějším je nejspíš ProGuard a to z důvodu že neobsahuje jen Obfuskátor, ale mimo jiné i poskytuje optimalizaci kódu a jiné užitečné funkce.
Stáhnout si ho můžete zde: http://proguard.sourceforge.net/
U starších verzí se muselo všechno dělat přes příkazový řádek. Naštěstí již mají grafické rozhraní. Rozbalíte si složku kterou jste stáhli, půjdete do šložky bin a spustíte soubor proguardgui.bat, ten Vám zapne samotný program. Dále se jen řídíte průvodcem. Většina věcí je již nastavená takže jen zadáte .jar soubor který chcete obfuskovat a cestu kam se má výsledný soubor uložit. Pak stačí jen vše přeskočit a obfuskovat. Pokud se Vám to bude zdát nedostatečné můžete si pohrát s nastavením, ale myslím že je to nastavené optimálně.
Samozřejmě existují i tzv. deobfuskátory, ale těch nejsem příznivcem =)