[Java lista] Java obfuscator

istvan.ketler at lhsystems.com istvan.ketler at lhsystems.com
2007. Már. 14., Sze, 11:32:28 CET


> Mi a cel egy ilyen eszkozzel?
> 1. Forrasunkat ne lehessen minimalis munkaval visszafejteni.
> Erre teljesen alkalmatlan.

Ezt azért nem állítanám - a minimális a kulcsszó. Viszonylag kevés munkával igen, de nem minimális munkával lehet visszafejteni.

> 2. A valtozo nevek elvesszenek?
> Erre jo.

Azért az sokat ront ám az érthetőségen...

> 3. A visszafejtett kodot utana ne lehessen ujra leforditani? 
> Kis kutato munkaval megoldhato.

Ez nem feltétlenül szempont.

> 4. Kisebb legyen a forass, netan memoria sporolas? :) Erre a 
> legalkalmasabb.

Jelenleg ez sem szempont.

> 5. Plussz munkat teremtsen?
> Erre is alkalmas.

Nem tudom, miért teremtene plusz munkát...

> A Java nagy elonye, hogy baromi kotott nyelvi szabalyok 
> vannak. Ez amikor az elso sorokat kodoltam problemas is volt. 
> Viszont atlathato, konyen megertheto, strukturalt forrast 
> biztosit, aminek peldaul a csapatban dolgozasnal nagyon nagy 
> hasznat vehetjuk. Masik elonye, vagy tulajdonsaga, hogy valos 
> idoben ertelmezo JVM vegzi a kod futtatast. Maga a bytecode 
> jol ertelmezheto. Ez a ket jellemzo (strukturaltsag, 
> interpretaltsag) az, amiert nem sok ertelmet latom egy 
> bytecode osszezavarasnak. 

Ezt nem teljesen értem. Kifejezetten elrontani akarom a bytecode jól értelmezhetőségét. Azért ne akarjam elrontani, mert most jól értelmezhető? De hiszen pont azért akarom elrontani...

> Ha latsz egy class-t es megakarod tudni hogyan is mukodik, 
> akkor nagyon jo, hogy egy jad-dal hipp-hopp belenezhetsz (Ha 
> epp az API-ja nincs keznel es a forrasbol is tanulni akarsz). 

Izé, ez egy kerek, működő alkalmazás. Miért akarná ezt bárki is class szinten olvasgatni? A user futtassa, fejleszteni meg majd fejlesztjük tovább, ha igény van rá - de nekünk ugye megmarad az eredeti kód. Ez a kód nem arra készül, hogy bárki emberfia továbbfejlesztgesse. Akkor meg miért kellene tudnia, hogyan működik valamelyik osztálya?

> Konnyebb, gyorsbb a tanulasi folyamat, hamarabb fogsz jol 
> programozni es hamarabb megertesz egy adott problemat, 
> stilust, modszert lathatsz. Ezzel te is tokletesebb munkara 
> leszel kepes es mivel a te munkadra is kesobb uj rendszerek 
> epulhetnek ez igy korrekt.

Bocs, de nem API-t készítek, hanem alkalmazást. Ha később valamely részét használni kívánnánk, arra ott van a rendelkezésünkre álló forrás ugye. Másoknak meg nem kell ebből felhasználnia egy bitet sem, mert erre nem épül másnak semmilyen munkája.

> Valoszinu a Java szemlelet nem 
> igazan az, amit a fonokod kepviselhet (elnezest, de van egy 
> ilyen erzesem). 

Hát, ebben szerintem tévedsz, de ez asszem nem is tartozik ide (ez ugye nem indoklása annak, hogy miért NEM szereted az obfuscator-t).

> Mivel a tobb tizezer sor nehany konyvtarbol, package-bol, a 
> package-ek tobb szaz fajlbol allnak. A fajlokban logikusan 
> felepitett osztalyok es az osztalyokban jol megirt metodusok 
> vannak. Latod, hogy egy metodus mit is csinal. Mindent latsz, 
> ha a program jol meg van irva, ami alap, hiszen magad, 
> munkatarsaid, fonokod erdeke az, hogy a fejlesztesi, tovabb 
> fejlesztesi ido minimalis legyen. 

Namost ez ugye nem fog változni attól, hogy a kiadott bájtkódot összezavarom.

> Egy kodzavaro a kezdo programozoktol vedhet meg csak, pont 
> azoktol, akiknek meg nem art a tanulas. Igazabol csak ti 
> fogtok szivni vele.

Ezt sem értem. Egyrészt nem értem, miért szívnék vele. Beleírom az ant task végére, és a lefordított bájtkód - ami megy ki a release-be - az összezavart lesz. Ha meg másik ant task-kal fordítom, akkor nincs összezavarva, azt meg boldogan debuggolgatom csendben. Másrészt nem értem, hogy bármiféle kezdő programozónak miért kellene visszafejtett bájtkódból tanulnia bármit is. A kezdő programozónak ott van a több terabájtnyi forrás az interneten, nem is beszélve a több tíz vagy több száz polcfolyóméter Java könyvről, amelyek között azért van szép számmal olyan, ami hasznos.

Szóval összefoglalva, nem lehetetlenné akarom tenni a kód visszafejtését (ezt ugye nem is nagyon lehet, amint arról már sokat beszéltünk itt is), csak eléggé megnehezíteni. Szerintem pont erre való az obfuscator, illetve erre is, de nekem most ez kell. A méret nem számít.

Még mindig nem értem, miért vagy ellene valaminek, ami opcionálisan használható, a fejlesztőt meg nem zavarja...

Üdvözlettel,

Iván


További információk a(z) Javalist levelezőlistáról