Бывает что иногда вы не хотите чтобы Ваши запросы кто-нибудь отловил через программы на подобие: Fiddler, HTTP Analyzer и.т.д
На помощь приходит вот такой кусок кода:
Создаём класс: NativeMethods.cs
И класс: AntiSniffer.cs
Затем, просто в любом месте вызываем метод:
Как бы юзер не менял имя процесса, найдёт и убьёт!
P.S: Просто решил поделиться данной реализацией, вдруг кому-то нужно.
На помощь приходит вот такой кусок кода:
Создаём класс: NativeMethods.cs
C#:
using System;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;
[SuppressUnmanagedCodeSecurity()]
internal static class NativeMethods
{
#region Для получения полного пути процесса
[DllImport("Kernel32.dll")]
public static extern bool QueryFullProcessImageName([In] IntPtr hProcess, [In] uint dwFlags, [Out] StringBuilder lpExeName, [In, Out] ref uint lpdwSize);
#endregion
}
Имена вList<string>
нужно задавать не имена файлов, а "название продукта" файла, которое Вы можете найти в свойстве этого файла..
Список имён можно дополнять до бесконечно.
И класс: AntiSniffer.cs
C#:
namespace Test
{
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
public static class AntiSniffer
{
/// <summary>
/// Список имён снифферов (которые будут закрыты)
/// </summary>
private static readonly List<string> appNames = new()
{
"http analyzer stand-alone",
"fiddler",
"effetech http sniffer",
"firesheep",
"IEWatch Professional",
"dumpcap",
"wireshark",
"sysinternals tcpview",
"wpfsniffer",
"NetworkMiner",
"NetworkTrafficView",
"HTTPNetworkSniffer",
"tcpdump",
"intercepter",
"Intercepter-NG",
};
// [URL]https://stackoverflow.com/questions/5497064/how-to-get-the-full-path-of-running-process[/URL]
private static string GetMainModuleFileName(this Process process, int buffer = 1024)
{
StringBuilder fileNameBuilder = new(buffer);
uint bufferLength = (uint)fileNameBuilder.Capacity + 1;
return NativeMethods.QueryFullProcessImageName(process.Handle, 0, fileNameBuilder, ref bufferLength) ? fileNameBuilder.ToString() : null;
}
private static void CheckAndKill(string ProcessName)
{
// Получаем список всех процессов
foreach (Process process in Process.GetProcesses())
{
try
{
// Сверяем полученые данные от свойства файла процесса с именем ProcessName
if (FileVersionInfo.GetVersionInfo(GetMainModuleFileName(process)).ProductName.ToLower().Contains(ProcessName.ToLower()))
{
try
{
process.Kill(); // Завершаем процесс
}
catch
{
process.CloseMainWindow(); // Закрываем окно процесса
continue; // Продолжаем поиск
}
}
}
catch { continue; }
}
}
public static void Inizialize() => appNames.ToList().ForEach(CheckAndKill); // Метод для вызова
}
}
AntiSniffer.Inizialize();
Как бы юзер не менял имя процесса, найдёт и убьёт!
P.S: Просто решил поделиться данной реализацией, вдруг кому-то нужно.
Последнее редактирование: