Beispiel #1
0
        private void BtnTargetSettings_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                Control c      = (Control)sender;
                Point   locate = new Point(c.Location.X + e.Location.X, ((Control)sender).Location.Y + e.Location.Y);

                ContextMenuStrip columnsMenu = new ContextMenuStrip();


                ((ToolStripMenuItem)columnsMenu.Items.Add("Big endian", null, new EventHandler((ob, ev) => {
                    UnityWatch.currentFileInfo.bigEndian = !UnityStub.UnityWatch.currentFileInfo.bigEndian;

                    if (VanguardCore.vanguardConnected)
                    {
                        UnityWatch.UpdateDomains();
                    }
                }))).Checked = UnityWatch.currentFileInfo.bigEndian;

                ((ToolStripMenuItem)columnsMenu.Items.Add("Auto-Uncorrupt", null, new EventHandler((ob, ev) => {
                    UnityWatch.currentFileInfo.autoUncorrupt = !UnityWatch.currentFileInfo.autoUncorrupt;
                }))).Checked = UnityWatch.currentFileInfo.autoUncorrupt;

                ((ToolStripMenuItem)columnsMenu.Items.Add("Use Caching + Multithreading", null, new EventHandler((ob, ev) => {
                    UnityWatch.currentFileInfo.useCacheAndMultithread = !UnityWatch.currentFileInfo.useCacheAndMultithread;
                }))).Checked = UnityWatch.currentFileInfo.useCacheAndMultithread;

                columnsMenu.Show(this, locate);
            }
        }
        internal static bool LoadTarget()
        {
            FileInterface.identity = FileInterfaceIdentity.HASHED_PREFIX;

            string filename = null;

            OpenFileDialog OpenFileDialog1;

            OpenFileDialog1 = new OpenFileDialog();

            OpenFileDialog1.Title            = "Select the Game Executable";
            OpenFileDialog1.Filter           = "Executable Files|*.exe";
            OpenFileDialog1.RestoreDirectory = true;
            if (OpenFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if (OpenFileDialog1.FileName.ToString().Contains('^'))
                {
                    MessageBox.Show("You can't use a file that contains the character ^ ");
                    return(false);
                }

                filename = OpenFileDialog1.FileName;
            }
            else
            {
                return(false);
            }

            if (!CloseTarget(false))
            {
                return(false);
            }

            FileInfo unityExeFile = new FileInfo(filename);

            UnityWatch.currentFileInfo.targetShortName = unityExeFile.Name;
            UnityWatch.currentFileInfo.targetFullName  = unityExeFile.FullName;

            DirectoryInfo unityFolder = unityExeFile.Directory;

            var allFiles = DirSearch(unityFolder.FullName).ToArray();

            if (allFiles.FirstOrDefault(it => it.ToUpper().Contains("UNITY")) == null)
            {
                MessageBox.Show("Could not find unity files");
                return(false);
            }

            var allDllFiles      = allFiles.Where(it => it.ToUpper().EndsWith(".DLL")).ToArray();
            var allUnityDllFiles = allDllFiles.Where(it => it.ToUpper().Contains("UNITY")).ToArray();
            var unityEngineDll   = allDllFiles.Where(it => it.ToUpper().Contains("UNITYENGINE.DLL")).ToArray();


            List <string> targetFiles = new List <string>();

            switch (UnityWatch.currentFileInfo.selectedTargetType)
            {
            case TargetType.UNITYEXE:
                targetFiles.Add(unityExeFile.FullName);
                break;

            case TargetType.UNITYEXE_ALLDLL:
                targetFiles.Add(unityExeFile.FullName);
                targetFiles.AddRange(allDllFiles);
                break;

            case TargetType.UNITYEXE_UNITYDLL:
                targetFiles.Add(unityExeFile.FullName);
                targetFiles.AddRange(allUnityDllFiles);
                break;

            case TargetType.UNITYEXE_KNOWNDLL:
                targetFiles.Add(unityExeFile.FullName);

                var allKnownGames = allDllFiles.Where(it =>
                                                      it.ToUpper().Contains("PHYSICS") ||
                                                      it.ToUpper().Contains("CLOTH") ||
                                                      it.ToUpper().Contains("ANIMATION") ||
                                                      it.ToUpper().Contains("PARTICLE") ||
                                                      it.ToUpper().Contains("TERRAIN") ||
                                                      it.ToUpper().Contains("VEHICLES") ||
                                                      it.ToUpper().Contains("UNITYENGINE.DLL")
                                                      ).ToArray();

                targetFiles.AddRange(allKnownGames);

                break;

            case TargetType.ALLTHEGAME:
                targetFiles.AddRange(allFiles);
                break;

            case TargetType.UNITYENGINE:
                targetFiles.AddRange(unityEngineDll);
                break;
            }

            string multipleFiles = "";

            for (int i = 0; i < targetFiles.Count; i++)
            {
                multipleFiles += targetFiles[i];

                if (i < targetFiles.Count - 1)
                {
                    multipleFiles += "|";
                }
            }

            var mfi = new MultipleFileInterface(multipleFiles, UnityWatch.currentFileInfo.bigEndian, UnityWatch.currentFileInfo.useAutomaticBackups);

            if (UnityWatch.currentFileInfo.useCacheAndMultithread)
            {
                mfi.getMemoryDump();
            }

            UnityWatch.currentFileInfo.targetInterface = mfi;

            Executor.unityExeFile = unityExeFile.FullName;

            StockpileManagerEmuSide.UnCorruptBL = null;

            if (VanguardCore.vanguardConnected)
            {
                UnityWatch.UpdateDomains();
            }

            return(true);
        }