示例#1
0
        // Interface events

        private void OpenNETAssembly_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openAsm = new OpenFileDialog())
            {
                openAsm.Filter = ".NET Managed Code | *.exe;*.dll";
                if (openAsm.ShowDialog() == DialogResult.OK)
                {
                    // TODO move into seperate logic and do error checking etc
                    if (Control.ModifierKeys == Keys.Shift)
                    {
                        dataStruct.ILNodeManager.LoadAssembly(AssemblyDefinition.ReadAssembly(openAsm.FileName));
                        return;
                    }

                    string assemblyPath = openAsm.FileName;
                    string backupPath   = assemblyPath + "_ilpbackup";
                    if (File.Exists(backupPath))
                    {
                        using (PatchQuestionWindow pqw = new PatchQuestionWindow())
                        {
                            DialogResult dr = pqw.ShowDialog(this);
                            if (dr == DialogResult.Yes)
                            {
                                File.Copy(backupPath, assemblyPath, true);                                                     // TODO: check for rights
                            }
                            else
                            {
                                return;
                            }
                        }
                    }
                    loadingBox.ON = true;

                    dataStruct.OpenASM(assemblyPath);
                    if (dataStruct.AssemblyStatus == AssemblyStatus.RawAssemblyLoaded)
                    {
                        lblPathNETFile.Text = assemblyPath;
                        if (awaitingAssemblySelect)
                        {
                            dataStruct.OpenILP(ilpFiletmp);
                        }
                    }
                    else if (dataStruct.AssemblyStatus == AssemblyStatus.LoadFailed)
                    {
                        MessageBox.Show("Couldn't read assembly, it is either unmanaged or obfuscated");
                    }
                    loadingBox.ON = false;
                }
            }
        }