Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] modificare un applicazione da un' altra applicazione
Forum - C# / VB.NET - [VB.NET] modificare un applicazione da un' altra applicazione

Avatar
NR2 (Normal User)
Newbie


Messaggi: 18
Iscritto: 26/06/2010

Segnala al moderatore
Postato alle 19:18
Venerdì, 13/01/2012
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. :)

PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Up
2
Down
V
Segnala al moderatore
Postato alle 20:13
Venerdì, 13/01/2012
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.

Cosa hai capito?? o.O - NR2 - 14/01/12 10:20
Quello che tu hai spiegato male ... - nessuno - 14/01/12 11:12
Non credo di aver spiegato così male... - NR2 - 15/01/12 14:33


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
1
Down
V
Segnala al moderatore
Postato alle 11:35
Sabato, 14/01/2012
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".

Ok tu hai capito cosa ho chiesto ma purtroppo non ho capito io cosa hai cercato di spiegarmi. Sapresti illustrarmi una guida più dettagliata? Grazie. - NR2 - 14/01/12 17:14
totem a volte mi fai sorridere :) - HeDo - 15/01/12 02:59
Ad esempio http://www.yetanotherchris.me/home/2010/7/12/inside-net-assemblies-part-1.html Se cerchi su google ".net assembly structure" troverai più informazioni. - Il Totem - 16/01/12 17:58


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 9:05
Sabato, 14/01/2012
Un normale programmatore terrebbe il progetto in locale, che modifica in locale, e quando ha finito uppa il programma sul server...:pat:


Blog:
<coming soon>
Appalo:
http://www.appalo.it/
PM