Exemple #1
0
        private void Obfuscate(Object obj)
        {
            Args args = (Args)obj;

            try
            {
                string[] classes = new string[lbInputClasses.Items.Count];

                for (int i = 0; i < classes.Length; i++)
                {
                    classes[i] = lbInputClasses.Items[i].ToString();
                }

                Random rnd = new Random();

                string[] obfuscatedKeywords = new string[args.keywords.Length];

                for (int i = 0; i < obfuscatedKeywords.Length; i++)
                {
                    string temp = "";

                    for (int j = 0; j < nudNameCount.Value; j++)
                    {
                        if (rnd.Next(0, 2) == 0)
                        {
                            temp += "I";
                        }
                        else
                        {
                            temp += "l";
                        }
                    }

                    if (obfuscatedKeywords.Contains(temp))
                    {
                        i--;
                    }
                    else
                    {
                        obfuscatedKeywords[i] = temp;
                    }
                }

                string mapping = "";

                for (int k = 0; k < args.keywords.Length; k++)
                {
                    mapping += args.keywords[k] + " -> " + obfuscatedKeywords[k] + '\n';
                }

                File.WriteAllText(outputClassesPath + @"\mapping.txt", mapping);

                args.status.addStepPB();

                if (tbTurboMode.Checked)
                {
                    args.status.SetDoing("Starting threads...");

                    args.status.SetMaxPB(classes.Length);

                    for (int u = 0; u < classes.Length; u++)
                    {
                        ThreadArgs argss = new ThreadArgs();

                        argss.classes = classes;

                        argss.status = args.status;

                        argss.i = u;

                        argss.keywords = args.keywords;

                        string obfuscatedClass = "";

                        foreach (var path in files)
                        {
                            string className = path.Split('\\').Last();

                            if (className == classes[u])
                            {
                                string[] pathh = path.Split('\\');

                                string newPath = "";

                                for (int g = 0; g < pathh.Length - 1; g++)
                                {
                                    newPath += pathh[g] + "\\";
                                }

                                obfuscatedClass = File.ReadAllText(path);

                                break;
                            }
                        }

                        argss.obfuscatedClass = obfuscatedClass;

                        argss.obfuscatedKeywords = obfuscatedKeywords;

                        Thread newClassThread = new Thread(ObfuscateClass);

                        newClassThread.Start(argss);
                    }

                    args.status.addStepPB();

                    args.status.SetDoing("Started all threads!");

                    btnStartObfuscator.Enabled = true;

                    return;
                }

                for (int i = 0; i < classes.Length; i++)
                {
                    args.status.SetDoing($"Obfuscating class {classes[i]}...");

                    string currentClass = classes[i].Split('.')[0];

                    string obfuscatedClass = "";

                    foreach (var path in files)
                    {
                        string className = path.Split('\\').Last();

                        if (className == classes[i])
                        {
                            string[] pathh = path.Split('\\');

                            string newPath = "";

                            for (int g = 0; g < pathh.Length - 1; g++)
                            {
                                newPath += pathh[g] + "\\";
                            }

                            obfuscatedClass = File.ReadAllText(path);

                            break;
                        }
                    }

                    bool bracket = false;

                    args.status.SetMaxPBKeywords(args.keywords.Length);

                    args.status.addStepPBKeywords();

                    for (int j = 0; j < args.keywords.Length; j++)
                    {
                        args.status.SetDoingKeywords($"Replacing {args.keywords[j]}...");

                        args.status.SetMaxPBClass(obfuscatedClass.Length);

                        for (int f = 0; f < obfuscatedClass.Length; f++)
                        {
                            args.status.SetDoingClass($"Process {f}/{obfuscatedClass.Length}");

                            if (obfuscatedClass[f] == '"')
                            {
                                bracket = !bracket;
                            }

                            try
                            {
                                if (!bracket)
                                {
                                    if (obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + " " || obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + ";" || obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + "(" || obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + "=" || obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + "." || obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + ">" || obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + "\n" || obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + "\r" || obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + "\t")
                                    {
                                        obfuscatedClass = obfuscatedClass.Substring(0, f) + obfuscatedKeywords[j] + obfuscatedClass.Substring(f + args.keywords[j].Length);
                                    }
                                }
                            }
                            catch (Exception)
                            {
                            }

                            args.status.addStepPBClass();
                        }

                        args.status.addStepPBKeywords();
                    }

                    for (int x = 0; x < args.keywords.Length; x++)
                    {
                        try
                        {
                            if (currentClass == args.keywords[x])
                            {
                                foreach (var path in files)
                                {
                                    string className = path.Split('\\').Last();

                                    if (className == classes[x])
                                    {
                                        string[] pathh = path.Split('\\');

                                        string newPath = "";

                                        string savePath = "";

                                        for (int g = 0; g < pathh.Length - 1; g++)
                                        {
                                            if (pathh[g] == "inputClasses")
                                            {
                                                newPath += "outputClasses" + "\\";
                                            }
                                            else
                                            {
                                                newPath += pathh[g] + "\\";
                                            }

                                            if (pathh[g] == "inputClasses")
                                            {
                                                savePath += "outputClasses" + "\\";
                                            }
                                            else if (pathh[g].Contains("." + tbEnding.Text))
                                            {
                                                savePath += obfuscatedKeywords[x] + "." + tbEnding.Text;
                                            }
                                            else
                                            {
                                                savePath += pathh[g] + "\\";
                                            }
                                        }

                                        savePath += obfuscatedKeywords[x] + "." + tbEnding.Text;

                                        if (!Directory.Exists(newPath))
                                        {
                                            Directory.CreateDirectory(newPath);
                                        }

                                        File.WriteAllText(savePath /*outputClassesPath + $@"\{obfuscatedKeywords[x]}.{classes[x].Split('.')[1]}"*/, obfuscatedClass);

                                        break;
                                    }
                                }
                            }
                        }
                        catch (Exception)
                        {
                        }
                    }

                    args.status.addStepPB();
                }
            }
            catch (Exception ex)
            {
                args.status.Hide();

                args.status = null;

                MessageBox.Show("Error:\n" + ex.Message, "Simple Obfuscate");

                btnStartObfuscator.Enabled = true;

                return;
            }

            args.status.SetDoing("Finished!");

            args.status.SetPBMax();

            args.status.Update();

            Thread.Sleep(1000);

            args.status.Hide();

            args.status = null;

            MessageBox.Show("Successfully obfuscated classes!", "Simple Obfuscate");

            btnStartObfuscator.Enabled = true;
        }
Exemple #2
0
        public void ObfuscateClass(Object obj)
        {
            ThreadArgs args = (ThreadArgs)obj;

            string currentClass = args.classes[args.i].Split('.')[0];

            foreach (var path in files)
            {
                string className = path.Split('\\').Last();

                if (className == args.classes[args.i])
                {
                    string[] pathh = path.Split('\\');

                    string newPath = "";

                    for (int g = 0; g < pathh.Length - 1; g++)
                    {
                        newPath += pathh[g] + "\\";
                    }

                    args.obfuscatedClass = File.ReadAllText(path);

                    break;
                }
            }

            bool bracket = false;

            for (int j = 0; j < args.keywords.Length; j++)
            {
                for (int f = 0; f < args.obfuscatedClass.Length; f++)
                {
                    if (args.obfuscatedClass[f] == '"')
                    {
                        bracket = !bracket;
                    }

                    try
                    {
                        if (!bracket)
                        {
                            if (args.obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + " " || args.obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + ";" || args.obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + "(" || args.obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + "=" || args.obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + "." || args.obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + ">" || args.obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + "\n" || args.obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + "\r" || args.obfuscatedClass.Substring(f, args.keywords[j].Length + 1) == args.keywords[j] + "\t")
                            {
                                args.obfuscatedClass = args.obfuscatedClass.Substring(0, f) + args.obfuscatedKeywords[j] + args.obfuscatedClass.Substring(f + args.keywords[j].Length);
                            }
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
            }

            for (int x = 0; x < args.keywords.Length; x++)
            {
                try
                {
                    if (currentClass == args.keywords[x])
                    {
                        foreach (var path in files)
                        {
                            string className = path.Split('\\').Last();

                            if (className == args.classes[x])
                            {
                                string[] pathh = path.Split('\\');

                                string newPath = "";

                                string savePath = "";

                                for (int g = 0; g < pathh.Length - 1; g++)
                                {
                                    if (pathh[g] == "inputClasses")
                                    {
                                        newPath += "outputClasses" + "\\";
                                    }
                                    else
                                    {
                                        newPath += pathh[g] + "\\";
                                    }

                                    if (pathh[g] == "inputClasses")
                                    {
                                        savePath += "outputClasses" + "\\";
                                    }
                                    else if (pathh[g].Contains("." + tbEnding.Text))
                                    {
                                        savePath += args.obfuscatedKeywords[x] + "." + tbEnding.Text;
                                    }
                                    else
                                    {
                                        savePath += pathh[g] + "\\";
                                    }
                                }

                                savePath += args.obfuscatedKeywords[x] + "." + tbEnding.Text;

                                if (!Directory.Exists(newPath))
                                {
                                    Directory.CreateDirectory(newPath);
                                }

                                File.WriteAllText(savePath /*outputClassesPath + $@"\{obfuscatedKeywords[x]}.{classes[x].Split('.')[1]}"*/, args.obfuscatedClass);

                                break;
                            }
                        }
                    }
                }
                catch (Exception)
                {
                }
            }

            args.status.addStepPB();
        }