VB [SORGENTE] Eseguire un exe direttamente in memoria

R: [SORGENTE] Eseguire un exe direttamente in memoria

Fa conto che questo sorgente esiste da prima ce lui nascesse.
Ed è impossibile che funzioni su x64, penso capirai da solo i motivi.

Inviato dal mio GT-I9300 con Tapatalk 2
 
Ultima modifica:
Re: R: [SORGENTE] Eseguire un exe direttamente in memoria

Su c++ - CreateProcess from memory buffer - Stack Overflow si fa riferimento ad un libro in cui l' autore della risposta avrebbe letto della tecnica in questione.
Su SIG^2 G-TEC - Dynamic Forking of Win32 EXE invece vi è il post originale a cui molti sembrano fare riferimento.
Non so riconoscere con certezza se hai portato in vb del source gia esistente o lo hai prodotto partendo dalla teoria per lo stesso motivo per cui posso solo ipotizzare le cause del malfunzionamento su x64: programmo solo nel net framework.
Non ho mai dovuto pormi il problema di adattare la struttura dei miei programmi alla struttura del sistema operativo e non saprei individuare le cause di un problema di questo genere, avevo semplicemente avuto l' impressione che ti stessi prendendo crediti per un lavoro non tuo e ho voluto esternare la mia perplessità.
 
Ultima modifica:
La questione è molto semplice.
Per fare quello che fa questo codice con linguaggi ad alto livello non ci sono altri modi, se non leggere sfumarure.
Dire che l'ho inventato (solo tua affermazione) sarebbe come dire che ho inventato il ciclo for.
Pertanto non sono qui per appropriarmi "dell'invenzione del ciclo for".
Si il codice l'ho scritto io, e solo per condividere conoscenza, cosa che comunque ho deciso di non fare più da tempo a causa di persone che sono più impegnate a perdere tempo, che interessate a capire. Penso si noti la mia assenza di nuovi contributi, ormai mi limito alla moderazione.
Ho 38 anni, di cui 20 di programmazione per professione e 12 di giovane apprendimento. Pertanto non ho nessun interesse a fare copia incolla dal web di codice fatto da chissà chi.

Per quanto conerne problemi di una potenziale riadattabilità di codice dotnet (framework é solo un insieme di dll ed è un termine generico), semplicemente queste cose non le puoi fare senza ricorrere ad api native o classe marshal (che in ogni caso chiama nativo).
Se hai altre curiosità chiedi pure.
 
Ultima modifica:
EDIT.

- - - Updated - - -

Non riesco a capire perché in wow64 il loader ritorni un STATUS_ACCESS_VIOLATION (0xC0000005), le strutture sono le stesse i context pure e la memoria è eseguibile.

- - - Updated - - -

Et voila.. http://www.codereversing.com/blog/?p=65
 
Grazie a te, questo codice mi ha semplificato veramente la vita per il funzionamento del loader :p
 
Ci vorrebbero delle F.A.Q nel topic principale :D

Io come sistema d'aggiornamento uso due .exe
Software.Exe <-- sarebbe il programma in se. in più ha una funzione che verifica se esiste un update.
Update.Exe <-- Appunto l'exe che si avvia in caso ci fosse una nuova versione di "Software.Exe" e procede eliminando e riscaricando appunto "Software.Exe"

Quindi la mia FrequenteDomanda è:
Con questo sistema posso inserire Update.Exe come Risorsa(o quant'altro) in "Software.Exe" e far in modo che se c'è un Update questo'ultimo venga eseguito senza problemi?
Inserendo un secondo Exe in un Exe (scusate ma non so come evitare il gioco di parole) diventa leggermente più pesante il Software giusto?
 
Ultima modifica:
Già update non nel senso che hai inteso, ma nel senso di modifica del codice a runtime. Dai su non soffermarti a due parole esamina il codice :)

Inviato dal mio GT-I9300 utilizzando Tapatalk
 
Ultima modifica:
Già update non nel senso che hai inteso, ma nel senso di modifica del codice a runtime. Dai su non soffermarti a due parole esamina il codice :)

Inviato dal mio GT-I9300 utilizzando Tapatalk

A me da quest'errore (quando premo il bottone):
59d790d32cb70101c4a1e471623ee60c.png

Uso VB 10 Express....!
Puoi aiutarmi? :/
 
E come risolvo?

Debugga il tuo programma (basta che il loader lo carichi) e poi guarda le sezioni in memoria, la prima (ImageBase, che di solito è 400000h) contiene quel che cerchi, confronta le strutture che stai utilizzando con quel che il loader ha caricato in memoria e trova le differenze.
Non sono sicuro che bisogna fare così.
CREDO che dovrebbe andare bene per capire quel che sta succedendo.

Inviato dal mio LG-P880 utilizzando Tapatalk