Domanda
Sto lavorando in VC ++ 2008 (express) e vorrei scrivere qualcosa in C che crei un "vuoto" exe che in seguito posso chiamare LoadLibrary
e utilizzare BeginUpdateResource
, UpdateResource
, EndUpdateResource
per modificare il contenuto.
Basta scrivere un file a 0 byte non mi permette di aprirlo con LoadLibrary perché non è una risorsa.
Soluzione
Puoi compilare un file .exe vuoto con, ad esempio,
int main() { return 0; }
e usalo come modello. (O un vuoto .dll, qualunque cosa)
Altri suggerimenti
Il formato .EXE è un formato file complicato. Ha un sacco di intestazioni richieste solo per descrivere le sue proprietà di esecuzione di base (16 bit, 32 bit o 64 bit e modalità DOS / Win16 / Win32 / Win64 e EXE contro DLL). Successivamente, deve disporre di una tabella corretta per il trasferimento degli indirizzi. Non è banale e hai fatto qualche ricerca sul formato di file .EXE per farlo correttamente.
" La creazione di " un exe è qualcosa in cui il compilatore è molto bravo. Quindi perché non fare in modo che il compilatore crei l'eseguibile desiderato e utilizzi quel file (o una rappresentazione binaria del suo contenuto) per copiarlo?