// 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; } } }