Oppure

Loading
13/01/12 18:18
NR2
Ciao a tutti.
La domanda di oggi è:
sapete come fare a modificare un applicazione compilata in visual basic da un' altra applicazione?
Mi spiego meglio...
Ho realizzato 2 applicazioni client/server con i socket e adesso vorrei creare una terza applicazione da dove posso aprire il server e modificarlo.
Non pensate male e non criticate le dua applicazioni sono innoque e funzionano solo in locale.
nella terza applicazione vorrei che fosse possibile modificare il messaggio che ho inserito nel server, il nome del file e l'icona.
Sapete come aiutarmi?
Grazie a tutti coloro che risponderanno e che cercheranno di aiutarmi. :)
aaa
13/01/12 19:13
Anche se sono "innocue" (ahi ... questo italiano, lingua sconosciuta ...), non mi sembra che quello che vuoi fare sia molto bello ... non si modifica roba scritta da altri.
14/01/12 8:05
Qwertj
Un normale programmatore terrebbe il progetto in locale, che modifica in locale, e quando ha finito uppa il programma sul server...:pat:
aaa
14/01/12 10:35
Il Totem
In generale non è così semplice modificare un eseguibile già compilato, anche in casi in cui si tratta di bytecode come in .NET.
Tuttavia le tue richieste sono molto più facili da soddisfare. Gli eseguibili .NET sono divisi in stream che contengono i dati e i metadati dell'applicazione che possono essere usati per disassemblarla. In particolare, lo stream "#Strings" contiene una lista di tutte gli string literals, ivi compresi tutti i messaggi. E' sufficiente modificare questo record per cambiare il testo. Fai attenzione a non cambiare la lunghezza della stringa, perché andresti a inficiare tutti gli offset del file e quindi lo corromperesti. Le stringhe sono tutte divise da un terminatore nullo.

La signature dei metadati è 0x424A5342. Poi ci sono:
32 bit per la versione
32 bit riservati
32 bit che contengono un valore L
L byte che contengono la versione del CLR
16 bit riservati
16 bit che contengono il numero di stream nell'assembly

per ogni stream, in sequenza:
32 bit di offset
32 bit per la dimensione dello stream
una stringa terminata da uno 0 che indica il nome dello stream (questa stringa è allineata a blocchi di 4 byte. Se è lunga 4n byte, ci sono comunque altri 4 byte di padding)

Devi trovare lo stream il cui nome è "#Strings". Quindi devi spostarti nel file alla posizione MO + SO, dove MO indica l'offset della signature dei metadati e SO l'offset dello stream Strings letto dalla lista degli stream. Ora puoi leggere e/o sostituire tutte le stringhe che vuoi, purché rimani nell'offset e nella lunghezza dello stream.

L'icona viene memorizzata nella parte di risorse dell'eseguibile come se fosse un normale eseguibile win32 nella sezione ".rsrc".
aaa