Написал приложение, у которого есть несколько функций, которые всё время крутят цикл while. Это защита от запуска диспетчера задач и ЮсбСерчер, они стоят на while(true) циклах, тем самым, не давая выполняться другим методам, да и вообще, когда в какой-то из этих метов заходит программа, то она весит только на нём, а дальше не идёт. А мне надо сделать так, чтобы и другие методы выполнялись тоже.
C#:
async static Task Main(string[] args)
{
//AutoRun(IsInAutoRun());
//Crash();
//USBSearcher();
//ToDef();
//Defense();
await StartDefensive();
Sql(IPAdress(), GetMacAdress(), NameOfPC(), DateTime.Now);
//SecondSaveFile();
//HideConsole();
//AllPathesToSave();
async static Task StartDefensive()
{
Console.WriteLine("Подготовка к запуску защиты");
await Task.Run(() => Defense());
Console.WriteLine("Защита запущена!");
}
public static void Defense()
{
bool attack = false;
while (1 > 0)
{
Thread.Sleep(2000);
Console.WriteLine("Защита работает");
Process[] procList = Process.GetProcesses();
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);
attack = true;
if (attack)
{
Console.WriteLine("Процесс прекращён");
string[] exit = { "false" };
Main(exit);
}
}
else
{
continue;
}
}
}
Console.WriteLine("\n");
if (attack)
{
break;
}
}
}
public static void USBSearcher()
{
Console.Write("Add Path: ");
string PATH = Console.ReadLine();
while (true)
{
Thread.Sleep(2000);
foreach (var dInfo in DriveInfo.GetDrives())
{
if (dInfo.IsReady && dInfo.DriveType == DriveType.Removable)
{
Console.WriteLine(dInfo);
string USBPath = dInfo.ToString();
try
{
string outFile =USBPath + Path.GetFileName(PATH); ;
File.Move(PATH, outFile);
Console.WriteLine("Yes");
}
catch
{
Console.WriteLine("No");
}
}
else
{
Console.WriteLine("No");
continue;
}
}
}
}