Also erstmal gab es richtige "Viren" seit Windows Vista nicht mehr, und du meinst vermutlich eher einen Trojaner, bzw. noch allgemeiner eine Schadsoftware.
Das Problem an der Sache ist, dass du dafür über Wissen der unteren APIs von Windows verfügen musst, und möglichst eine Sprache wie C oder C++ einsetzen solltest ... am besten wäre gar Assembler, aber ich glaube, das würde dich jetzt überfordern.
Eine Schadsoftware zu schreiben ist nebenbei gesagt eine wunderbare Übung um wirklich ein Verständnis für die internen Vorgänge und die entspr. Funktionalitäten entwickeln zu können, also höre nicht auf Leute, die sagen: "Das ist verboten!" oder "So etwas ist umoralisch" ... nein, ist es überhaupt nicht, und JEDER Student im Bereich Computersicherheit, der etwas auf sich hält, wird nicht drum herum kommen, mit eigener Schadsoftware zu experimentieren.
Das Verbreiten selbstgeschriebener Trojaner & Co ist natürlich höchst asozial und sollte selbstredend unterbleiben. Denke also bitte an deine Mitmenschen, die genauso deine Eltern, deine Geschwister, deine Freunde oder deine FreundIN sein könnten.
Wenn es aber wirklich nur den Zweck der Übung hat: Vorbildlich! Warum nicht?
Leider muss ich dazu sagen, dass die meisten der heutigen Malware-Autoren dumme Kinder sind, die mit C# die .net-API anzapfen, was dann zu teilweise 20 bis 30 MB großen Trojanern führt ... ganz toll!
Zum Vergleich: In den 90ern wurden Trojaner mit Assembler geschrieben, und 10 KB galten schon aus "aufgeblasen".
Wenn du also einen wirklich guten Trojaner bauen willst, der im Grunde eine ähnliche Funktionalität von einem 30MB-C#-Monster hat, dann nutze Assembler in Verbindung mit der Win32-API (die auch auf Windows 10 noch hochaktuell ist, auch wenn der Name etwas anderes impliziert).
Beispiel: Ein Trojaner, der Dateien downloaden kann, Bilder von der Webcam macht und eine Verbindung zu einem C&C Server aufbaut, benötigt als auslieferbare EXE-Datei etwa 700 Byte. (Nicht Kilobyte, sondern wirklich Byte!)
Das selbe in C# frisst sicherlich einige zich bis hundert Kilobyte ...
Aber nochmal: Wie gesagt ist das zu Übungszwecken völlig legitim und auch legal! Solange du auf deinem eigenen Rechner experimentierst, bzw. die ausdrückliche Erlaubnis Dritter hast, deren Rechner benutzen / missbrauchen zu dürfen.
Malware zu verbreiten ist aber eine riesen Sauerei, und jeder, der so etwas tut, sollte sich schämen! Also nutze dein dabei erlangtes Wissen für positive gute Dinge, und sei es nur die eigene Bildung!
Für den Anfang könntest du mit C oder C++ an den Win32-APIs experimentieren, und wenn du dich sicher fühlst, auf Assembler umsteigen, was aber kein Muss ist, und wirklich eine sehr steile Lernkurve hat!
Naja, viel Erfolg!