Obfuskace Java kódu

Java Pro pokročilé 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 =)


 

  Aktivity (1)

Článek pro vás napsal Fugiczek
Avatar

Jak se ti líbí článek?
Celkem (3 hlasů) :
4.666674.666674.666674.666674.66667


 


Miniatura
Předchozí článek
Java2D a dokonalé vykreslování
Miniatura
Všechny články v sekci
Java - Pro pokročilé

 

 

Komentáře

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Zmínil bych, že se obfuskuje bytekód, který je jinak velmi jednoduše převeditelný zpět na Java kód. Nejde tedy o obfuskaci přímo kódu, který píšeme my, ale toho, co generuje JavaC. Např. u JavaScriptu se zase obfuskuje přímo to, co píšeme my. Narážím na ty komentáře, ty v bytekódu asi úplně nebudou.

Mazání mezer a podobně není příliš důležité, existují tzv. deobfuskátory, které to umí naformátovat zpět. Hlavně jde o přejmenování proměnných na abcd atd., což je nevratný proces. Člověk potom vůbec netuší, co daná metoda dělá, když se jmenuje A a pracuje s parametry xyz, kdy volá metodu Q :)

Odpovědět  +2 11.6.2012 8:14
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na David Čápka
Fugiczek:

Tak hlavní účel toho článku bylo aby lidi vůbec věděli že nějaká ochrana na zdrojový kód je :)

 
Odpovědět 11.6.2012 13:28
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Fugiczek
David Čápka:

Jo, vysvětlil jsi to dobře, jen bych tam asi připsal něco přímo o obfuskaci Javy, máš to hodně obecné. Vysvětlit, co je v jar souboru a proč by se to mělo obfuskovat.

Odpovědět 11.6.2012 13:33
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Fugiczek
Redaktor
Avatar
Odpovídá na David Čápka
Fugiczek:

Poslal jsem na schválení menší dodatek proč to používat :)

 
Odpovědět 11.6.2012 14:01
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovědět 11.6.2012 14:32
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.