Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2016, 12:17   #1
Krakean
Новичок
Джуниор
 
Регистрация: 27.02.2016
Сообщений: 2
По умолчанию BitDefender блочит скромное бедное консольное приложение, что ему не нравится в коде?

Здравствуйте.
Есть простое консольное приложение, которое тупо следит за состоянием здоровья другого приложения, и если то зависло - посылает емейл, и пытается убить/перезапустить процесс.
Вот код:
Код:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net.Mail;
using System.Net.Mime;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace SSHealthService
{
    class Program
    {
        const Int32 SW_MINIMIZE = 6;

        [DllImport("Kernel32.dll", CallingConvention = CallingConvention.StdCall, SetLastError = true)]
        private static extern IntPtr GetConsoleWindow();

        [DllImport("User32.dll", CallingConvention = CallingConvention.StdCall, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool ShowWindow([In] IntPtr hWnd, [In] Int32 nCmdShow);

        private static void MinimizeConsoleWindow()
        {
            IntPtr hWndConsole = GetConsoleWindow();
            ShowWindow(hWndConsole, SW_MINIMIZE);
        }

        public static bool IsSSexists(Process[] prs)
        {
            bool bSSFound = false;
            foreach (Process pr in prs)
            {
                if (pr.ProcessName == "SS")
                {
                    bSSFound = true;
                    break;
                }
            }            

            return bSSFound;
        }
        static void Main(string[] args)
        {
            MinimizeConsoleWindow();

            Process[] prs = Process.GetProcesses();
            string basePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
            basePath = System.IO.Path.GetDirectoryName(basePath);

            int hangCatches = 0;
            while (IsSSexists(prs))
            {
                foreach (Process pr in prs)
                {
                    if (pr.ProcessName == "SS" && !pr.Responding)
                    {
                        hangCatches++;

                        if (hangCatches < 3)
                            continue;

                        hangCatches = 0;

                        try
                        {
                            Console.WriteLine("{0}: Detected SS hang, emailing...", System.DateTime.Now);

                            SmtpClient client = new SmtpClient();
                            client.Port = 587;
                            client.Host = "smtp-mail.outlook.com";
                            client.EnableSsl = true;
                            client.Timeout = 15000;
                            client.DeliveryMethod = SmtpDeliveryMethod.Network;
                            client.UseDefaultCredentials = false;
                            client.Credentials = new System.Net.NetworkCredential("...@outlook.com", "...");

                            MailMessage mm = new MailMessage("no-reply@xxx.com", "xxx@yyy.com", "SS Do Not Respond", "Health Service has been likely restarted it fine, but still it's better to check it out just to be sure whether everything is fine.");
                            mm.BodyEncoding = UTF8Encoding.UTF8;
                            //mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

                            try
                            {
                                client.Send(mm);
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine("Email sending FUCK UP: {0}", e.Message);
                            }
                        
                            // -------

                            Console.WriteLine("{0}: Trying to kill the process", System.DateTime.Now);
                            pr.Kill();
                            Console.WriteLine("{0}: Process killed", System.DateTime.Now);

                            Thread.Sleep(1000);
                            var process = new Process
                            {
                                StartInfo = new ProcessStartInfo
                                {
                                    FileName = System.IO.Path.Combine(basePath, @"SS.exe")
                                }
                            };
                            Console.WriteLine("{0}: Trying to restart the process", System.DateTime.Now);
                            if (process.Start())
                                Console.WriteLine("{0}: SS restarted fine", System.DateTime.Now);

                            Thread.Sleep(1000);
                        }
                        catch
                        {
                        }
                    }
                }

                prs = Process.GetProcesses();
                Thread.Sleep(1000);
            }
        }
    }
}
Но вот проблема, BitDefender (антивирус такой, самый популярный [в штатах] вроде как) блочит этот мой консольный ехешник, закинул его в вирустотал, тоже ничо хорошего - https://www.virustotal.com/en/file/d...is/1456417972/
Непойму, что у меня там трояновского в коде такого. При этом сам ехешник ничем не заражён (в том смысле _у меня_ комп ничем не заражен)
Помогите пожалуйста решить проблему.
При этом сам код работает прекрасно. И потому мне сложно понять, что нужно переделать в рабочем коде, чтобы переработанный вариант тоже работал и не определялся как false-positive антивирусником (хотя бы конкретно BitDefender'ом, на остальные пофик)
Krakean вне форума Ответить с цитированием
Старый 27.02.2016, 12:49   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
самый популярный [в штатах]
Откуда информация?

Цитата:
в том смысле _у меня_ комп ничем не заражен
Откуда такая уверенность?

Собрал (VS2012, .NET 4.0, Release), никто не ругается
https://www.virustotal.com/en/file/e...is/1456566406/
что-то там куча других файлов в архиве
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 27.02.2016 в 12:54.
Alex11223 вне форума Ответить с цитированием
Старый 27.02.2016, 16:44   #3
Krakean
Новичок
Джуниор
 
Регистрация: 27.02.2016
Сообщений: 2
По умолчанию

Переформатировал проект из консольного приложения в Windows Forms, при этом код остался тот же (разве что глобальный цикл на таймер заменил) - антивирь перестал жаловаться.

[quote]
[quote]
в том смысле _у меня_ комп ничем не заражен
Цитата:
Откуда такая уверенность?
Опыт. С 2005-го года не пользуюсь антивирусами в принципе, разве что раз в пол года ставлю парочку популярных(нод32, касперски, нортона, макафи) для профилактической проверки.
И сейчас установил, ситуация та же - всё чисто, а вот только битдефендер ехешник не давал даже создавать.

Цитата:
самый популярный [в штатах]
Цитата:
Откуда информация?
Документы по обзору рынка.

Последний раз редактировалось Krakean; 27.02.2016 в 16:46.
Krakean вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не понимаю, что не нравится программе. Выручайте ЕвгенийББ Помощь студентам 3 02.12.2013 19:04
Консольное приложение Horus92 Общие вопросы C/C++ 4 10.12.2010 09:45
Не понятно что ему не нравится _ILYA_ Visual C++ 3 29.10.2010 20:25
Консольное приложение a_priori Общие вопросы Delphi 6 12.03.2008 08:33
Что тебе нравится геймер? BedDog Свободное общение 19 23.03.2007 08:04