private void btnSendList_Click(object sender, EventArgs e)
        {
            if (lbMultipleFiles.Items.Count == 0)
            {
                MessageBox.Show("No files are selected");
                return;
            }

            FileWatch.CloseTarget(false);

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

            for (int i = 0; i < lbMultipleFiles.Items.Count; i++)
            {
                allFiles.Add(lbMultipleFiles.Items[i].ToString());
            }

            allFiles.Sort();

            string multipleFiles = "";

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

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

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

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

            FileWatch.currentFileInfo.targetInterface = mfi;

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

            this.DialogResult = DialogResult.OK;
            this.Close();
        }
示例#2
0
        internal static bool LoadTargets(FileTarget[] provided = null)
        {
            FileTarget[] targets;
            string       requestedFileType = currentSession.selectedTargetType;

            if (provided == null)
            {
                var lbTargets = S.GET <StubForm>().lbTargets;
                if (lbTargets.Items.Count == 0)
                {
                    MessageBox.Show("No targets scheduled for loading. Aborting loading.");
                    return(false);
                }

                targets = lbTargets.Items.Cast <FileTarget>().ToArray();
            }
            else
            {
                targets = provided;
            }

            if (requestedFileType == TargetType.SINGLE_FILE)
            {
                FileInterface.identity = FileInterfaceIdentity.SELF_DESCRIBE;

                var    target   = targets[0];
                string filename = targets[0].ToString();

                target.BigEndian = FileWatch.currentSession.bigEndian;

                CloseActiveTargets(false);

                FileInterface fi = null;

                Action <object, EventArgs> action = (ob, ea) =>
                {
                    fi = new FileInterface(target);

                    if (FileWatch.currentSession.useCacheAndMultithread)
                    {
                        fi.getMemoryDump();
                    }
                };

                Action <object, EventArgs> postAction = (ob, ea) =>
                {
                    if (fi == null || fi.lastMemorySize == null)
                    {
                        MessageBox.Show("Failed to load target");
                        S.GET <StubForm>().DisableTargetInterface();
                        return;
                    }

                    FileWatch.currentSession.targetShortName = fi.ShortFilename;
                    FileWatch.currentSession.targetFullName  = fi.Filename;

                    FileWatch.currentSession.fileInterface = fi;
                    S.GET <StubForm>().lbTarget.Text       = fi.GetType().ToString() + "|MemorySize:" + fi.lastMemorySize.ToString();

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

                    //Refresh the UI
                    //RefreshUIPostLoad();
                };

                S.GET <StubForm>().RunProgressBar($"Loading target...", 0, action, postAction);
            }
            else //MULTIPLE_FILE
            {
                switch (currentSession.selectedTargetType)
                {
                case TargetType.MULTIPLE_FILE_SINGLEDOMAIN:
                    FileInterface.identity = FileInterfaceIdentity.SELF_DESCRIBE;
                    break;

                case TargetType.MULTIPLE_FILE_MULTIDOMAIN:
                default:
                    FileInterface.identity = FileInterfaceIdentity.HASHED_PREFIX;
                    break;

                case TargetType.MULTIPLE_FILE_MULTIDOMAIN_FULLPATH:
                    FileInterface.identity = FileInterfaceIdentity.FULL_PATH;
                    break;
                }


                foreach (var target in targets)
                {
                    target.BigEndian = FileWatch.currentSession.bigEndian;
                }

                var mfi = new MultipleFileInterface(targets, FileWatch.currentSession.bigEndian, FileWatch.currentSession.useAutomaticBackups);

                if (FileWatch.currentSession.useCacheAndMultithread)
                {
                    mfi.getMemoryDump();
                }

                FileWatch.currentSession.fileInterface = mfi;

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

                S.GET <StubForm>().lbTarget.Text    = mfi.ShortFilename + "|MemorySize:" + mfi.lastMemorySize.ToString();
                StockpileManagerEmuSide.UnCorruptBL = null;
            }

            return(true);
        }
示例#3
0
        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);
        }