static void Main(string[] args) { if (args.Length == 1) { using (var patcher = new Patcher(args[0])) { Console.WriteLine("MaNGOS Patcher"); Console.WriteLine("Press Enter to patch..."); Console.ReadKey(true); switch (patcher.Type) { case BinaryTypes.Pe32: patcher.Patch(Patches.Windows.x86.Send, Patterns.Windows.x86.Send); patcher.Patch(Patches.Windows.x86.Email, Patterns.Windows.x86.Email); patcher.Patch(Patches.Windows.x86.User, Patterns.Windows.x86.User); patcher.Patch(Patches.Windows.x86.RaF, Patterns.Windows.x86.RaF); patcher.Patch(Patches.Windows.x86.Rcv, Patterns.Windows.x86.Rcv); patcher.Binary = patcher.Binary.Replace(".exe", "") + "_Patched.exe"; patcher.Finish(); break; case BinaryTypes.Pe64: patcher.Patch(Patches.Windows.x64.Send, Patterns.Windows.x64.Send); patcher.Patch(Patches.Windows.x64.Email, Patterns.Windows.x64.Email); patcher.Patch(Patches.Windows.x64.User, Patterns.Windows.x64.User); patcher.Patch(Patches.Windows.x64.RaF, Patterns.Windows.x64.RaF); patcher.Patch(Patches.Windows.x64.Rcv, Patterns.Windows.x64.Rcv); patcher.Binary = patcher.Binary.Replace(".exe", "") + "_Patched.exe"; patcher.Finish(); break; case BinaryTypes.Mach32: patcher.Patch(Patches.Mac.x86.Send, Patterns.Mac.x86.Send); patcher.Patch(Patches.Mac.x86.Email, Patterns.Mac.x86.Email); patcher.Patch(Patches.Mac.x86.User, Patterns.Mac.x86.User); patcher.Patch(Patches.Mac.x86.RaF, Patterns.Mac.x86.RaF); patcher.Patch(Patches.Mac.x86.Rcv, Patterns.Mac.x86.Rcv); patcher.Binary = patcher.Binary + " Patched"; patcher.Finish(); break; case BinaryTypes.Mach64: patcher.Patch(Patches.Mac.x64.Send, Patterns.Mac.x64.Send); patcher.Patch(Patches.Mac.x64.Email, Patterns.Mac.x64.Email); patcher.Patch(Patches.Mac.x64.User, Patterns.Mac.x64.User); patcher.Patch(Patches.Mac.x64.RaF, Patterns.Mac.x64.RaF); patcher.Patch(Patches.Mac.x64.Rcv, Patterns.Mac.x64.Rcv); patcher.Binary = patcher.Binary + " Patched"; patcher.Finish(); break; default: throw new NotSupportedException("Type: " + patcher.Type + " not supported!"); } Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Patching done."); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Writing patched file..."); } Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Successfully created your patched binary."); Thread.Sleep(5000); Environment.Exit(0); } }