Newsgroup: it.comp.java
Titolo: Obfuscators - ... ma funzionano?

Premettento che non reputo "eticamente" corretto l'uso di obfuscator
e simili (ma è solo una mia opinione ed è solo un caso che coincida
con qualche migliaio di persone che credono fermamente nell'opensource).
Quello di cui vorrei discutere e magari trovare alcune informazioni
più specifiche è:
1. Ma gli obfuscators funzionano?
2. Come funzionano?
3. Che impatto hanno sulle prestazioni? Perché?
4. E' possibile in linea di principio realizzare decompilatori che
   decompilino bytecode "odfuscati"? E se sì, occorre conoscere il
   funzionamento di ogni singolo obfuscator?
5. Chi ha inventato il primo obfuscator? Nel caso si scoprisse una
   macchina del tempo...
Grazie a tutti!
Link interessanti:
 
http://jode.sourceforge.net/
 
http://www.retrologic.com/retroguard-main.html
 
http://dmoz.org/Computers/Programming/Languages/Java/Development_Tools/Obfuscators/


???



???


> 
NM> vedi domanda sopra. se trovano particolari istruzioni le ottimizzano e le
NM> trasformano in qualcosa di illeggibile
Niente che resista comunque  ad un programmatore, sopratutto se dotato
di uno strumento simile ad Etags :) *firulì, firulà*
Nota 1: Con le applet hai un  hook in più per 'attaccare' il codice in
quanto  sono chiarissime  le chiamate  per leggere  i  parametri dalla
pagina html ospite.
Nota 2: A  me non piacciono gli obfuscators. Adoro  l'open source e di
Java  mi piace  tanto  quell' "essere  intrinsecamente opensource  :)"
dovuto alla decompilabilità.
--
Gian Uberto| main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Lauri      |                        David Korn, 1987 ioccc best one liner 
(aka saint)|-------------------------------------------------------------------
em@ail: 
sa...@eng.it
 ( vedere X-nospam nello header - see X-nospam in header )

trasformano in qualcosa di illeggibile
Sì, ma come?
Quali le regole e le linee guide per fare questa magica trasformazione?
Bye

di uno strumento simile ad Etags :) *firulì, firulà*
Ci spieghi meglio?

> di uno strumento simile ad Etags :) *firulì, firulà*
C> Ci spieghi meglio?
Allora, gli  obfuscators (salvo qualche ottimizzazione  che si risolve
usando  il cervello  e sperimentando)  si basano  sul  cambiamento dei
simboli con stringhe senza senso. Ora ci sono tool come Etags (global,
ctags sono quelli che conosco,  peccato che loro siano C oriented) che
analizzano  un sorgente  e creano  un  database che  "collega" i  vari
riferimenti  ad un  simbolo  attraverso i  vari  file permettendo  tra
l'altro  (questo usando  Emacs) di  cambiare  un simbolo  in tutto  il
gruppo  di sorgenti.   A questo  punto  il gioco  diventa simile  alla
soluzione di questo puzzle:
     A E B
    x  A A
   -------
   I G F J
 I G F J
 --------- (A lettera uguale corrisponde cifra uguale soluzione 
 J H G I J               alla fine :) )
Non ho detto che il reverse  engineering di un progetto in Java sia un
lavoro brevissimo,  ma _non_ è impossibile.  L'obfuscator vince quando
il costo  del reverse engineering supera il  costo della ricostruzione
da zero di un qualcosa equivalente.
--
Gian Uberto| main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Lauri      |                        David Korn, 1987 ioccc best one liner 
(aka saint)|-------------------------------------------------------------------
em@ail: 
sa...@eng.it
 ( vedere X-nospam nello header - see X-nospam in header )
     4 7 3
    x  4 4
   -------
   1 8 9 2
 1 8 9 2
 ---------
 2 0 8 1 2

 Bye

con qualche migliaio di persone che credono fermamente nell'opensource).
...e il fatto che chiunque possa grabbare o copiare il tuo codice
frutto di mesi di lavoro come lo reputi  "eticamente" ?
Umberto

 writes:
U> ...e il fatto che chiunque possa grabbare o copiare il tuo codice
U> frutto di mesi di lavoro come lo reputi  "eticamente" ?
\begin{filosofico}
Molto più  utile pensare open  source che pretendere di  spremere ogni
centesimo  da ogni  riga di  codice che  si scrive,  sopratutto  se il
programma può essere utile a molti.
\end{filosofico}
\begin{pratico}  
Ciò che corre il rischio di essere "copiato" facilmente sono le applet
distribuite in pagine HTML Oddio,  ci sono poche applet di questo tipo
veramente utili.  E un obfuscator le  difende come un  foglio di carta
velina contro una 44"magnum.
Le cose  grosse "server side" si  proteggono in fondo da  sole.  Se un
cliente  decide che  vuole cambiare  fornitore per  un  sistema grosso
vuole dire che il prodotto non lo soddisfa per nulla e chi lo ha fatto
ancora meno. Molto probabilmente il codice preesistente serve a poco.
Se  invece  il  prodotto è  soddisfacente  e  chi  lo  ha fatto  si  è
dimostrato degno di fiducia, è  da stolti prendere un altro fornitore:
costa meno chiedere di lavorarci a chi il prodotto lo conosce.
\end{pratico}


Quali le regole e le linee guide per fare questa magica trasformazione?
Dipende dal prodotto.
-- 
God is Real, unless declared Integer.
ObjectZone - 
http://space.tin.it/computer/csadun

UTOPIA
--
--
Ciao
                                        Roche
               - The Mannix -
la solita minestra punk?
Clicca quì sotto:
 
http://stage.vitaminic.it/the_mannix/

 writes:
FR> UTOPIA
Beh,  avere  un buon  S.O.  che  fosse  Free sembrava  utopico  quando
Stallman scrisse il manifesto...


 spendere mesi di lavoro per scriverne dell'altro ;)
E tu che lavoro faresti?
Ciao.
Ale

hai ragione anche tu.....
perň le medagie hanno sempre due facci
--
--
Ciao
                                        Roche
               - The Mannix -
la solita minestra punk?
Clicca quě sotto:
 
http://stage.vitaminic.it/the_mannix/
e....

> spendere mesi di lavoro per scriverne dell'altro ;)
AC> E tu che lavoro faresti?
Secondo  te ?  S.u.s.e. come  campa  ? Red  Hat ?  Richard Stallman  ?
Guarda che Free Software  significa "software libero", non "gratuito".
Se qualcuno vuole che gli  scrivano un programma paga il programmatore
e diventa proprietario del programma (non licenziatario in balia delle
paturnie del produttore).


paturnie del produttore).
Infatti quelle che lo fanno sono legate a doppio filo al programmatore che
essendo l'unico a conoscere sia il sistema operativo (se parliamo di Linux
ad esempio) che il programma non possono lasciarlo andare. Ne ho viste
diverse di societa' che hanno dovuto spendere fior di quattrini per
rinnovare il proprio software perche' il programmatore "opensource" li aveva
lasciati a piedi e nessuno sapeva metterci le mani sopra.
Saluti.

> Secondo  te ?  S.u.s.e. come  campa  ? Red  Hat ?  Richard Stallman  ?
B> Infatti vai a dare un'occhiata a qualche notizia finanziaria americana,
B> scoprirai che le societa' che hanno investito in opensource sono alla canna
B> del gas.
Sono tutti messi male.
B> Infatti quelle che lo fanno sono legate a doppio filo al programmatore che
B> essendo l'unico a conoscere sia il sistema operativo (se parliamo di Linux
B> ad esempio)
L'unico che conosce il sistema operativo ? Ma stai scherzando ?
B> che il programma non possono lasciarlo andare. 
Ah, perché, se non hai nemmeno il sorgente stai meglio ???
B> Ne ho viste
B> diverse di societa' che hanno dovuto spendere fior di quattrini per
B> rinnovare il proprio software perche' il programmatore "opensource" li aveva
B> lasciati a piedi e nessuno sapeva metterci le mani sopra.
Se ti lascia a piedi un qualsiasi fornitore di un programma da cui dipendi
sei nella cacchina. Con l'open source un poco meno (hai i sorgenti e puoi 
pagare qualcuno perché ci metta le mani).
