Gambas-it

Gambas3 => Domande tecniche => Topic aperto da: edc17tricore - 17 Settembre 2015, 09:56:48

Titolo: Estrarre sorgente da file .gambas
Inserito da: edc17tricore - 17 Settembre 2015, 09:56:48
Ciao a tutti ragazzi, anzitutto complimenti per la board  :)

Volevo farvi una domanda, avendo in mano un file .gambas senza sorgenti, è possibile ricavarli direttamente da quest'ultimo?
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: vuott - 17 Settembre 2015, 13:21:54
...solo se ci riesci con tecniche di decompilazione (https://it.wikipedia.org/wiki/Decompilazione).    (http://static.iobloggo.com/static/img/smiley/megmoticons/zomp.gif)
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: kicco - 17 Settembre 2015, 13:24:08
Ciao, benvenuto

...no, il file .gambas è un file pseudocompilato per l'interprete.
Non credo proprio che si possano da lì "estrarre" i sorgenti!
 :ciao:
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: Picavbg - 17 Settembre 2015, 15:55:55
Se il programmà è stato scritto in un ambiente Open-source, per quello che ne so, non dovrebbe essere ammesso blindare un programma fornendo solamente il formato in codice esecutivo. L'autore ha il dovere di fornire sempre il relativo sorgente. Perciò potresti chiedere, secondo me, direttamente a lui di fornirti il programma così come l'ha scritto.
Non credo che possa rifiutarsi.
 :ciao:
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: Gianluigi - 18 Settembre 2015, 14:40:24
Ciao, benvenuto anche da parte mia.
Tutti quelli che ti hanno risposto hanno detto cose esatte pertanto a me non resta che rafforzare quanto dice Picavbg: Gambas è rilasciato sotto licenze che ne garantiscono l'apertura in ogni sua parte: GPL (https://it.wikipedia.org/wiki/GNU_General_Public_License) per il programma vero e proprio, SIL (https://it.wikipedia.org/wiki/SIL_Open_Font_License) per i font e CC (http://creativecommons.org/licenses/by-sa/3.0/) per il Wiki (http://gambaswiki.org/wiki/license).
Se l'autore proprio si rifiuta è probabile che si vergogni del codice scritto o che questi contenga software malevolo, in entrambi i casi non perdi nulla.
Ci sono i repositori (http://gambaswiki.org/wiki/app) che contengono molto codice da studiare, anche qui da noi se vuoi puoi sbizzarrirti con tanti codici postati, anche da grandi maestri inarrivabili.
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: edc17tricore - 24 Settembre 2015, 15:52:32
Ciao Ragazzi, anzitutto vi ringrazio per avermi dato risposte.
Il problema è che il suddetto file è parte integrante di un sistema che ho acquistato.

Vi spiego:
-Ho comprato un software, lo vendevano soltanto legato al loro pc, quindi mi hanno fornito un pc con su ubuntu e il suddetto software.
-A un certo punto ho deciso di non rinnovare per l'aggiornamento del sw, potendo però ovviamente continuare ad usufruire del sw che ho acquistato
-Siccome sono una persona previdente per natura, circa una volta al mese eseguivo un bck del disco con acronis
-Fatto sta che una settimana fa il disco del notebook si è guastato, ho il backup fatto con acronis ma se lo ripristino su un nuovo hard disk il software non parte

-Ovviamente chi mi ha venduto il software si rifiuta di riattivarmelo :hard:
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: milio - 24 Settembre 2015, 16:29:49
Che faceva questo software di cosi' importante?
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: edc17tricore - 24 Settembre 2015, 17:01:39
E' un software che si usa in ambito automotive
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: kicco - 24 Settembre 2015, 17:22:58
 :ciao:
...ma come si chiama questo programma(!), magari in rete troviamo i sorgenti!
 :ciao:
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: edc17tricore - 24 Settembre 2015, 17:28:40
:ciao:
...ma come si chiama questo programma(!), magari in rete troviamo i sorgenti!
 :ciao:

Non so se posso incorrere in problemi di copyright scrivendolo pubblicamente
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: Gianluigi - 24 Settembre 2015, 21:01:35
Scusa ma non riesco a capire, se io dico in una discussione che come software grafico ho usato Inkscape per disegnare quella data icona chi mai si potrebbe sentire danneggiato? Fare pubblicità nel forum è vietato, ma non mi sembra questo il caso perché si tratta di mera informazione prodromo alla discussione.
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: edc17tricore - 25 Settembre 2015, 16:17:24
Scusa ma non riesco a capire, se io dico in una discussione che come software grafico ho usato Inkscape per disegnare quella data icona chi mai si potrebbe sentire danneggiato? Fare pubblicità nel forum è vietato, ma non mi sembra questo il caso perché si tratta di mera informazione prodromo alla discussione.

Il software è il dpferase  ;)
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: kicco - 28 Settembre 2015, 12:14:59
Citazione
Il software è il dpferase  ;)
:ciao:
Ho fatto una rapida ricerca in internet e ho scoperto che questo software è inserito in un CDLive di Ubuntu e serve per effettuare il completamento dell'autopulizia dei filtri antiparticolato per  motori Diesel (FAP). Il cd è rigorosamente a pagamento e che pagamento!!! :rolleyes:
Non ho trovato invece dpferase.gambas ne, tantomeno i suoi sorgenti, quindi... :nono:
 :ciao:
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: edc17tricore - 30 Settembre 2015, 16:47:26
Citazione
Il software è il dpferase  ;)
:ciao:
Ho fatto una rapida ricerca in internet e ho scoperto che questo software è inserito in un CDLive di Ubuntu e serve per effettuare il completamento dell'autopulizia dei filtri antiparticolato per  motori Diesel (FAP). Il cd è rigorosamente a pagamento e che pagamento!!! :rolleyes:
Non ho trovato invece dpferase.gambas ne, tantomeno i suoi sorgenti, quindi... :nono:
 :ciao:

Io ho tutto se serve, mi manca solo il sorgente ;D
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: kicco - 30 Settembre 2015, 16:55:04
Citazione
Io ho tutto se serve, mi manca solo il sorgente ;D
edc17tricore, capisco il tuo spirito, ma qui quello che manca, perchè sia rispettata la licenza d'uso di Gambas, è solo il sorgente, che non è reperibile (mi sembra, e fino a prova contraria!).
Con Gambas puoi anche produrre software a pagamento, ma devi rendere disponibili i sorgenti.
 :ciao:
PS: correggetemi se sbaglio!

Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: Gianluigi - 02 Ottobre 2015, 11:08:06
Citazione
Io ho tutto se serve, mi manca solo il sorgente ;D
edc17tricore, capisco il tuo spirito, ma qui quello che manca, perchè sia rispettata la licenza d'uso di Gambas, è solo il sorgente, che non è reperibile (mi sembra, e fino a prova contraria!).
Con Gambas puoi anche produrre software a pagamento, ma devi rendere disponibili i sorgenti.
 :ciao:
PS: correggetemi se sbaglio!

Quale correggerti hai detto cose sacrosante  :D, se io vendo un mio programma opensource con tanto di canone di manutenzione, cosa più che lecita, ho il diritto di sospendere la manutenzione se l'utente sospende i pagamenti del canone ma ho l'obbligo di rilasciare i sorgenti.
Invece è vietato violare i sorgenti di un'applicazione e/o aiutare a farlo.
 :ciao:
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: vuott - 26 Agosto 2016, 14:54:15
Ciò che è possibile comunque fare da un file eseguibile .gambas, è estrarre i sorgenti degli eventuali file allegati al programma in fase di progettazione all'interno della cartella "Dati ".   (http://forum.ubuntu-it.org/images/smilies/sisi.gif)




Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: kicco - 26 Agosto 2016, 16:39:40
Citazione
Ciò che è possibile comunque fare da un file eseguibile .gambas, è estrarre i sorgenti degli eventuali file allegati al programma in fase di progettazione all'interno della cartella "Dati ".   
Ah sì? Adesso ho l'acquolina in bocca !!!
Come si fa?
 :ciao:
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: vuott - 26 Agosto 2016, 16:54:02
Ah sì? Adesso ho l'acquolina in bocca !!!
Come si fa?


     :rotfl:

Devi tenere conto che il codice sorgente dei file, allegati nella cartella "Dati ", viene salvaguardato per intero nei sorgenti dei file .gambas.    :)
Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: vuott - 27 Agosto 2016, 04:11:02
...dunque, in linea generale, come ogni formato di file complesso anche i file con estensione .gambas (eseguibili e librerie Gambas) sono organizzati internamente in blocchi coerenti.
Dopo gli iniziali byte il primo blocco coerente di dati ha inizio sempre al 57° byte (indice 56).

Come ho già detto nel precedente messaggio, tutti i dati dei file allegati al progetto vengono salvati in modo grezzo (senza alcun tipo di compressione) all'interno del corpo del file eseguibile .gambas, diventando ciascuno un blocco a sé stante.
Poiché l'ultima parte dei file .gambas contiene sia l'indicazione del byte ove inizia ciascun blocco, sia la rispettiva dimensione in byte, sono non solo facilmente individuabili l'inizio e la fine dei dati, ma sono anche leggibili tutti quei dati !

Al riguardo ho scritto questo semplice applicativo per l'individuazione del byte (indice) di inizio e della dimensione di ciascun blocco costituente un file avente estensione .gambas:

Codice: [Seleziona]
Private Const INIZIO_ULTIMO_BLOCCO As String = "\x2Estartup\x2Eproject"
Private Const INIZIO_DATI_UTILI As String = "\x00\x00\x00\x00\x08\x00\x00\x00"


Public Sub Main()

  Dim fl As File
  Dim nomefile, dati, ultimi As String
  Dim lung, posult, pos, dmn, n As Integer
  Dim bl As Byte
 
    nomefile = "/percorso/del/file.gambas"
    Print "File eseguibile:   "; nomefile
 
' Apre in lettura il file con estensione ".gambas":
    fl = Open nomefile For Read

' Apprende la dimensione del file:
    lung = Lof(fl)
    Print "Dimensione totale: "; lung; " byte"
    Print

' Legge e carica in memoria tutti i dati del file ".gambas":
    Read #fl, dati, lung

' Riposiziona il puntatore interno del file all'indice zero:
    Seek #fl, 0
   
' Individua la posizione dell'ultimo blocco di dati del file ".gambas":
    posult = InStr(dati, INIZIO_ULTIMO_BLOCCO)

' Prende in considerazione i soli dati dell'ultimo blocco:
    ultimi = Right(dati, Len(dati) - posult)
   
' Effettua un ulteriore filtro, lasciando i soli dati a noi utili:
    n = InStr(ultimi, INIZIO_DATI_UTILI)

' Calcola la posizione dei primi dati a noi utili:
    n += posult - 1

    While True  ' ...ὁ ἄπειρος κύκλος !

' Sposta il puntatore interno del file in avanti:
      Seek #fl, n + 8
      Read #fl, pos
      If pos < 0 Then
        n = Seek(fl) + 4
      Else
        Inc bl
        Read #fl, dmn
        Print "Inizio "; bl; "° blocco al byte "; pos; "  - dimensione: "; dmn; " byte"
        If Mid(dati, pos + dmn + 1, 16) = INIZIO_ULTIMO_BLOCCO Then
          Inc bl
          Print "Inizio "; bl; "° blocco al byte "; pos + dmn; "  - dimensione: "; lung - (pos + dmn); " byte"
          Break
        Endif
        n = Seek(fl)
      Endif
     
    Wend
   
    fl.Close

End



Titolo: Re:Estrarre sorgente da file .gambas
Inserito da: Gianluigi - 27 Agosto 2016, 12:13:38
Durante le notti febbrili con le rotelle a mille, è possibile che il diavolo si impossessi di noi...
Una volta gli indemoniati si mettevano a parlare aramaico, pare che adesso scrivano in greco.  :devil:   :angel:


 :bravo: