Autore Topic: Estrarre sorgente da file .gambas  (Letto 2709 volte)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.145
  • Tonno verde
    • Mostra profilo
Re:Estrarre sorgente da file .gambas
« Risposta #15 il: 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:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.258
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Estrarre sorgente da file .gambas
« Risposta #16 il: 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 ".   




« Ultima modifica: 26 Agosto 2016, 16:35:49 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.700
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Estrarre sorgente da file .gambas
« Risposta #17 il: 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:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.258
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Estrarre sorgente da file .gambas
« Risposta #18 il: 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.    :)
« Ultima modifica: 26 Agosto 2016, 17:06:21 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.258
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Estrarre sorgente da file .gambas
« Risposta #19 il: 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



« Ultima modifica: 27 Agosto 2016, 15:25:43 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.145
  • Tonno verde
    • Mostra profilo
Re:Estrarre sorgente da file .gambas
« Risposta #20 il: 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:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro