MalwareSourceCode/MSIL/Trojan/Win32/P/Trojan.Win32.Patched.mf-01164dae267b1f13c988de64e7fce38753b97528a3dc3fe730e191fc953c65ba/lq.cs
2022-08-18 06:28:56 -05:00

135 lines
2.7 KiB
C#

// Decompiled with JetBrains decompiler
// Type: lq
// Assembly: XobniService, Version=1.8.3.7917, Culture=neutral, PublicKeyToken=6298d2d1fcfb5d85
// MVID: EA9F7D71-4A8D-4739-A320-5F01FC76E972
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Trojan.Win32.Patched.mf-01164dae267b1f13c988de64e7fce38753b97528a3dc3fe730e191fc953c65ba.exe
using System;
using System.Security.AccessControl;
using System.Threading;
using XobniLogging;
public class lq : IDisposable
{
private const string a = "XobniIpcEvent";
private readonly string b;
private readonly EventResetMode c = EventResetMode.ManualReset;
private EventWaitHandle d;
private bool e;
private bool f;
private readonly object g = new object();
public lq(string A_0, EventResetMode A_1)
{
this.b = A_0;
this.c = A_1;
this.b();
}
public void c() => this.d.Set();
public void d() => this.d.Reset();
public void g() => this.d.Close();
public bool a(TimeSpan A_0) => this.d.WaitOne(A_0, false);
public void a(q8 A_0)
{
lock (this.g)
{
if (this.f)
return;
this.f = true;
}
new Thread(new ParameterizedThreadStart(this.a))
{
Name = (this.b + "WaitThread"),
IsBackground = true
}.Start((object) A_0);
}
private void a(object A_0)
{
try
{
q8 q8 = (q8) A_0;
try
{
while (!this.e)
{
if (this.d.WaitOne(TimeSpan.FromSeconds(1.0), false))
q8();
}
}
catch (Exception ex)
{
ady.a(Level.Exception, "IpcEventWait", ex);
}
}
finally
{
lock (this.g)
this.f = false;
}
}
private void b()
{
try
{
this.d = EventWaitHandle.OpenExisting(this.b);
}
catch (WaitHandleCannotBeOpenedException ex)
{
this.a();
}
}
private void a()
{
EventWaitHandleSecurity eventSecurity = new EventWaitHandleSecurity();
EventWaitHandleAccessRule rule = new EventWaitHandleAccessRule("Everyone", EventWaitHandleRights.Modify | EventWaitHandleRights.Synchronize, AccessControlType.Allow);
eventSecurity.AddAccessRule(rule);
bool createdNew;
this.d = new EventWaitHandle(false, this.c, this.b, out createdNew, eventSecurity);
}
public void a(bool A_0)
{
this.e = true;
if (!A_0)
return;
this.g();
}
public void f()
{
try
{
this.a(true);
}
finally
{
GC.SuppressFinalize((object) this);
}
}
void object.e()
{
try
{
this.a(false);
}
catch (Exception ex)
{
ady.a(Level.Exception, "IpcEventFinalizer", ex);
}
finally
{
// ISSUE: explicit finalizer call
this.Finalize();
}
}
}