• XSS.stack #1 – первый литературный журнал от юзеров форума

[C#] Имя процесса и остановка другого, при появлении выбранного

Ags1of

RAM
Пользователь
Регистрация
26.11.2021
Сообщения
122
Реакции
1
Здравствуйте, делаю определённый софт, одна из функций защиты заключается в том, что при запуске диспетчера задач или процесс хакера, софт должен как-то себя либо зафризить на время того, когда одна из этих программ запущена и не показываться ни там, ни там.

Вот наброски кода:


C#:
 public static void Defense()
        {
            Process proc = new Process();

            while (true)
            {
                Thread.Sleep(1000);
                Process[] procList = Process.GetProcesses();
                string[] attackedProcess = { "System.Diagnostics.Process (ProcessHacker)", "System.Diagnostics.Process (Taskmgr)", "Taskmgr.exe", "Taskmgr", "Process Hacker", "Process Hacker.exe", "process hacker", "process hacker.exe" };
                
                for(int x = 0;x < procList.Length; x++)
                {
                    Console.WriteLine(procList[x]);
                    for(int z = 0;z < 8; z++)
                    {
                        //Console.WriteLine(attackedProcess[z]);
                        if (procList[x].ToString() == attackedProcess[z])
                        {
                            break;
                        }
                        else
                        {
                            continue;
                        }
                    }
                }
            }
 
Пожалуйста, обратите внимание, что пользователь заблокирован
C#:
using System;
using System.Diagnostics;
using System.Threading;


namespace csTestProject
{
    class Program
    {
        public static void Defense()
        {
            while (true)
            {
                Thread.Sleep(1000);
                Process[] procList = Process.GetProcesses();
                // processhacker актуален для 2 версии. Другие смотрите сами
                // либо выбирайте общую часть и через Contains проверяйте

                string[] attackedProcess = { "processhacker", "taskmgr" };

                foreach (Process p in procList)
                {
                    for (int i = 0; i < attackedProcess.Length; i++)
                    {
                        if (p.ProcessName.ToLower() == attackedProcess[i])
                        {
                            Console.WriteLine("Detected: " + p.ProcessName);
                            break;
                        }
                    }
                }
            }
        }

        static void Main(string[] args)
        {
            Thread def_thread = new Thread(new ThreadStart(Defense));
            def_thread.IsBackground = true;
            def_thread.Start();
            Console.ReadLine();

        }

    }

}

Забудьте про вот это:
procList[x].ToString()

Не нужно кастовать объект к строке, когда у этого объекта и так есть нужная информация в строках. (ProcessName свойство)
как-то себя либо зафризить на время того
Нужно уже смотреть что за софт и как он работает. Если есть какой-то бесконечный цикл, то сделайте через флаг. Просто булевую переменную добавьте, которая меняется из-за детекта.
 
Последнее редактирование:
C#:
using System;
using System.Diagnostics;
using System.Threading;


namespace csTestProject
{
    class Program
    {
        public static void Defense()
        {
            while (true)
            {
                Thread.Sleep(1000);
                Process[] procList = Process.GetProcesses();
                // processhacker актуален для 2 версии. Другие смотрите сами
                // либо выбирайте общую часть и через Contains проверяйте

                string[] attackedProcess = { "processhacker", "taskmgr" };

                foreach (Process p in procList)
                {
                    for (int i = 0; i < attackedProcess.Length; i++)
                    {
                        if (p.ProcessName.ToLower() == attackedProcess[i])
                        {
                            Console.WriteLine("Detected: " + p.ProcessName);
                            break;
                        }
                    }
                }
            }
        }

        static void Main(string[] args)
        {
            Thread def_thread = new Thread(new ThreadStart(Defense));
            def_thread.IsBackground = true;
            def_thread.Start();
            Console.ReadLine();

        }

    }

}

Забудьте про вот это:


Не нужно кастовать объект к строке, когда у этого объекта и так есть нужная информация в строках. (ProcessName свойство)

Нужно уже смотреть что за софт и как он работает. Если есть какой-то бесконечный цикл, то сделайте через флаг. Просто булевую переменную добавьте, которая меняется из-за детекта.
Спасибо огромное, помогло!
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх