Newsgroup: it.comp.lang.visual-basic
Titolo: Ricavare versione sorgente da eseguibile

Salve a tutti,
premette che non sono un programmatore visual basic, solitamente
programma PLC, ma mi trovo ad affrontare un problema per me
insormontabile.
Dunque, l' azienda presso la quale lavoro in passato a sviluppato un
software in VB6, il software in questione gestisce la comunicazione
con dei PLC Omron. Di questo software ne esistono numerose versioni,
in quanto ogni clienet ha voluto delle personalizzazioni. La persona
che ha sviluppato il software non è più presente in azienda e non ha
lasciato traccia di cosa ha fatto a chi.
Io adesso mi trovo a dover mettere mano a questo software ma non
riesco ha trovare dei sorgenti che mandandoli modalità test mi diano
lo stesso risultato di un programma installato, mancano dei controlli,
oppure mi dice che mancano delle licenze etc. etc.
La mia domanda è la seguente:
dato un eseguibile exe, e possedendo i sorgenti, è possibile risalire
a quale sorgente ha generato l'eseguibile?
Grazie in anticipo a chi mi concederà un pò di attenzione
Ciao
Gianluca


Se è compilato in codice nativo, no... al massimo puoi arrivare al
codice assembler
Se è compilato in P_Code, ni... nel senso che esisteva un vecchio
decompilatore per vb (credo versione 4)  ma non credo funzioni bene
per VB6, e comunque il risultato non è particolarmente leggibile.
Anche avendo a disposizione una copia dei sorgenti, la vedo molto
difficile risalire a quale versione esatta degli stessi è stata usata
per compilare, se non facendo prove empiriche...

a quale sorgente ha generato l'eseguibile?
No, � praticamente impossibile.
Quello che potresti provare a fare � procedere per tentativi confrontando la
dimensione del file eseguibile prodotto con l'originale. (sempre che non sia
stato compresso con UPX o un programma simile)
Se esistono diverse versioni forse esistono diverse copie di backup da cui
partire, ma � comunque un discreto casino.
L'unica � partire a studiarsi i sorgenti, cosa che se non sei pratico di VB �
gi� abbastanza complicata, poi dipende anche da come il programmatore ha
strutturato e commentato il codice.
--
ciao
  Stefano

 a quale sorgente ha generato l'eseguibile?
No: ma puoi provare un metodo empirico: confronta la data del .vbp
con quella dell'exe.... 

 stato compresso con UPX o un programma simile)
Questo purtroppo non è assolutamente affidabile... il compilatore di
VB6 è noto per generare eseguibili diversi, come dimensione, anche
senza toccare una virgola di codice e a parità di ottimizzazioni
(quando nativo)

a quale sorgente ha generato l'eseguibile?
S� se � stata usata correttamente la numerazione della release.
Puoi fare questo:
(a) verifica il numero di versione dei vari exe
(b) apri (con un editor di testo) tutti vbp che hai e verifica per ognuno il 
numero di versione dato dalle chiavi:
MajorVer=
MinorVer=
RevisionVer=
Chiaramente � possibile che tu non abbia il sorgente di uno specifico exe, 
per� potrebbe essere quello con il numero di versione pi� vicino (maggiore).
Se hai sfortuna, non hanno usato questa caratteristica e tutti gli exe sono 
1.0.0, oppure sono stati usati numeri di versione diversi resettando ogni 
volta il numero di revisione, il che ti renderebbe la vita pi� difficile.
Tieni anche presente che l'editor di VB6 salva nel .VBP il numero della 
*prossima* release, quindi per l'exe x.y.14 hai un vbp con x.y.15.
Da qui in poi � solo fortuna (per cos� dire).
SM

(quando nativo)
In verit� non mi sono mai accorto di questa cosa, guardando le versioni
successive in una mia applicazione ho comunque verificarto che i .exe aumentano
di dimensioni rispetto alle pi� vecchie.
D'altra parte � comunque un sistema empirico con molti limiti, per me l'unica �
studiarsi i sorgenti.
--
ciao
  Stefano

 
Sto provando ad usare il tuo metodo, ho 72 progetti tutti chiamati 
monitor.vbp da controllare, ovviamente tutti gli eseguibili si chiamano 
monitor.exe, penso di avere bisogno di molta fortuna per cavare fuori 
qualche cosa.
Grazie
Gianluca

 che i .exe aumentano di dimensioni rispetto alle pi� vecchie.
Confermo, aumenta man mano che scrivi.
Per� ho notato che se cancelli un pezzo di codice, o un controllo, e 
ricmpili le dimensioni nn calano, e se calano non lo fanno in maniera 
proprorzionale a quando sale.
Un p� come il prezzo della benzina alla pompa e il petrolio in borsa
-- 
Greg 

 Gianluca
