UP! @oregon Evitiamo SPAM!
-Grazie
UP! @oregon Evitiamo SPAM!
-Grazie
Non hai capito nulla. Io non faccio proprio nessuno spam.
Sono intopic e ti ho risposto dandoti una soluzione "pratica". In definitiva
1) quella tecnica NON funziona su sistemi a 64 bit, ma solo su 32
2) è una tecnica NON utile ai fini del lancio di un eseguibile se non a fini "illeciti"
A questo punto, come da regolamento, vuoi chiarire perché ti serve l'esecuzione dalla memoria e non ti basta quella normale con un file temporaneo? Come in altri casi, dalla risposta il moderatore deciderà ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Ad occhio confermo quanto ti è stato detto di là... un bel po' di quegli Int32 e UInt32 dovrebbero essere IntPtr. Inoltre, non so quanto la cosa si sposi correttamente con le strutture dati "allargate" per eseguibili a 64 bit, quanto possa piacere ad un exe con dipendenze non banali (ad esempio un eseguibile .NET) essere caricato in quella maniera (di fatto riciclando il lavoro fatto dal loader per un altro eseguibile e sovrascrivendo con il tuo vai a tenere per buono il resto dell'ambiente creato dal loader per l'altro eseguibile, che non è detto che vada bene), e se ci sono limitazioni per la modifica di memoria tra processi a "numero di bit" diversi.
In ogni caso, discussioni del genere si possono portare avanti con altro spirito: un conto è cercare di imparare come funziona il loading di un eseguibile, come si possa patchare il processo freezato, perché quel codice fa quello che fa, un altro è l'atteggiamento a "plz give me teh codez", per cui lo scopo è abbastanza chiaramente scrivere l'ennesimo malware inutile di cui il mondo certo non sentiva la mancanza, sfruttando peraltro per le "cose difficili" solo codice scritto da altri; non capisco dove stia la soddisfazione di fare una cosa del genere senza imparare nulla.
Chiudo.
Amaro C++, il gusto pieno dell'undefined behavior.