Newsgroup: it.comp.programmare.win32
Titolo: [Reverse-Engineer] Decompilatori per VB e C#

Ciao,
sapete dove posso trovare dei decompilatori che a partire da un .exe o da
una .dll creano il codice sorgente in Vb ( sia Vb o Vb.Net mi va bene uno
qualsiasi) o C# ? e che organizzano tutte le resources per poi lavorare sul
codice da VS.Net2003
Ciao,
P.s.: l'uso che farò sarà solo a scopo di studio e per recuperare alcuni
programmi che ho fatto io ma ho perso i file di progetto.
--
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site (
http://www.tekkentag.altervista.org/
 )
Co-Webmaster di SceptilePage (
http://www.sceptilepage.altervista.org/
 )
Account Messenger: 
thetot...@msn.com

 qualsiasi) o C# ?
Cosa intendi per uno qualsiasi?
Per la piattaforma .Net esiste Reflector, che è freeware e che permette da 
un exe di avere i sorgenti sia in VB.Net che in C# che in Managed C++. Se 
non l'hai provato probabilmente è la soluzione che fa al caso tuo.
Per VB nativo, invece, non conosco nessun decompilatore specifico che ti 
ridà il codice VB partendo da un exe. 

 ridà il codice VB partendo da un exe.
Però per il Vb ci vogliono sempre le librerie Run-time, quindi è sempre
qualcosa di intermedio, dove potrò trovare un buon decompilatore?


 qualcosa di intermedio, dove potrò trovare un buon decompilatore?
Non conosco il Vb nativo, ma comunque non riesco a capire se questo 
programma che tu vuoi assolutamente e ardentemente decompilare (ho visto che 
hai postato anche su altri newsgroup) è in VB.Net o in VB nativo (nel qual 
caso puoi anche lasciar perdere il Reflector). 

 caso puoi anche lasciar perdere il Reflector).
Non è UN programma in particolare, ma vorrei sapere SE esiste qualcosa che
decompila gli altri linguaggi, diciamo, per fare un pò di reverse-engineer
su tutto, non solo su .Net.


 qualcosa di intermedio, 
non e` detto, da un paio di versioni puoi compilare anche
in codice nativo
-- 
ciao, hal

 ridà il codice VB partendo da un exe. 
Esiste, esiste... Per VB4, VB5 e VB6 però non ricordo più dove li 
pescai...
-- 
IBM: Inshallah Burak Ma'lesh
News 2000 [v 2.06] / StopDialer / PopDuster - 
http://www.socket2000.com
Akapulce portal: 
http://www.akapulce.net

 pescai...
Non lo ricordi perche` non puo` esistere, per lo meno che dia
un output che serva davvero a qualcosa.
-- 
ciao, hal

Ma non ne esiste uno semplice che si trova l' Assembly (il linguaggio, non
l' .exe ;-) e poi lo "traduce" in VisualBasic ?
Anche se poi le variabili le chiama var1 o i metodi f1 o le sub sub1 ecc...


 l'assembly, al massimo tradotto in un pessimo C.
ma come si ricava l'assembly appunto.


 Due di Picche wrote:

Prima di trarre conclusioni dovresti vederlo...
-- 
Nice computers don't go down.


 Prima di trarre conclusioni dovresti vederlo...
Vorrei proprio vederlo.
Intendiamoci, il fatto che io non sia capace di scriverne uno
non implica che nessuno debba riuscirci.
Con vb6 non e` come decompilare 
vb.net/c#
 o java, per i quali
non occorre uno scienziato per farlo.
Se l'eseguibile e` stato compilato in p-code puoi certamente
fare molto, ma  se e` compilato in  *nativo* e magari con l'
apporto di ottimizzazioni e` davvero dura. Riesci certamente
a  ricostruire la  struttura delle maschere, riesci a sapere
come si chiamava  il progetto, la versione di  vb e dove era
installato sul pc che ha compilato, nonche` le dll importate
con le relative funzioni.
Peraltro difficilmente  le suddette informazioni ti danno un
convreto valore aggiunto.
Se nel codice abbondano classi e moduli le cose si complicano
davvero tanto. Scrivessi io il decompilatore, non saprei come
proseguire da  questo punto  in poi, ma,  ripeto, non sono un
esperto.
Dai miei eseguibili compilati in codice nativo non sono ancora
riuscito ad  estrarre piu` delle  informazioni che ho elencato
sopra.
-- 
ciao, hal

 su tutto, non solo su .Net.