IMHO l'azienda fa prima a chiedere una consulenza a quello che è
andato via!...ad accordarsi!
Costa molto all'azienda pagare l'ex dipendente che tenere te giornate
intere a "spippolare a vuoto"!...a meno che non ti paghino a risultato
invece che ad ore...e allora sei "bischero"(scusa la franchezza) ad
aver accettato un lavoro che non sai fare!

 ha
scritto:

Ho appena provato, dezippando i sorgenti di una versione vecchia (del 2002) e
ricompilandoli, la dimensione dell'eseguibile � sempre la stessa di allora. 
Quindi se lui ha accesso ai sorgenti e ricompila non dovrebbe cambiare nulla.
Io per� non incorporo le immagini .bmp nei form ma le carico dopo, quindi
l'eseguibile � sempre abbastanza piccolo nel mio caso.
--
ciao
  Stefano

 - Mostra testo citato -
ed aggiungo
hai detto (cito)
"..Io adesso mi trovo a dover mettere mano a questo software ma non
riesco ha trovare dei sorgenti che mandandoli modalità test mi diano
lo stesso risultato di un programma installato, mancano dei
controlli,
oppure mi dice che mancano delle licenze etc. etc.
..."
SO CAZZI NERI!
Se ne hai 72...per la legge combinatoria...passi un intero pomeriggio
a provarli tutti e 72 finchè non ne trovi uno che corrisponde a quel
cliente! Ce ne sarà uno che stampa il nome di QUEL cliente? O che ha
l'intestazione delle stampe o qualcos'altro che lo fa associare ad un
cliente?
Da quello che capisco hai 72 sorgenti...ma li avrai in 72
cartelle...casomai con il nome del cliente!
Se non li compila...quello E' UN ALTRO problema!
Casomai il pc dell'amico che se ne è andato è stato riformattato e
lavori su delle copie...o hai installato dei SP...o modificato qualche
installazione!
Se vai nel menu progetto click su "riferimenti"...ti dice COSA MANCA
QUel che manca lo devi trovare!...lapalissiano!
devi reinstallare quello che lui si ASPETTA di TROVARE...altrimenti
non compila! (lui ti dice una cosa del genere...ho capito che da
napoli vuoi andare a roma...ma io non ho la macchina! Trovami una
macchina ed io ti ci porto!)
SE LA tua azienda NON HA litigato con il vecchio dipendente...al
termine di questa fatica...troverai quello che cerchi!
Altrimenti può darsi che il tipo si sia incazzato e si sia portato a
casa i sorgenti aggiornati lasciando in azienda quelli obsoleti!
Ma io la lascerei come ultima opzione...la gente è meno "incazzina" di
quello che sembra!
E' più facile che tu stia lavorando su un pc al quale mancano librerie
e/o ocx !!!

 
Comunque grazie per tutti i consigli.
Ciao
Gianluca

 Comunque grazie per tutti i consigli.
Quando sarai riuscito a ristabilire l'ordine, fatti la cortesia di 
mettere tutto quanto sotto controllo del codice sorgente, cos� potrai in 
ogni momento generare una certa versione del sw.
-- 
S.

Stevie ha scritto:

Se puoi, mi spieghi pi� in dettaglio cosa intendi?

 Se puoi, mi spieghi più in dettaglio cosa intendi?
SourceSafe, Subversion e affini....
http://it.wikipedia.org/wiki/Controllo_versione
A seconda di quale versione di VB6 avete, SourceSafe dovrebbe essere
incluso nei CD di installazione...

 Se puoi, mi spieghi pi� in dettaglio cosa intendi?
Luca D ti ha gi� dato un paio di nomi.
Documentati su Subversion
 
http://subversion.tigris.org
che funziona bene su Windows ed ha un bel manuale dell'utente.
Puoi inoltre trovare qualche informazione di carattere generale su 
alcuni miei vecchi post.
-- 
S.

 incluso nei CD di installazione...
Ho visto che sourcesafe � installato e fino ad un certo punto � stato 
utilizzato. Se l'avvio riesco a vedere che un certo numero di progetti 
sono gestiti, mentre altri no. Quelli non gestiti sembrano le ultime 
versioni realizzate quindi quelle da cui dovrei partire io.
I casi sono due:
	1) Chi mi ha preceduto ha ignorato l'utilizzo di VSS e ha 			 
incominciato a fare copie su copie cos� come venivano.
	2) Devo mettermi a studiare VSS e scoprire che � a me che sfugge 	 
qualcosa.
L'ipotesi numero due rimane valida anche in caso che la numero uno sia 
vera.
Grazie ancora per l'aiuto.
Ciao
Gianluca