Ecco un esempio di quello che voglio dire ...C o C++: come funzionano i caricatori/wrapper?
- utente esegue il programma LOADER.EXE
- LOADER.EXE scarica un altro file EXE, ma mantiene tutto in memoria senza salvarlo su disco
- Esegue il scaricato EXE proprio come se fosse eseguito da disco, ma lo fa direttamente dalla memoria
Ho visto alcune applicazioni come questa, e non ho mai visto un esempio o una spiegazione di come funziona.
Qualcuno sa?
Un altro esempio è che un EXE crittografato è incorporato in un altro. Viene estratto e decrittografato in memoria, senza mai essere salvato su disco prima che venga eseguito.
Ho visto quello utilizzato in alcune applicazioni per prevenire la pirateria.
Modifica: Come nota a margine, programmi come UPX funzionano in questo modo? Ho guardato il codice ma è difficile da decifrare per me, e lo chiedo principalmente per curiosità, non ne ho bisogno.
Wow, sembra molto più complicato di quanto pensassi. Hai qualche esperienza con UPX? Funziona anche così? (Non ne so molto degli addetti al confezionamento). Speravo di riuscire a trovare un codice sorgente che dimostri ciò che sarebbe un po 'facile da seguire. –
@guitar: ho appena dato un'occhiata al codice. Lo stub del caricatore è un assemblaggio piuttosto macro pesante, ma sembra che il packer stia eseguendo una pre-elaborazione molto se questo funziona, quindi lo stub può semplicemente decomprimere un file già allineato in memoria e quindi ottenere le importazioni. Questo ovviamente non è sufficiente per il tuo 2 ° e 3 ° esempio. La roba del packer in http://upx.hg.sourceforge.net/hgweb/upx/upx/file/c3853d205747/src/pefile.cpp è più vicina, ma sono sicuro che ci sono altri esempi con casing speciale altrove. –
Questo sembra un buon inizio, sebbene non sia di qualità commerciale. http://code.google.com/p/egodust/source/browse/trunk/pe.c –