Jump to content
Vanilla

vGuard - protect your client

Recommended Posts

Welcome to my new release, this time it'll be a source code for a new program: vGuard.

 

What is vGuard?

-> As I learned from .Alessa (who you may know; got the permission so don't worry) we developed a program that checks for the runninc processes. Earlier it was written in vb, but then we ported it to c#.

vGuard will bind itself to the metin2 process (it'll start the client and check the binding every cycle) and scans the environment for:

-> Bad running processes (like cheating programs)

-> Bad files in the client (you won't be able to put .py/.pyc-files into the client)

 

You are allowed to adapt the source like you wish to. I won't keep any copyrights, it's free for all. But please be kind and say who developed the main program.

 

Normally the system goes like this:

Patcher (in this case metin2.exe) starts vGuard.exe (you may change the file name if you really want to)

vGuard.exe runs your client (metin2client.bin)

 

You can protect your client binary with Enigma protector to make it unable to change the file name (so it forces users to keep the filename "metin2client.bin") and create a dependency (you can define that vGuard has to be running and check the md5-sizes so that people can't replace vGuard.exe)

 

If you have any questions, feel free to ask.

 

 

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.Windows.Forms;
using System.Threading;
using System.Windows;
using System.Windows.Threading;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Diagnostics;
using System.Net;
using System.IO;
using System.Security.Cryptography;
using System.Web;
using System.Xml.Linq;
using System.Windows.Media.Effects;
using System.Text.RegularExpressions;


namespace vGuard
{
    public partial class vGuard : Form
    {
        public static int procid = 0;
        public static System.Diagnostics.Process p = new System.Diagnostics.Process();

        public vGuard()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.Activated += new EventHandler(Form1_Activated);
        }
        void Form1_Activated(object sender, EventArgs e)
        {
            this.Hide();
            if(File.Exists(Environment.CurrentDirectory + "metin2client.bin")){
                p.StartInfo.FileName = "metin2client.bin";
                p.StartInfo.UseShellExecute = false;
                p.Start();
            } else {
                System.Windows.Forms.MessageBox.Show("metin2client.bin konnte nicht gefunden werden! Bitte patchen!");
                System.Threading.Thread.Sleep(5000);
                System.Windows.Forms.Application.Exit();
            }
            System.Threading.Thread.Sleep(10000);
            string erg1;
            string erg2;
            while (1<2)
            {
               if (checkbind(p.Id) == false)
                {
                    break;
                }
                erg1 = checkprocs();
                if (erg1 != "NOTHING")
                {
                    System.Windows.Forms.MessageBox.Show("Der Prozess behindert die Ausführung: " + erg1);
                    System.Threading.Thread.Sleep(5000);
                    break;
                }
                erg2 = checkenv();
                if (erg2 != "NOTHING")
                {
                    System.Windows.Forms.MessageBox.Show("Die Datei behindert die Ausführung: " + erg2);
                    System.Threading.Thread.Sleep(5000);
                    break;
                }
                System.Threading.Thread.Sleep(3000);
            }
            this.Close();
            System.Windows.Forms.Application.Exit();
        }
        public static bool checkbind(int procid)
        {
            Process[] liste = Process.GetProcesses();

            foreach (Process a in liste)
            {
                if (a.Id == procid)
                {
                    return true;
                }
            }
            return false;
        }
        public static string checkprocs()
        {
            Process[] liste = Process.GetProcesses();
            string erg = "NOTHING";
            Regex rx = new Regex(".*njector*");
            Regex rx2 = new Regex(".*bat");
            Regex rx3 = new Regex(".*njector.*");
            Regex rx4 = new Regex(".*HxD.*");
            Regex rx5 = new Regex(".*eix.*");
            Regex rx6 = new Regex(".*python.*");
            Regex rx7 = new Regex(".*reader.*");
            Regex rx8 = new Regex(".*adobe.*");
            Regex rx8_2 = new Regex(".*acrobat.*");
            Regex rx9 = new Regex(".*unpack.*");
            Regex rx10 = new Regex(".*gerät.*");
            Regex rx11 = new Regex(".*assembl.*");
            foreach (Process a in liste)
            {
                if (rx.IsMatch(a.ProcessName))
                {
                    erg = a.ProcessName;
                }
                if (a.ProcessName == "cmd")
                {
                    erg = a.ProcessName;
                }
                if (rx2.IsMatch(a.ProcessName))
                {
                    erg = a.ProcessName;
                }
                if (rx3.IsMatch(a.ProcessName))
                {
                    erg = a.ProcessName;
                }
                if (rx4.IsMatch(a.ProcessName))
                {
                    erg = a.ProcessName;
                }
                if (rx5.IsMatch(a.ProcessName))
                {
                    erg = a.ProcessName;
                }
                if (rx6.IsMatch(a.ProcessName))
                {
                    erg = a.ProcessName;
                }
                if (rx7.IsMatch(a.ProcessName) && rx8.IsMatch(a.ProcessName) == false || rx8_2.IsMatch(a.ProcessName))
                {
                    erg = a.ProcessName;
                }
                if (rx9.IsMatch(a.ProcessName))
                {
                    erg = a.ProcessName;
                }
                if (rx10.IsMatch(a.ProcessName))
                {
                    erg = a.ProcessName;
                }
                if (rx11.IsMatch(a.ProcessName))
                {
                    erg = a.ProcessName;
                }
            }
            return erg;
        }
        public static string checkenv()
        {
            string erg = "NOTHING";
            string currentDir = Environment.CurrentDirectory;
            string[] files = Directory.GetFiles(currentDir);
            string asdf;
            string mydir = currentDir.ToLower();
            Regex rx = new Regex(".*py$");
            Regex rx2 = new Regex(".*bat$");
            Regex rx3 = new Regex(".*exe$");
            Regex rx4 = new Regex(".*bin$");
            Regex rx5 = new Regex(".*lib$");
            Regex rx6 = new Regex(".pyc$");
            foreach (string filename in files)
            {
                asdf = filename.ToLower();
                if (rx.IsMatch(filename))
                {
                    erg = filename;
                }
                if (rx5.IsMatch(filename))
                {
                    erg = filename;
                } if (rx2.IsMatch(filename))
                {
                    erg = filename;
                } if (rx6.IsMatch(filename))
                {
                    erg = filename;
                } if (rx3.IsMatch(filename) && asdf != mydir + "config.exe" && asdf != mydir + "metin2.exe" && asdf != mydir + "vguard.exe")
                {
                    erg = filename;
                } if (rx4.IsMatch(filename) && filename != currentDir + "metin2client.bin")
                {
                    erg = filename;
                }
            }
            string newdir = Environment.CurrentDirectory + "lib";
            string[] files2 = Directory.GetFiles(currentDir);
            string curdir2 = newdir.ToLower();
            string asdf2;
            Regex rx7 = new Regex(".*py$");
            Regex rx8 = new Regex(".*m3d$");
            Regex rx9 = new Regex(".*flt$");
            Regex rx10 = new Regex(".*mix$");
            Regex rx11 = new Regex(".*lib$");
            Regex rx12 = new Regex(".*asi$");
            Regex rx13 = new Regex(".pyc$");
            foreach (string filename2 in files2)
            {
                asdf2 = filename2.ToLower();
                if (rx7.IsMatch(filename2))
                {
                    erg = filename2;
                }
                if (rx13.IsMatch(filename2) && asdf2 != curdir2 + "stringio.pyc")
                {
                    erg = filename2;
                } if (rx8.IsMatch(filename2))
                {
                    erg = filename2;
                } if (rx9.IsMatch(filename2))
                {
                    erg = filename2;
                } if (rx10.IsMatch(filename2))
                {
                    erg = filename2.ToLower();
                } if (rx11.IsMatch(filename2))
                {
                    erg = filename2;
                } if (rx12.IsMatch(filename2))
                {
                    erg = filename2;
                }
            }
            return erg;
        }
    }
}

 

Don't blame me for the strange variable names and the bad coding. It's just an older work, but feel free to modify it as you want to.

  • Love 9

Share this post


Link to post

Welcome to my new release, this time it'll be a source code for a new program: vGuard.

 

What is vGuard?

-> As I learned from .Alessa (who you may know; got the permission so don't worry) we developed a program that checks for the runninc processes. Earlier it was written in vb, but then we ported it to c#.

vGuard will bind itself to the metin2 process (it'll start the client and check the binding every cycle) and scans the environment for:

-> Bad running processes (like cheating programs)

-> Bad files in the client (you won't be able to put .py/.pyc-files into the client)

 

You are allowed to adapt the source like you wish to. I won't keep any copyrights, it's free for all. But please be kind and say who developed the main program.

 

Normally the system goes like this:

Patcher (in this case metin2.exe) starts vGuard.exe (you may change the file name if you really want to)

vGuard.exe runs your client (metin2client.bin)

 

You can protect your client binary with Enigma protector to make it unable to change the file name (so it forces users to keep the filename "metin2client.bin") and create a dependency (you can define that vGuard has to be running and check the md5-sizes so that people can't replace vGuard.exe)

 

If you have any questions, feel free to ask.

 

 

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.Windows.Forms;

using System.Threading;

using System.Windows;

using System.Windows.Threading;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using System.Diagnostics;

using System.Net;

using System.IO;

using System.Security.Cryptography;

using System.Web;

using System.Xml.Linq;

using System.Windows.Media.Effects;

using System.Text.RegularExpressions;

namespace vGuard

{

    public partial class vGuard : Form

    {

        public static int procid = 0;

        public static System.Diagnostics.Process p = new System.Diagnostics.Process();

        public vGuard()

        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)

        {

            this.Activated += new EventHandler(Form1_Activated);

        }

        void Form1_Activated(object sender, EventArgs e)

        {

            this.Hide();

            if(File.Exists(Environment.CurrentDirectory + "metin2client.bin")){

                p.StartInfo.FileName = "metin2client.bin";

                p.StartInfo.UseShellExecute = false;

                p.Start();

            } else {

                System.Windows.Forms.MessageBox.Show("metin2client.bin konnte nicht gefunden werden! Bitte patchen!");

                System.Threading.Thread.Sleep(5000);

                System.Windows.Forms.Application.Exit();

            }

            System.Threading.Thread.Sleep(10000);

            string erg1;

            string erg2;

            while (1<2)

            {

               if (checkbind(p.Id) == false)

                {

                    break;

                }

                erg1 = checkprocs();

                if (erg1 != "NOTHING")

                {

                    System.Windows.Forms.MessageBox.Show("Der Prozess behindert die Ausführung: " + erg1);

                    System.Threading.Thread.Sleep(5000);

                    break;

                }

                erg2 = checkenv();

                if (erg2 != "NOTHING")

                {

                    System.Windows.Forms.MessageBox.Show("Die Datei behindert die Ausführung: " + erg2);

                    System.Threading.Thread.Sleep(5000);

                    break;

                }

                System.Threading.Thread.Sleep(3000);

            }

            this.Close();

            System.Windows.Forms.Application.Exit();

        }

        public static bool checkbind(int procid)

        {

            Process[] liste = Process.GetProcesses();

            foreach (Process a in liste)

            {

                if (a.Id == procid)

                {

                    return true;

                }

            }

            return false;

        }

        public static string checkprocs()

        {

            Process[] liste = Process.GetProcesses();

            string erg = "NOTHING";

            Regex rx = new Regex(".*njector*");

            Regex rx2 = new Regex(".*bat");

            Regex rx3 = new Regex(".*njector.*");

            Regex rx4 = new Regex(".*HxD.*");

            Regex rx5 = new Regex(".*eix.*");

            Regex rx6 = new Regex(".*python.*");

            Regex rx7 = new Regex(".*reader.*");

            Regex rx8 = new Regex(".*adobe.*");

            Regex rx8_2 = new Regex(".*acrobat.*");

            Regex rx9 = new Regex(".*unpack.*");

            Regex rx10 = new Regex(".*gerät.*");

            Regex rx11 = new Regex(".*assembl.*");

            foreach (Process a in liste)

            {

                if (rx.IsMatch(a.ProcessName))

                {

                    erg = a.ProcessName;

                }

                if (a.ProcessName == "cmd")

                {

                    erg = a.ProcessName;

                }

                if (rx2.IsMatch(a.ProcessName))

                {

                    erg = a.ProcessName;

                }

                if (rx3.IsMatch(a.ProcessName))

                {

                    erg = a.ProcessName;

                }

                if (rx4.IsMatch(a.ProcessName))

                {

                    erg = a.ProcessName;

                }

                if (rx5.IsMatch(a.ProcessName))

                {

                    erg = a.ProcessName;

                }

                if (rx6.IsMatch(a.ProcessName))

                {

                    erg = a.ProcessName;

                }

                if (rx7.IsMatch(a.ProcessName) && rx8.IsMatch(a.ProcessName) == false || rx8_2.IsMatch(a.ProcessName))

                {

                    erg = a.ProcessName;

                }

                if (rx9.IsMatch(a.ProcessName))

                {

                    erg = a.ProcessName;

                }

                if (rx10.IsMatch(a.ProcessName))

                {

                    erg = a.ProcessName;

                }

                if (rx11.IsMatch(a.ProcessName))

                {

                    erg = a.ProcessName;

                }

            }

            return erg;

        }

        public static string checkenv()

        {

            string erg = "NOTHING";

            string currentDir = Environment.CurrentDirectory;

            string[] files = Directory.GetFiles(currentDir);

            string asdf;

            string mydir = currentDir.ToLower();

            Regex rx = new Regex(".*py$");

            Regex rx2 = new Regex(".*bat$");

            Regex rx3 = new Regex(".*exe$");

            Regex rx4 = new Regex(".*bin$");

            Regex rx5 = new Regex(".*lib$");

            Regex rx6 = new Regex(".pyc$");

            foreach (string filename in files)

            {

                asdf = filename.ToLower();

                if (rx.IsMatch(filename))

                {

                    erg = filename;

                }

                if (rx5.IsMatch(filename))

                {

                    erg = filename;

                } if (rx2.IsMatch(filename))

                {

                    erg = filename;

                } if (rx6.IsMatch(filename))

                {

                    erg = filename;

                } if (rx3.IsMatch(filename) && asdf != mydir + "config.exe" && asdf != mydir + "metin2.exe" && asdf != mydir + "vguard.exe")

                {

                    erg = filename;

                } if (rx4.IsMatch(filename) && filename != currentDir + "metin2client.bin")

                {

                    erg = filename;

                }

            }

            string newdir = Environment.CurrentDirectory + "lib";

            string[] files2 = Directory.GetFiles(currentDir);

            string curdir2 = newdir.ToLower();

            string asdf2;

            Regex rx7 = new Regex(".*py$");

            Regex rx8 = new Regex(".*m3d$");

            Regex rx9 = new Regex(".*flt$");

            Regex rx10 = new Regex(".*mix$");

            Regex rx11 = new Regex(".*lib$");

            Regex rx12 = new Regex(".*asi$");

            Regex rx13 = new Regex(".pyc$");

            foreach (string filename2 in files2)

            {

                asdf2 = filename2.ToLower();

                if (rx7.IsMatch(filename2))

                {

                    erg = filename2;

                }

                if (rx13.IsMatch(filename2) && asdf2 != curdir2 + "stringio.pyc")

                {

                    erg = filename2;

                } if (rx8.IsMatch(filename2))

                {

                    erg = filename2;

                } if (rx9.IsMatch(filename2))

                {

                    erg = filename2;

                } if (rx10.IsMatch(filename2))

                {

                    erg = filename2.ToLower();

                } if (rx11.IsMatch(filename2))

                {

                    erg = filename2;

                } if (rx12.IsMatch(filename2))

                {

                    erg = filename2;

                }

            }

            return erg;

        }

    }

}

 

Don't blame me for the strange variable names and the bad coding. It's just an older work, but feel free to modify it as you want to.

Edward pvp hack t block ?

https://www.youtube.com/watch?v=7BZJC2A7iSI

 

this hack download site ;http://www.metin2hilecim.com/2014/03/metin2-edward-pvp-botu-yardmc-hilesi.html

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.