diff --git a/AutoClosingMessageBox.cs b/AutoClosingMessageBox.cs new file mode 100644 index 0000000..435696b --- /dev/null +++ b/AutoClosingMessageBox.cs @@ -0,0 +1,47 @@ +/* + * Creado por SharpDevelop. + * Usuario: GNR092 + * Fecha: 06/02/2017 + * Hora: 08:04 p.m. + * + * Para cambiar esta plantilla use Herramientas | Opciones | Codificación | Editar Encabezados Estándar + */ +using System; +using System.Runtime.InteropServices; +using System.Windows.Forms; + +namespace SecureGameGuard +{ + public class AutoClosingMessageBox + { + System.Threading.Timer _timeoutTimer; + string _caption; + + AutoClosingMessageBox(string text, string caption, int timeout) + { + _caption = caption; + _timeoutTimer = new System.Threading.Timer(OnTimerElapsed, + null, timeout, System.Threading.Timeout.Infinite); + MessageBox.Show(text, caption, MessageBoxButtons.OK, MessageBoxIcon.Information); + } + + public static void Show(string text, string caption, int timeout) + { + new AutoClosingMessageBox(text, caption, timeout); + } + + private void OnTimerElapsed(object state) + { + IntPtr mbWnd = FindWindow(null, _caption); + if (mbWnd != IntPtr.Zero) + SendMessage(mbWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero); + _timeoutTimer.Dispose(); + } + + const int WM_CLOSE = 0x0010; + [DllImport("user32.dll", SetLastError = true)] + static extern IntPtr FindWindow(string lpClassName, string lpWindowName); + [DllImport("user32.dll", CharSet = CharSet.Auto)] + static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam); + } +} diff --git a/Configs.cs b/Configs.cs index ee9b1ca..be22ab3 100644 --- a/Configs.cs +++ b/Configs.cs @@ -1,4 +1,12 @@ -using System; +/* + * Creado por SharpDevelop. + * Usuario: GNR092 + * Fecha: 06/02/2017 + * Hora: 08:04 p.m. + * + * Para cambiar esta plantilla use Herramientas | Opciones | Codificación | Editar Encabezados Estándar + */ +using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; diff --git a/DataEncript.cs b/DataEncript.cs new file mode 100644 index 0000000..528cb8d --- /dev/null +++ b/DataEncript.cs @@ -0,0 +1,41 @@ +/* + * Creado por SharpDevelop. + * Usuario: GNR092 + * Fecha: 06/02/2017 + * Hora: 08:04 p.m. + * + * Para cambiar esta plantilla use Herramientas | Opciones | Codificación | Editar Encabezados Estándar + */ +using System.Text; + +namespace SecureGameGuard +{ + public class DataEncript + { + public static byte[] DataEncrip(int num0) + { + + byte[] encryted =Encoding.Unicode.GetBytes(num0.ToString()); + + return encryted; + } + + public static int DataDesencrip(byte[] num0) + { + string str = string.Empty; + int num1 = 0; + try + { + str = Encoding.Unicode.GetString(num0); + int.TryParse(str, out num1); + return num1; + } + catch + { + + return -1; + } + + } + } +} diff --git a/DefaultList.cs b/DefaultList.cs new file mode 100644 index 0000000..13b4ca3 --- /dev/null +++ b/DefaultList.cs @@ -0,0 +1,31 @@ +/* + * Creado por SharpDevelop. + * Usuario: GNR092 + * Fecha: 06/02/2017 + * Hora: 08:04 p.m. + * + * Para cambiar esta plantilla use Herramientas | Opciones | Codificación | Editar Encabezados Estándar + */ +using System.Collections.Generic; + +namespace SecureGameGuard +{ + public class DList + { + public List Default = new List(); + public DList() + { + Default.Add("Cheat Engine"); + Default.Add("Engine"); + Default.Add("Cheat"); + Default.Add("CheatEngine"); + Default.Add("Nopde"); + Default.Add("Jakes"); + Default.Add("Hack"); + Default.Add("Hax"); + Default.Add("Poke"); + Default.Add("ArtMoney"); + Default.Add("ollydbg"); + } + } +} diff --git a/Enums.cs b/Enums.cs new file mode 100644 index 0000000..bb3a7ea --- /dev/null +++ b/Enums.cs @@ -0,0 +1,16 @@ +/* + * Creado por SharpDevelop. + * Usuario: GNR092 + * Fecha: 06/02/2017 + * Hora: 08:04 p.m. + * + * Para cambiar esta plantilla use Herramientas | Opciones | Codificación | Editar Encabezados Estándar + */ +namespace SecureGameGuard +{ + public enum TypeInvoke + { + Text, + progressbar, + } +} diff --git a/GameGuard.cs b/GameGuard.cs index 3b3c605..e445f7e 100644 --- a/GameGuard.cs +++ b/GameGuard.cs @@ -1,212 +1,148 @@ -using System; +/* + * Creado por SharpDevelop. + * Usuario: GNR092 + * Fecha: 06/02/2017 + * Hora: 08:04 p.m. + * + * Para cambiar esta plantilla use Herramientas | Opciones | Codificación | Editar Encabezados Estándar + */ +using System; using System.Diagnostics; using System.Threading; using System.Collections.Generic; -using System.Windows.Forms; using System.Text; using System.Security.Cryptography; using System.IO; -using System.Runtime.InteropServices; namespace SecureGameGuard { - /// - /// SecureGameGuard. - /// - /// Copyright (C) GNR092, 2016-2017. - /// - public class GameGuard - { - static readonly object _Lock = new object(); - private static List array { get; set; } - public static bool exit = false; - private static readonly string PasswordHash = "G4M36U4RD14N"; - private static readonly string SaltKey = "S@LT&KEY"; - private static readonly string VIKey = "@1B2c3D4e5F6g7H!"; - - public static void StartSecureGame(List Config, bool error = false) - { - if (error) - { - array = Config; - } - else - { - Config.RemoveAt(0); - array = Config; - } - ThreadPool.QueueUserWorkItem(new WaitCallback(CurrentLoop), 1); - } - - private static void CurrentLoop(object o) - { - while (!exit) - { - lock (_Lock) - { - foreach (var cheat in array) - { - if (string.IsNullOrEmpty(cheat)) continue; - foreach (Process Pitems in Process.GetProcesses()) - { - try - { - if (Pitems.ProcessName.ToLower().Contains(cheat.ToLower())) - { - try - { - Pitems.Kill(); - Pitems.WaitForExit(); - AutoClosingMessageBox.Show("Hack Detectado informando Administradores!!", "SecureGameGuard Hack detected!!", 3000); - continue; - } - catch (Exception e) - { - Console.ForegroundColor = ConsoleColor.DarkCyan; - Console.WriteLine(e); - } - } - - var desc = FileVersionInfo.GetVersionInfo(Pitems.MainModule.FileName); - - if (desc.FileDescription.ToLower().Contains(cheat.ToLower())) - { - try - { - Pitems.Kill(); - Pitems.WaitForExit(); - continue; - } - catch (Exception e) - { - Console.ForegroundColor = ConsoleColor.DarkCyan; - Console.WriteLine(e); - } - } - } - catch - { - } - - } - Thread.Sleep(10); - } - } - } - } - - public static string Encriptar(string _cadenaAencriptar) - { - string result = string.Empty; - byte[] encryted = System.Text.Encoding.Unicode.GetBytes(_cadenaAencriptar); - result = Convert.ToBase64String(encryted); - return result; - } - - public static string DesEncriptar(string _cadenaAdesencriptar) - { - string result = string.Empty; - byte[] decryted = Convert.FromBase64String(_cadenaAdesencriptar); - result = System.Text.Encoding.Unicode.GetString(decryted); - return result; - } - - public static string Encrypt(string plainText) - { - byte[] bytes1 = Encoding.UTF8.GetBytes(plainText); - byte[] bytes2 = new Rfc2898DeriveBytes(PasswordHash, Encoding.ASCII.GetBytes(SaltKey)).GetBytes(32); - RijndaelManaged rijndaelManaged = new RijndaelManaged(); - rijndaelManaged.Mode = CipherMode.CBC; - rijndaelManaged.Padding = PaddingMode.Zeros; - ICryptoTransform encryptor = rijndaelManaged.CreateEncryptor(bytes2, Encoding.ASCII.GetBytes(VIKey)); - byte[] inArray; - using (MemoryStream memoryStream = new MemoryStream()) - { - using (CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write)) - { - cryptoStream.Write(bytes1, 0, bytes1.Length); - cryptoStream.FlushFinalBlock(); - inArray = memoryStream.ToArray(); - cryptoStream.Close(); - } - memoryStream.Close(); - } - return Convert.ToBase64String(inArray); - } - - public static string Decrypt(string encryptedText) - { - byte[] buffer = Convert.FromBase64String(encryptedText); - byte[] bytes = new Rfc2898DeriveBytes(PasswordHash, Encoding.ASCII.GetBytes(SaltKey)).GetBytes(32); - RijndaelManaged rijndaelManaged = new RijndaelManaged(); - rijndaelManaged.Mode = CipherMode.CBC; - rijndaelManaged.Padding = PaddingMode.None; - ICryptoTransform decryptor = rijndaelManaged.CreateDecryptor(bytes, Encoding.ASCII.GetBytes(VIKey)); - MemoryStream memoryStream = new MemoryStream(buffer); - CryptoStream cryptoStream = new CryptoStream((Stream)memoryStream, decryptor, CryptoStreamMode.Read); - byte[] numArray = new byte[buffer.Length]; - int count = cryptoStream.Read(numArray, 0, numArray.Length); - memoryStream.Close(); - cryptoStream.Close(); - return Encoding.UTF8.GetString(numArray, 0, count).TrimEnd("\0".ToCharArray()); - } - - } -} -public class DList -{ - public List Default = new List(); - public DList() - { - Default.Add("Cheat Engine"); - Default.Add("Engine"); - Default.Add("Cheat"); - Default.Add("CheatEngine"); - Default.Add("Nopde"); - Default.Add("Jakes"); - Default.Add("Hack"); - Default.Add("Hax"); - Default.Add("Poke"); - Default.Add("ArtMoney"); - Default.Add("ollydbg"); - } -} - -public class AutoClosingMessageBox -{ - System.Threading.Timer _timeoutTimer; - string _caption; - - AutoClosingMessageBox(string text, string caption, int timeout) - { - _caption = caption; - _timeoutTimer = new System.Threading.Timer(OnTimerElapsed, - null, timeout, System.Threading.Timeout.Infinite); - MessageBox.Show(text, caption, MessageBoxButtons.OK, MessageBoxIcon.Information); - } - - public static void Show(string text, string caption, int timeout) - { - new AutoClosingMessageBox(text, caption, timeout); - } - - private void OnTimerElapsed(object state) - { - IntPtr mbWnd = FindWindow(null, _caption); - if (mbWnd != IntPtr.Zero) - SendMessage(mbWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero); - _timeoutTimer.Dispose(); - } - - const int WM_CLOSE = 0x0010; - [DllImport("user32.dll", SetLastError = true)] - static extern IntPtr FindWindow(string lpClassName, string lpWindowName); - [DllImport("user32.dll", CharSet = CharSet.Auto)] - static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam); -} - -public enum TypeInvoke -{ - Text, - progressbar, -} + /// + /// SecureGameGuard. + /// + /// Copyright (C) GNR092, 2016-2017. + /// + public static class GameGuard + { + static readonly object _Lock = new object(); + private static List array { get; set; } + + private static readonly string PasswordHash = "G4M36U4RD14N"; + private static readonly string SaltKey = "S@LT&KEY"; + private static readonly string VIKey = "@1B2c3D4e5F6g7H!"; + + public static void StartSecureGame(List Config, bool error = false) + { + if (error) + { + array = Config; + } + else + { + Config.RemoveAt(0); + array = Config; + } + ThreadPool.QueueUserWorkItem(new WaitCallback(CurrentLoop), 1); + } + + private static void CurrentLoop(object o) + { + while (!SecureGame.Disconect) + { + lock (_Lock) + { + foreach (var cheat in array) + { + if (string.IsNullOrEmpty(cheat)) continue; + foreach (Process Pitems in Process.GetProcesses()) + { + try + { + if (Pitems.ProcessName.ToLower().Contains(cheat.ToLower())) + { + try + { + Pitems.Kill(); + Pitems.WaitForExit(); + AutoClosingMessageBox.Show("Hack Detectado informando Administradores!!", "SecureGameGuard Hack detected!!", SecureGame.CloseTime); + continue; + } + catch (Exception e) + { + Console.ForegroundColor = ConsoleColor.DarkCyan; + Console.WriteLine(e); + } + } + + var desc = FileVersionInfo.GetVersionInfo(Pitems.MainModule.FileName); + + if (desc.FileDescription.ToLower().Contains(cheat.ToLower())) + { + try + { + Pitems.Kill(); + Pitems.WaitForExit(); + AutoClosingMessageBox.Show("Hack Detectado informando Administradores!!", "SecureGameGuard Hack detected!!", SecureGame.CloseTime); + continue; + } + catch (Exception e) + { + Console.ForegroundColor = ConsoleColor.DarkCyan; + Console.WriteLine(e); + } + } + } + catch + { + } + + } + Thread.Sleep(100); + } + } + } + + SecureGame.Start = false; + } + + public static string Encrypt(string plainText) + { + byte[] bytes1 = Encoding.UTF8.GetBytes(plainText); + byte[] bytes2 = new Rfc2898DeriveBytes(PasswordHash, Encoding.ASCII.GetBytes(SaltKey)).GetBytes(32); + RijndaelManaged rijndaelManaged = new RijndaelManaged(); + rijndaelManaged.Mode = CipherMode.CBC; + rijndaelManaged.Padding = PaddingMode.Zeros; + ICryptoTransform encryptor = rijndaelManaged.CreateEncryptor(bytes2, Encoding.ASCII.GetBytes(VIKey)); + byte[] inArray; + using (MemoryStream memoryStream = new MemoryStream()) + { + using (CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write)) + { + cryptoStream.Write(bytes1, 0, bytes1.Length); + cryptoStream.FlushFinalBlock(); + inArray = memoryStream.ToArray(); + cryptoStream.Close(); + } + memoryStream.Close(); + } + return Convert.ToBase64String(inArray); + } + + public static string Decrypt(string encryptedText) + { + byte[] buffer = Convert.FromBase64String(encryptedText); + byte[] bytes = new Rfc2898DeriveBytes(PasswordHash, Encoding.ASCII.GetBytes(SaltKey)).GetBytes(32); + RijndaelManaged rijndaelManaged = new RijndaelManaged(); + rijndaelManaged.Mode = CipherMode.CBC; + rijndaelManaged.Padding = PaddingMode.None; + ICryptoTransform decryptor = rijndaelManaged.CreateDecryptor(bytes, Encoding.ASCII.GetBytes(VIKey)); + MemoryStream memoryStream = new MemoryStream(buffer); + CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read); + byte[] numArray = new byte[buffer.Length]; + int count = cryptoStream.Read(numArray, 0, numArray.Length); + memoryStream.Close(); + cryptoStream.Close(); + return Encoding.UTF8.GetString(numArray, 0, count).TrimEnd("\0".ToCharArray()); + } + + } +} \ No newline at end of file diff --git a/GlobalSuppressions.cs b/GlobalSuppressions.cs new file mode 100644 index 0000000..eb1cf1d --- /dev/null +++ b/GlobalSuppressions.cs @@ -0,0 +1,8 @@ + +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Potential Code Quality Issues", "RECS0026:Possible unassigned object created by 'new'", Justification = "")] + diff --git a/MainUI.cs b/MainUI.cs index 12d8081..8fe9575 100644 --- a/MainUI.cs +++ b/MainUI.cs @@ -8,12 +8,8 @@ */ using System; using System.Collections.Generic; -using System.ComponentModel; -using System.Data; using System.Drawing; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Net; using System.Windows.Forms; using System.Reflection; @@ -21,109 +17,141 @@ namespace SecureGameGuard { - /// - /// SecureGameGuard. - /// - /// Copyright (C) GNR092, 2016-2017. - /// - public partial class MainUI : Form - { - private Configs cnf = new Configs(); - private string DownloadString = null; - private List lst0 = null, lst1 = null; - private bool error = false; - - - public MainUI() - { - // - // The InitializeComponent() call is required for Windows Forms designer support. - // - InitializeComponent(); - this.Show(); - new Thread(() => - { - Invoke(new Action(() => this.Show())); - Invoke(new Action(() => lb_version.Text = "Version:" + Assembly.GetExecutingAssembly().GetName().Version.ToString())); - var url = new Uri("https://raw.githubusercontent.com/GNR092/LauncherUpdaterPlugin/master/AutoUpdater/GameText.txt"); - var url2 = new Uri("http://192.168.20.197/GameText.txt"); - Thread.Sleep(500); - using (WebClient cli = new WebClient()) - { - cli.DownloadProgressChanged += cli_DownloadProgressChanged; - cli.DownloadStringCompleted += cli_DownloadStringCompleted; - cnf.load(); - try - { - cli.DownloadStringAsync(url); - } - catch (Exception) - { - - error = true; - } - Thread.Sleep(1000); - } - }) { IsBackground = false }.Start(); - // - // TODO: Add constructor code after the InitializeComponent() call. - // - } - - void cli_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) - { - Invoke(new Action(() => progressBarUI1.Value = 0)); - Invoke(new Action(() => progressBarUI1.BackColor = Color.DarkBlue)); - Invoke(new Action(() => progressBarUI1.ForeColor = Color.Blue)); - DownloadString = e.Result; - - check(); - - Invoke(new Action(() => this.Hide())); - } - - void cli_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) - { - Invoke(new Action(() => progressBarUI1.Value = e.ProgressPercentage)); - } - - void check() - { - Invoke(new Action(() => progressBarUI1.Value = 25)); - if (cnf.List == null) - { - DownloadString = DownloadString.Replace("\r\n", ""); - cnf.List = GameGuard.Encrypt(DownloadString); - cnf.save(); - } - else - DownloadString = DownloadString.Replace("\r\n", ""); - - Invoke(new Action(() => progressBarUI1.Value = 50)); - - lst0 = DownloadString.Split(char.Parse(",")).ToList();//lista - lst1 = GameGuard.Decrypt(cnf.List).Split(char.Parse(",")).ToList();//lista desencriptada - - Invoke(new Action(() => progressBarUI1.Value = 75)); - - if (lst0[0] != lst1[0]) - { - cnf.List = GameGuard.Encrypt(DownloadString); - cnf.save(); - } - - Invoke(new Action(() => progressBarUI1.Value = 100)); - - if (!error) - { - GameGuard.StartSecureGame(lst0); - } - else if(error && cnf.List == null) - { - DList Defaultlist = new DList(); - GameGuard.StartSecureGame(Defaultlist.Default, error); - } - Thread.Sleep(2000); - } - } + /// + /// SecureGameGuard. + /// + /// Copyright (C) GNR092, 2016-2017. + /// + public partial class MainUI : Form + { + private Configs cnf = new Configs(); + private string DownloadString = null; + private List lst0 = null, lst1 = null; + private bool error = false; + private bool Down = false; + + + public MainUI() + { + // + // The InitializeComponent() call is required for Windows Forms designer support. + // + InitializeComponent(); + this.Show(); + new Thread(() => + { + Invoke(new Action(() => this.Show())); + Invoke(new Action(() => lb_version.Text = "Version:" + Assembly.GetExecutingAssembly().GetName().Version.ToString())); + var url = new Uri("https://raw.githubusercontent.com/GNR092/LauncherUpdaterPlugin/master/AutoUpdater/GameText.txt"); + var url2 = new Uri("http://192.168.20.197/GameText.txt"); + Thread.Sleep(500); + using (WebClient cli = new WebClient()) + { + cli.DownloadProgressChanged += cli_DownloadProgressChanged; + cli.DownloadStringCompleted += cli_DownloadStringCompleted; + cnf.load(); + try + { + cli.DownloadStringAsync(url); + while (!Down) + { + Invoke(new Action(() => Thread.Sleep(500))); + } + } + catch (Exception) + { + + error = true; + } + Thread.Sleep(1000); + check(); + + Invoke(new Action(() => this.Hide())); + } + }) + { IsBackground = false }.Start(); + // + // TODO: Add constructor code after the InitializeComponent() call. + // + } + + void cli_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) + { + Invoke(new Action(() => progressBarUI1.Value = 0)); + Invoke(new Action(() => progressBarUI1.BackColor = Color.DarkBlue)); + Invoke(new Action(() => progressBarUI1.ForeColor = Color.Blue)); + try + { + if (e.Result != null) + { + DownloadString = e.Result; + Down = true; + } + else + { + Down = true; + error = true; + } + } + catch + { + Down = true; + error = true; + } + + } + + void cli_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) + { + Invoke(new Action(() => progressBarUI1.Value = e.ProgressPercentage)); + } + + void check() + { + Invoke(new Action(() => progressBarUI1.Value = 25)); + if (!error) + { + if (cnf.List == null) + { + DownloadString = DownloadString.Replace("\r\n", ""); + cnf.List = GameGuard.Encrypt(DownloadString); + cnf.save(); + } + else + DownloadString = DownloadString.Replace("\r\n", ""); + + Invoke(new Action(() => progressBarUI1.Value = 50)); + + lst0 = DownloadString.Split(char.Parse(",")).ToList();//lista + lst1 = GameGuard.Decrypt(cnf.List).Split(char.Parse(",")).ToList();//lista desencriptada + + Invoke(new Action(() => progressBarUI1.Value = 75)); + + if (lst0[0] != lst1[0]) + { + cnf.List = GameGuard.Encrypt(DownloadString); + cnf.save(); + } + } + + + Invoke(new Action(() => progressBarUI1.Value = 100)); + + if (!error) + { + GameGuard.StartSecureGame(lst0); + } + else if (error && cnf.List == null) + { + DList Defaultlist = new DList(); + GameGuard.StartSecureGame(Defaultlist.Default, error); + } + else if (error && cnf.List != null) + { + DList Defaultlist = new DList(); + GameGuard.StartSecureGame(Defaultlist.Default, error); + } + Thread.Sleep(2000); + } + } } diff --git a/SecureGame.cs b/SecureGame.cs new file mode 100644 index 0000000..a6cc7f2 --- /dev/null +++ b/SecureGame.cs @@ -0,0 +1,21 @@ +using System; +namespace SecureGameGuard +{ + public class SecureGame + { + public static bool Start = false; + public static bool Disconect = false; + public static int CloseTime = 4000; + + public static void StartGameSecure() + { + var GameGuard = new MainUI(); + GameGuard.Show(); + while (GameGuard.Visible) + { + System.Windows.Forms.Application.DoEvents(); + } + Start = true; + } + } +} diff --git a/SecureGameGuard.csproj b/SecureGameGuard.csproj index f537796..aefb113 100644 --- a/SecureGameGuard.csproj +++ b/SecureGameGuard.csproj @@ -18,6 +18,7 @@ Full False C:\Users\GNR092\AppData\Roaming\ICSharpCode\SharpDevelop5\Settings.SourceAnalysis + SecureGameGuard.snk true @@ -61,7 +62,6 @@ - 3.5 @@ -69,6 +69,10 @@ + + + + @@ -83,6 +87,8 @@ True Resources.resx + + diff --git a/SecureGameGuard.csproj.sdsettings b/SecureGameGuard.csproj.sdsettings deleted file mode 100644 index 38f7991..0000000 --- a/SecureGameGuard.csproj.sdsettings +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/SecureGameGuard.saproj b/SecureGameGuard.saproj new file mode 100644 index 0000000..83887d5 --- /dev/null +++ b/SecureGameGuard.saproj @@ -0,0 +1,231 @@ + + .\bin\Release\SecureGameGuard.dll + SecureGameGuard + GNR092 + + + + + + + + + + + + SecureGameGuard + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SecureGameGuard.snk b/SecureGameGuard.snk new file mode 100644 index 0000000..a8bed06 Binary files /dev/null and b/SecureGameGuard.snk differ