Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / BitDefender блочит скромное бедное консольное приложение, что ему не нравится в коде? / 7 сообщений из 7, страница 1 из 1
27.02.2016, 12:23
    #39180466
D.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitDefender блочит скромное бедное консольное приложение, что ему не нравится в коде?
Здравствуйте.
Есть простое консольное приложение, которое тупо следит за состоянием здоровья другого приложения, и если то зависло - посылает емейл, и пытается убить/перезапустить процесс.
Вот код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
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/d47f697af559549ad97ff54308f2fd063bcb647f8bafb3a8ae2e5d659f1d6619/analysis/1456417972/
Непойму, что у меня там трояновского в коде такого. При этом сам ехешник ничем не заражён (в том смысле _у меня_ комп ничем не заражен)
Помогите пожалуйста решить проблему.
При этом сам код работает прекрасно. И потому мне сложно понять, что нужно переделать в рабочем коде, чтобы переработанный вариант тоже работал и не определялся как false-positive антивирусником (хотя бы конкретно BitDefender'ом, на остальные пофик)
...
Рейтинг: 0 / 0
27.02.2016, 13:35
    #39180501
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitDefender блочит скромное бедное консольное приложение, что ему не нравится в коде?
Попробуй разработчикам антивируса написать. Бывает что сигнатура совпала с каким-то трояном вот и заблокировали.
Только прежде чем писать доведи свою прогу до такого состояния, чтобы никакая правка ближайшее не потребовалась, т.е. если внесут в исключения, то после прогу лучше не менять.
...
Рейтинг: 0 / 0
27.02.2016, 13:50
    #39180508
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitDefender блочит скромное бедное консольное приложение, что ему не нравится в коде?
Попробуйте убрать это
D.K.
Код: sql
1.
FUCK UP
...
Рейтинг: 0 / 0
28.02.2016, 14:01
    #39180787
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitDefender блочит скромное бедное консольное приложение, что ему не нравится в коде?
D.K.Здравствуйте.
Есть простое консольное приложение, которое тупо следит за состоянием здоровья другого приложения, и если то зависло - посылает емейл, и пытается убить/перезапустить процесс.
Вот код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
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/d47f697af559549ad97ff54308f2fd063bcb647f8bafb3a8ae2e5d659f1d6619/analysis/1456417972/
Непойму, что у меня там трояновского в коде такого. При этом сам ехешник ничем не заражён (в том смысле _у меня_ комп ничем не заражен)
Помогите пожалуйста решить проблему.
При этом сам код работает прекрасно. И потому мне сложно понять, что нужно переделать в рабочем коде, чтобы переработанный вариант тоже работал и не определялся как false-positive антивирусником (хотя бы конкретно BitDefender'ом, на остальные пофик)
...
Рейтинг: 0 / 0
28.02.2016, 14:02
    #39180788
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitDefender блочит скромное бедное консольное приложение, что ему не нравится в коде?
Упс, сорри, случайно процитировал.
Хотел сказать, что для оформления кода на c# надо использовать тэг SRC C#, а не sql
...
Рейтинг: 0 / 0
28.02.2016, 14:16
    #39180793
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitDefender блочит скромное бедное консольное приложение, что ему не нравится в коде?
Cat2Попробуйте убрать это
D.K.
Код: sql
1.
FUCK UP





xxx.com - тож не сахар :)
...
Рейтинг: 0 / 0
07.03.2016, 16:13
    #39187216
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BitDefender блочит скромное бедное консольное приложение, что ему не нравится в коде?
ИзопропилCat2Попробуйте убрать это
пропущено...



xxx.com - тож не сахар :)

не сахар, естественно, сейчас проверил - там такое
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / BitDefender блочит скромное бедное консольное приложение, что ему не нравится в коде? / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]