Escluso .NET e JAVA (non dimentichiamoci che anche JAVA gira su una 
macchina virtuale e che esistono dei decompilatori), escluso VB in 
quanto interpretato (esistono tool di decompilazione di VB, ma spesso 
causa il copyright non agiscono fino in fondo... cerca vbreformer e 
altro) il resto da quel che mi risulta sono sistemi compilati.. e quando 
hai un compilato con tutta la buona volontà è difficile risalire al 
codice sorgente vero e proprio (eccetto il fatto che il prodotto sia una 
versione con le informazioni di debug.. ma anche lì non ricavi proprio 
tutto)... ti resta soltanto il linguaggio assembly.. ma ovviamente da un
listato assembly non ci fai molta analisi (puoi analizzare singole 
funzioni.. singoi comportamenti.. un intero programma è dispendioso in 
termini di tempo e di costi umani)
antonio

 termini di tempo e di costi umani)
e dove si trovano decompilatori per assembly ?
P.s.: Esistono convertitori di codice per .Net ? ad esempio da C++ a C#, da
Vb.Net a C# ecc... e poi, convertitori ad esempio per Java & C#? e per
Unmanaged C++ a Vb.Net?
Spero di non chiedere troppo.
Ciao,


 Vorrei proprio vederlo.
è possibile che esista una cosa del genere. certo, si tratta non di
semplice disassemblaggio, ma di vera e propria decompilazione; tuttavia è
fattibile: il compilatore VB sempre quello è, e il codice che genera
sempre quello è. se un programma si mette ad analizzare la sezione di
codice di un output del VB ad es. cercando tutti i CALL, trova tutte le
chiamate a funzioni: sapendo che nei programmi VB la maggior parte delle
chiamate sono generate dal compilatore e sono dirette verso gli entry
points delle schifosissime librerie del VB, e naturalmente conoscendo gli
indirizzi di questi entry points, è già possibile riottenere qualcosa di
abbastanza leggibile (il decompilatore può facilmente tradurre le chiamate
alle schifosissime librerie in chiamate alle "SUB" delle librerie del VB);
conoscendo inoltre tutte le altre DLL importate nel programma e tutti gli
entry points utilizzati in esso (possibilmente anche con rispettivi nomi),
è possibile ricostruire anche eventuali chiamate API Win32 o chiamate a
librerie esterne. infine con un minimo di riconoscimento di pattern è
possibile ricostruire il vero e proprio codice BASIC (se così vogliamo
chiamarlo) da cui è stato generato quell'assembly. l'unica cosa che non
puoi sapere sono i nomi originali delle variabili e delle funzioni, ma
credo che non si possano sapere neanche col dotnet; mi sembra che col Java
si sapessero solo i nomi delle classi, delle funzioni e dei campi, ma non
delle variabili.
ciao
PS: sia ben chiaro: si tratta di un lavoro non solo abbastanza difficile,
ma anche e soprattutto disgustoso che io non farei mai, ne' mai farebbe
nessun vero programmatore in grado di farlo (perché mai un vero
programmatore dovrebbe interessarsi di quell'obbrobbrio del Visual
Basic?); quindi a meno che il tool non sia stato prodotto internamente a
Microsoft...
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ma come si ricava l'assembly appunto.
se vuoi solo ricavare l'assembly è sufficiente utilizzare un
disassemblatore o anche un semplice debugger, ma dubito che ne caverai
qualcosa...


 Spero di non chiedere troppo.
no... esiste un tool JAVA -> C# ma non mi pare mai di aver visto tool 
c++ c# 
vb.net
 c# e viceversa...
scusa la domanda.. ma qual è il fine ?
antonio

> scusa la domanda.. ma qual è il fine ?
Il fine di cosa dei convertitori o dei decompilatori?
dei convertitori mi servono per convertire spezzoni Java e C++ in C# (
questi spezzoni di codice sono ricavati da progetti open-source)
dei decompilatori invece per sfizio, dico, vorrei capire come funzionano
alcuni programmi.


 qualcosa...
già...
peccato, ci vorrebbe un decompilatore che estraga l'assembly e poi lo
converte :D


povero vb ...
Passiamo al C# :D :-D :-D :-D
