View Full Version : [JAVA] parliamo di offuscatori
franksisca
05-06-2009, 10:19
allora, per chi non lo sapesse esistono dei simpaticissimi programmi che riescono a generare il codice java dal .class contenuto all'interno del jar.
questi si chiamano appunto decompiler.
capirete che per chi produce software in java non è una cosa proprio SIMPATIca...quindi (ovviamente) esistono dei programmi che cercano di "distruggere" questa procedura (impossibile in fin dei conti, ma almeno ci si prova) che si chiamano offuscatori.
attualemtne uno dei più apprezzati sulla piaza (detto dal sottoscritoto...quindi è tutto dire :p) e proguard (http://proguard.sourceforge.net/)
ora...tutte queste belle parole per dire che sto utilizzando progguard per offuscare il mio sorgente...ma mi dà 325 errori di questo tipo:
Warning: com.lowagie.text.pdf.PdfPublicKeySecurityHandler: can't find referenced class org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
Warning: com.lowagie.text.pdf.PdfPublicKeySecurityHandler: can't find referenced class org.bouncycastle.asn1.DERInteger
Warning: com.lowagie.text.pdf.PdfPublicKeySecurityHandler: can't find referenced class org.bouncycastle.asn1.DERObject
Warning: com.lowagie.text.pdf.PdfPublicKeySecurityHandler: can't find referenced class org.bouncycastle.asn1.cms.KeyTransRecipientInfo
Note: there were 15 unresolved dynamic references to classes or interfaces.
You should check if you need to specify additional program jars.
Note: there were 9 class casts of dynamically created class instances.
You might consider explicitly keeping the mentioned classes and/or
their implementations (using '-keep').
Warning: there were 1 unresolved references to classes or interfaces.
You may need to specify additional library jars (using '-libraryjars'),
or perhaps the '-dontskipnonpubliclibraryclasses' option.
Warning: there were 2 instances of library classes depending on program classes.
You must avoid such dependencies, since the program classes will
be processed, while the library classes will remain unchanged.
Warning: there were 325 unresolved references to program class members.
Your input classes appear to be inconsistent.
You may need to recompile them and try again.
Alternatively, you may have to specify the options
'-dontskipnonpubliclibraryclasses' and/or
'-dontskipnonpubliclibraryclassmembers'.
Please correct the above warnings first.
io uso la versione con gui...questo ovviamente è solo la coda della console di oputput....siccome SICURAMENTE qualcuno qu (:confused: :confused: chi ha detto PGI ?? ^TiGeRShArK^???:confused: :confused: :confused: ) l'avrà usato, vorrei sapere le sue esperienze diretet se gli è mai capitato qualcosa del genere.
inoltre ho letto in giro che JBuilder ha un offuscatore integrato opzionabile...ma dove si "opziona????" (non trovo niente che mi dica come attivarlo).
grazie mille
franksisca
05-06-2009, 12:00
allora...sono riuscito a generare il codice offuscato facendogli "byassare" quei warning (che sono collegati ad una libreria di itext).
però ora mi genera un .jar che non funziona.
allora...sono riuscito a generare il codice offuscato facendogli "byassare" quei warning (che sono collegati ad una libreria di itext).
però ora mi genera un .jar che non funziona.
...piu' offuscato di così...scherzo...alza i livelli di warning in eclipse e ricrea il jar senza generarne...non ho mai smanacciato con gli offuscatori...solo con jad...penso che i crucci tu li debba risolvere in fase di compilazione...
...ciao Andrea...
franksisca
05-06-2009, 14:36
...piu' offuscato di così...scherzo...alza i livelli di warning in eclipse e ricrea il jar senza generarne...non ho mai smanacciato con gli offuscatori...solo con jad...penso che i crucci tu li debba risolvere in fase di compilazione...
...ciao Andrea...
come alzo il livello di warning?
come alzo il livello di warning?
...prefernece > java > compiler...
...ciao Andrea...
Tony Lio
05-06-2009, 15:08
Fransiska , ma sei Maria Fede??
lol t'amu sgamatu??
franksisca
05-06-2009, 15:09
...prefernece > java > compiler...
...ciao Andrea...
il fatto è che non capisco alzando il livello di warning come possa aiutarmi...visto che una volta che ho generato il jar mi funziona...dopo l'offuscamento no !!!
il fatto è che non capisco alzando il livello di warning come possa aiutarmi...visto che una volta che ho generato il jar mi funziona...dopo l'offuscamento no !!!
...penso...e sottolineo penso...che i warning che normalmente ignoriamo durante la compilazione non piacciano all'offuscatore...aumentando la segnalzione dei warning da parte dell'ambiente di sviluppo e correggendoli affinchè questo non li segnali piu' otteniamo un sorgente digeribile dall'offuscatore...
...ciao Andrea...
franksisca
05-06-2009, 15:12
Fransiska , ma sei Maria Fede??
lol t'amu sgamatu??
fumi???
cmq no...non sono maria fede...
franksisca
05-06-2009, 15:13
...penso...e sottolineo penso...che i warning che normalmente ignoriamo durante la compilazione non piacciano all'offuscatore...aumentando la segnalzione dei warning da parte dell'ambiente di sviluppo e correggendoli affinchè questo non li segnali piu' otteniamo un sorgente digeribile dall'offuscatore...
...ciao Andrea...
emh...io non ho warning nel mio progetto...li ho tolti tutti...aggiungendo dove necessario gli unused e roba del genere...cmq ora provo
franksisca
05-06-2009, 15:18
aumentando il livello di warning gli unici warning dche mi dava erano dei this e delle stringhe che voleva il "//$NON-NLS-1$"
fatto tutto non cambia niente.
ripeto il jar che genero funziona perfettamente...ma quando vado ad offuscare (in proguardina deseleziono tutto...lascio solo la fase di offuscamento) è come se perdesse il linking di alcune librerie
aumentando il livello di warning gli unici warning dche mi dava erano dei this e delle stringhe che voleva il "//$NON-NLS-1$"
fatto tutto non cambia niente.
ripeto il jar che genero funziona perfettamente...ma quando vado ad offuscare (in proguardina deseleziono tutto...lascio solo la fase di offuscamento) è come se perdesse il linking di alcune librerie
...mi dispiace ho finito le idee...la documentazione non dice nulla?...altri offuscatori?...
...ciao Andrea...
franksisca
05-06-2009, 15:26
...mi dispiace ho finito le idee...la documentazione non dice nulla?...altri offuscatori?...
...ciao Andrea...
sto per provare retroguard
banryu79
05-06-2009, 15:42
retroguard
paraculo :asd:
franksisca
05-06-2009, 15:50
paraculo :asd:
ovviamente non funziona nemmeno questo -.-
deve esserci qualche cosa che mi sfugge e che non conosco.
ricapezzoliamo:
1) genero un runnable jar coon eclipse.
2) il runnable jare funziona alla perfezione
3) apro proguard...deseleziono tutto e lascio solo obfuscator
4) mi genera il jar obfuscato
5) il jar nuovo funziona ma se gli faccio aprire un file pdf (tramite jdic) oppure gli faccio cambiare skin (caricate all'interno) non funziona
motivazioni?
banryu79
05-06-2009, 15:53
motivazioni?
La sfiga :O
franksisca
05-06-2009, 16:02
La sfiga :O
asd...vabbè io sono un perseguitato e si sà...ma motivazioni tecniche???
si può fare il reverse engineering senza passare per l'assembly? moooolto comodo, e moooolto insicuro.
Non ne sapevo niente di questi programmi, incredibile.
franksisca
05-06-2009, 17:00
si può fare il reverse engineering senza passare per l'assembly? moooolto comodo, e moooolto insicuro.
Non ne sapevo niente di questi programmi, incredibile.
in java si...per questo esistono gli offuscatori...e continuo a non capire perchè a me non funziona.
banryu79
05-06-2009, 17:02
si può fare il reverse engineering senza passare per l'assembly? moooolto comodo, e moooolto insicuro.
Non ne sapevo niente di questi programmi, incredibile.
Non ho capito a cosa ti riferisci.
Qui si parlava di Java, quindi il codice prodotto dal compilatore è bytecode, non assembly.
Ricostruire un sorgente Java equivalente a partire dal bytecode è molto semplice (esistono miriadi di tool per farlo).
Il problema di franksisca è che ha provato due prodotti per l'offuscazione del bytecode, e con entrambi ottiene un jar che sembra difettoso.
franksisca
05-06-2009, 17:11
Non ho capito a cosa ti riferisci.
Qui si parlava di Java, quindi il codice prodotto dal compilatore è bytecode, non assembly.
Ricostruire un sorgente Java equivalente a partire dal bytecode è molto semplice (esistono miriadi di tool per farlo).
Il problema di franksisca è che ha provato due prodotti per l'offuscazione del bytecode, e con entrambi ottiene un jar che sembra difettoso.
e la cosa ancora peggiore è che non sembra esserci un qualcosa di logico dietro!!!
io uso 2 librerie per il L&F, itext per modare pdf e JDIC per aprire i pdf.
bene itext per moddare i pdf funziona, mentre JDIC e i L&F no.
se volete vi posto la cfg di proguard...magari sto sbagliando io qualcosa!!!
Non ho capito a cosa ti riferisci.
Qui si parlava di Java, quindi il codice prodotto dal compilatore è bytecode, non assembly.
Ricostruire un sorgente Java equivalente a partire dal bytecode è molto semplice (esistono miriadi di tool per farlo).
Il problema di franksisca è che ha provato due prodotti per l'offuscazione del bytecode, e con entrambi ottiene un jar che sembra difettoso.
Giusto, non avevo pensato al bytecode :doh: . riflettendoci però questa è una cosa spaventosa dal punto di vista della sicurezza
L'utilità degli offuscatori è prossima allo zero... partendo da meno uno.
Basti pensare al fatto che un programma Java è ispezionabile dal vivo. Puoi anche arrivare a chiamare i Socket "ciccibum" ma la JVM non mancherà mai di dirti che ciccibum è un Socket.
Considera inoltre che se tizio scrive la killer application del domani domani e in ballo ci sono abbastanza quattrini allora caio difficilmente si farà intimorire dalla prospettiva di dover dare un nome alle cose.
Il mio personalissimo punto di vista riguardo alla cosa è che se scrivi un'applicazione di successo non devi temere i "copioni" perchè a differenza di chi copia chi crea può sempre produrre qualcosa di nuovo.
franksisca
05-06-2009, 17:38
L'utilità degli offuscatori è prossima allo zero... partendo da meno uno.
Basti pensare al fatto che un programma Java è ispezionabile dal vivo. Puoi anche arrivare a chiamare i Socket "ciccibum" ma la JVM non mancherà mai di dirti che ciccibum è un Socket.
Considera inoltre che se tizio scrive la killer application del domani domani e in ballo ci sono abbastanza quattrini allora caio difficilmente si farà intimorire dalla prospettiva di dover dare un nome alle cose.
Il mio personalissimo punto di vista riguardo alla cosa è che se scrivi un'applicazione di successo non devi temere i "copioni" perchè a differenza di chi copia chi crea può sempre produrre qualcosa di nuovo.
quindi tu mi dici "fottitene...se l'applicazione merita di essere offuscata è un bene???
Il mio personalissimo punto di vista riguardo alla cosa è che se scrivi un'applicazione di successo non devi temere i "copioni" perchè a differenza di chi copia chi crea può sempre produrre qualcosa di nuovo.
non sono d'accordo, il discorso vale se chi crea è il migliore, altrimenti può fare quello che vuole, chi copia poi migliora e surclassa l'autore originale. Se per esempio faccio un progetto open source, magari c'è chi poi lo copia e lo migliora, un pò come per la bash credo, è nata prendendo il meglio dalle shell del momento, nonostante sia una copi (da una parte e dall'altra) è una shell migliore delle altre.
franksisca
05-06-2009, 18:15
risolto....in shrinking non avevo usato keep library e keep l&f....l'avevo detto che era qualche cazzata!!!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.