Vill du programmera ett tvättäkta virus som infekterar PE-filer, eller en mask (eller kombination av de två)?
Som andra påpekat så finns det en del sätt du kan infektera via:
* Skriver över destination filen totalt
* "Appendar" virusets kod till filen och modifierar därefter entry-pointen som skall finnas i någon av IMAGE_X_HEADER strukturerna
* "Prependar" destination filen med virus koden så virusets körs först. Du kan därefter använda dig av en JMP (E9) och sedan hoppa till programmets originella kod för att undvika misstanke hos användaren
* Du kan öka den virtuella storleken på den sista sektionen, som det kallas, i PE-filen tills den är stor nog att hålla viruses kod med. Därefter skriver du helt enkelt till slutet av sektionen och modifierar entry-pointen eller använder dig av en JMP
Det finns även andra sätt, men dessa är de mesta populära skulle jag tro.
Vill du infektera filer så borde du studera PE-filformatet samt bli bekant med dessa APIs:
CreateFile
CreateFileMapping
MapViewOfFile
...
Angående spridning; det är rätt så vanligt att maskar/virus bär på sin egna SMTP-motor för att massprida sig via e-mail, vilket inte är så svårt.
Du behöver en EML fil för att studera dess struktur (ifall du inte redan kan det) eller så kan du nog ladda hem en tutorial om e-mail formatet på nätet. Därefter är det bara att konstruera ett e-mail med en Base64-kodning av sig själv och använda sig av ett lockande ämne samt text för att lura användaren till att öppna ditt e-mail eller den bifogade fil.
Du kan även skapa en sisådär 100 kopior av dig själv i KaZaA's share katalog eller någon av de andra populära fildelningsprogrammen (dock inget jag skulle göra).
Det går även att sprida sig via nätverket med WNet* API:na, men detta orkar jag inte gå igenom just nu.
Angående s.k exploits; arbeta på de ämnena jag tidigare nämnde, sedan kan du börja med exploits. Dock är det inte lika vanligt (såvitt jag vet) med användarkritiska exploits idag, i alla fall inte som på gamla goda Klez tiden.
Lycka till!