Author Topic: Da jar a exe senza rivelare i sorgenti  (Read 2546 times)

Offline Gas75

Da jar a exe senza rivelare i sorgenti
« on: February 19, 2017, 05:37:58 PM »
Salve.
Sto cercando di ottenere un file exe dalla mia GUI fatta in Java con NetBeans.
Ho notato che, affinché l'eseguibile funzioni, deve trovarsi nella medesima cartella dei file sorgenti! :o
Cioè io non posso distribuire l'eseguibile senza rivelare a chi lo usa il codice che ho usato, visto che sta sia nel file .java che nel file .jar scompattato...

E' mai possibile una cosa del genere?
Ho usato JSmooth per la creazione dell'eseguibile.
Ci sono 10 tipi di persone: chi conosce il codice binario e chi no.
 

Offline g

Re:Da jar a exe senza rivelare i sorgenti
« Reply #1 on: February 19, 2017, 08:21:08 PM »
Sinceramente non so come aiutarti


La mia logica come quella di molti del forum è quella dell'Open Source

Forse 1 compliazione potrebbe,ma non ne sono certo
 
The following users thanked this post: lynx

Offline Gas75

Re:Da jar a exe senza rivelare i sorgenti
« Reply #2 on: February 19, 2017, 08:31:40 PM »
La compilazione è quella che ha generato l'exe...
In ogni caso ho risolto con Launch4j.
Ci sono 10 tipi di persone: chi conosce il codice binario e chi no.
 

Offline Gas75

Re:Da jar a exe senza rivelare i sorgenti
« Reply #3 on: February 20, 2017, 12:52:52 PM »
Rettifico, l'exe può essere scompattato come un file zip...
Mi si constringe a implementare una password eh?
Ci sono 10 tipi di persone: chi conosce il codice binario e chi no.
 

Offline lynx

Re:Da jar a exe senza rivelare i sorgenti
« Reply #4 on: February 20, 2017, 04:05:56 PM »
Stai attento a far uscire del codice in giro, potrebbero rubartelo XD
Soprattutto se l'hai fatto da solo, è di una complessità elevata e l'hai testato solo tu e solo sulla tua macchina :P
 

Offline davenull

  • Administrator
  • Sr. Member
  • *****
  • Posts: 321
  • Thanked: 13 times
  • Gender: Male
  • JonixLug Co-Founder & Administrator
    • View Profile
    • davenull's blog
Re:Da jar a exe senza rivelare i sorgenti
« Reply #5 on: February 20, 2017, 11:38:18 PM »
You are not allowed to view links. Register or Login
Rettifico, l'exe può essere scompattato come un file zip...
Mi si constringe a implementare una password eh?

You are not allowed to view links. Register or Login
E-Mail: [email protected]
Website: You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login
 

Offline devilicecream

Re:Da jar a exe senza rivelare i sorgenti
« Reply #6 on: February 22, 2017, 03:51:44 AM »
Java non è propriamente un linguaggio compilato, nè un linguaggio interpretato. Quello che succede quando passi da codice sorgente a eseguibile è che un compilatore Java (su Unix-like javac) compila i file .java in file .class, che altro non sono che la versione compilata in Java Bytecode del tuo codice sorgente. Una Java Virtual Machine (JVM) poi prende il Bytecode generato dalla compilazione e lo esegue o compilandolo in machine code (di solito nei sistemi embedded), oppure eseguendo direttamente le istruzioni dal Bytecode come se fosse uno script (compilazione JIT - Just In Time).
Il tuo file .jar altro non è che una raccolta di tutti i file .class contenenti Java Bytecode.
La ragione per cui non puoi nascondere il tuo codice in Java è perchè il Java Bytecode, dovendo essere abbastanza generico da poter essere interpretato facilmente dalle JVM indipendentemente dall'architettura hardware e dal sistema operativo, è facilmente decompilabile in codice Java. Questa è proprio la maniera in cui è stato ideato Java, e c'è poco da fare.
Esistono dei sistemi per "offuscare" il codice, i quali modificano i nomi delle variabili, delle classi e delle funzioni in maniera da rendere il codice illeggibile anche se decompilato, ma non è una soluzione definitiva, in quanto un attaccante esperto può risalire al codice sorgente studiando il codice decompilato.


Mettere una password al .exe piuttosto che al .jar non è una soluzione, in quanto renderesti illeggibile il file alla JVM che deve interpretare il Bytecode, e l'unica maniera per renderlo di nuovo utilizzabile sarebbe di togliergli la password.


Detto ciò, per quale motivo ci tieni tanto a nascondere il codice? C'è una proprietà intellettuale all'interno di cui vuoi riservarti i diritti facendo un brevetto? È un programma talmente unico nel suo funzionamento da volerlo proporre a livello commerciale? Se la risposta a una di queste domande è si, allora si potrebbe anche discutere di tenere il codice sorgente nascosto (e comunque, anche in questi casi, non è sempre una buona idea), altrimenti ti assicuro che tenere il codice nascosto è inutile e, anzi, controproducente!
 
The following users thanked this post: davenull

Offline Gas75

Re:Da jar a exe senza rivelare i sorgenti
« Reply #7 on: February 22, 2017, 08:23:44 AM »
Vorrei proteggere il codice perché il jar è costituito da due JPanel operativi, dei quali soltanto uno è completo e funzionante, l'altro è al momento "spento" (per eseguire il jar lo tengo sotto commento) e con del codice abbozzato...

Mi arrenderei pure, se non fosse che proprio Launch4j, che è un Jar->Exe gratuito, è un file jar a sua volta, eseguibile ma protetto con password dalla scompattazione.
Ci sono 10 tipi di persone: chi conosce il codice binario e chi no.
 

Offline devilicecream

Re:Da jar a exe senza rivelare i sorgenti
« Reply #8 on: February 23, 2017, 08:28:56 PM »
E quindi anche se il codice è incompleto quale sarebbe il problema ad esporlo? Se un utente del tuo programma è abbastanza in gamba da recuperare il codice originale dal jar, sarà anche abbastanza in gamba da capire che se era commentato non è da eseguire!
In più, non sono convinto che nei file .class vengano compilati anche i commenti!
 

Offline Gas75

Re:Da jar a exe senza rivelare i sorgenti
« Reply #9 on: February 23, 2017, 08:40:19 PM »
You are not allowed to view links. Register or Login
E quindi anche se il codice è incompleto quale sarebbe il problema ad esporlo?
Quando vado in pizzeria, la pizza la mangio dopo che è stata nel forno, non prima. Non la giudico in base a come il pizzaiolo ha messo gli ingredienti sulla massa cruda, ma dal sapore che ha.
Ci sono 10 tipi di persone: chi conosce il codice binario e chi no.
 

Offline g

Re:Da jar a exe senza rivelare i sorgenti
« Reply #10 on: February 23, 2017, 08:54:38 PM »
Continuo ad essere x l'Open Source
 
The following users thanked this post: davenull

Offline CrashTest

Re:Da jar a exe senza rivelare i sorgenti
« Reply #11 on: February 24, 2017, 10:09:40 AM »
You are not allowed to view links. Register or Login
E quindi anche se il codice è incompleto quale sarebbe il problema ad esporlo? Se un utente del tuo programma è abbastanza in gamba da recuperare il codice originale dal jar, sarà anche abbastanza in gamba da capire che se era commentato non è da eseguire!
In più, non sono convinto che nei file .class vengano compilati anche i commenti!
Che io sappia i commenti non vengono inclusi nel processo di compilazione, vengono eliminati in fase di pre-processing o nei primi step lasciando spazio solo al codice funzionale. In più, dando uno sguardo veloce per sicurezza al You are not allowed to view links. Register or Login non compare alcuna voce riguardante i commenti
« Last Edit: February 24, 2017, 10:11:26 AM by CrashTest »
Email: [email protected]
Website: You are not allowed to view links. Register or Login
 

Offline g

Re:Da jar a exe senza rivelare i sorgenti
« Reply #12 on: February 24, 2017, 10:24:42 AM »
Mi sorge 1 unico dubbio:
Ma nel testo dell'oggetto eseguibile vengono citati testualmente i nomi delle classi,procedure e variabili dopo la compilazione? ???
 

Offline devilicecream

Re:Da jar a exe senza rivelare i sorgenti
« Reply #13 on: February 25, 2017, 01:07:56 AM »
You are not allowed to view links. Register or Login
Quando vado in pizzeria, la pizza la mangio dopo che è stata nel forno, non prima. Non la giudico in base a come il pizzaiolo ha messo gli ingredienti sulla massa cruda, ma dal sapore che ha.


Se compariamo lo sviluppo di codice al cucinare una pizza (con tutto il rispetto per i pizzaioli) sicuramente arriviamo alle conclusioni sbagliate. Giudicare il codice dal suo funzionamento (penso che questa sia l'analogia col sapore della pizza  :'( ) piuttosto che da come è stato scritto, ci ritroviamo poi con problemi di scalabilità, sia al livello di funzionalità che al livello di sviluppi aggiuntivi da fare sullo stesso programma. Per di più, eventuali bug o funzioni maligne verrebbero nascoste agli utenti, che di conseguenza avrebbero ancora meno interesse ad usare il tuo programma.


Se vuoi un'analogia più azzeccata: tu utilizzeresti un'auto che si accende e cammina per fare un viaggio di 1000km, senza assicurarti che il motore sia a posto, le ruote gonfie, i freni a posto e le sospensioni integre? E senza nemmeno poter controllare, perché chi l'ha prodotta ha nascosto tutte queste parti sotto un cofano che il proprietario non può aprire (e magari ci ha anche nascosto un gps tracker dentro)?

Io, personalmente, se installo un programma o una libreria pretendo di vederne il codice sorgente (e lavoro su Mac OS). Tuttalpiù faccio eccezioni quando il programma è sviluppato da aziende come Apple o Google, perché almeno so chi va a prendere i miei dati o chi denunciare qualora avessi problemi.

per g: nella pagina linkata da CrashTest, sezione 4.2, viene spiegato come funziona la compilazione. In short, la risposta è si. Ecco il link di nuovo: You are not allowed to view links. Register or Login
« Last Edit: February 25, 2017, 01:27:21 AM by devilicecream »
 
The following users thanked this post: davenull, lynx

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40