public void loadFileOrFolder(object fileOrFolder) { this.invokeOnThread( () => { if (cbClearPreviousO2CirData.Checked) { cirDataAnalysis = new CirDataAnalysis(); lbLoadedO2CirDataFiles.Items.Clear(); } O2Thread.mtaThread( () => { if (Directory.Exists(fileOrFolder.ToString())) { foreach (String sFile in Directory.GetFiles(fileOrFolder.ToString())) { loadO2CirDataFile(sFile, false, false /*decompileCodeIfNoPdb*/); Application.DoEvents(); } raiseSetCirDataAnalysisO2Message(); } else loadO2CirDataFile(fileOrFolder.ToString(), true, false /*decompileCodeIfNoPdb*/); }); }); }
public void loadFileOrFolder(object fileOrFolder) { this.invokeOnThread( () => { if (cbClearPreviousO2CirData.Checked) { cirDataAnalysis = new CirDataAnalysis(); lbLoadedO2CirDataFiles.Items.Clear(); } O2Thread.mtaThread( () => { if (Directory.Exists(fileOrFolder.ToString())) { foreach (String sFile in Directory.GetFiles(fileOrFolder.ToString())) { loadO2CirDataFile(sFile, false, false /*decompileCodeIfNoPdb*/); Application.DoEvents(); } raiseSetCirDataAnalysisO2Message(); } else { loadO2CirDataFile(fileOrFolder.ToString(), true, false /*decompileCodeIfNoPdb*/); } }); }); }
public static void clear(CirDataAnalysis cirDataAnalysis) { cirDataAnalysis.dCirDataFilesLoaded = new Dictionary <string, ICirData>(); cirDataAnalysis.dCirClass = new Dictionary <ICirClass, ICirData>(); cirDataAnalysis.dCirClass_bySignature = new Dictionary <string, ICirClass>(); cirDataAnalysis.dCirFunction = new Dictionary <ICirFunction, ICirClass>(); cirDataAnalysis.dCirFunction_bySignature = new Dictionary <string, ICirFunction>(); cirDataAnalysis.lCirClass_bySuperClass = new List <string>(); }
public void createCirDataAnalysisObject() { var cirFactory = new CirFactory(); cirDataAnalysis = cirFactory.createCirDataAnalysisObject(new List<String> { Assembly.GetExecutingAssembly().Location, DI.config.ExecutingAssembly }); Assert.That(cirDataAnalysis != null, "cirDataAnalysis was null"); }
public void createCirDataAnalysisObject() { var cirFactory = new CirFactory(); cirDataAnalysis = cirFactory.createCirDataAnalysisObject(new List <String> { Assembly.GetExecutingAssembly().Location, DI.config.ExecutingAssembly }); Assert.That(cirDataAnalysis != null, "cirDataAnalysis was null"); }
public void loadO2CirDataFile(String sFileToLoad, bool useCachedVersionIfAvailable) { if (sFileToLoad.IndexOf(".CirData") > -1 || CirLoad.isFileACirDumpFile(sFileToLoad)) { //CirDataAnalysis fdaO2CirDataAnalysis; if (cbClearPreviousO2CirData.Checked) cdaO2CirDataAnalysis = new CirDataAnalysis(); CirDataAnalysisUtils.addO2CirDataFile(cdaO2CirDataAnalysis, sFileToLoad, useCachedVersionIfAvailable); lbCirFileLoaded.Text = ""; foreach (String sLoadedO2CirData in cdaO2CirDataAnalysis.dCirDataFilesLoaded.Keys) lbCirFileLoaded.Text += Path.GetFileName(sLoadedO2CirData); btFindClassesWithNoControlFlowGraphs_Click(null, null); } }
private ICirData createCirData(List <string> filesToProcess) { var cirDataAnalysis = new CirDataAnalysis(); foreach (var fileToProcess in filesToProcess) { if (fileToProcess != "" && Path.GetExtension(fileToProcess) == ".xml") { var tempCirData = CirFactory.createCirDataFromXmlFileWithJavaMetadata(fileToProcess); CirDataAnalysisUtils.addO2CirDataFile(cirDataAnalysis, tempCirData, false /* runRemapXrefs*/); } } CirDataAnalysisUtils.remapXrefs(cirDataAnalysis); CirViewingUtils.openCirDataFileInCirViewerControl(cirDataAnalysis, "Cir Viewer"); return(CirDataAnalysisUtils.createCirDataFromCirDataAnalysis(cirDataAnalysis)); }
public void loadO2CirDataFile(String sFileToLoad, bool useCachedVersionIfAvailable) { if (sFileToLoad.IndexOf(".CirData") > -1 || CirLoad.isFileACirDumpFile(sFileToLoad)) { //CirDataAnalysis fdaO2CirDataAnalysis; if (cbClearPreviousO2CirData.Checked) { cdaO2CirDataAnalysis = new CirDataAnalysis(); } CirDataAnalysisUtils.addO2CirDataFile(cdaO2CirDataAnalysis, sFileToLoad, useCachedVersionIfAvailable); lbCirFileLoaded.Text = ""; foreach (String sLoadedO2CirData in cdaO2CirDataAnalysis.dCirDataFilesLoaded.Keys) { lbCirFileLoaded.Text += Path.GetFileName(sLoadedO2CirData); } btFindClassesWithNoControlFlowGraphs_Click(null, null); } }
public static void clear(CirDataAnalysis cirDataAnalysis) { cirDataAnalysis.dCirDataFilesLoaded = new Dictionary<string, ICirData>(); cirDataAnalysis.dCirClass = new Dictionary<ICirClass, ICirData>(); cirDataAnalysis.dCirClass_bySignature = new Dictionary<string, ICirClass>(); cirDataAnalysis.dCirFunction = new Dictionary<ICirFunction, ICirClass>(); cirDataAnalysis.dCirFunction_bySignature = new Dictionary<string, ICirFunction>(); cirDataAnalysis.lCirClass_bySuperClass = new List<string>(); }
private ICirData createCirData(List<string> filesToProcess) { var cirDataAnalysis = new CirDataAnalysis(); foreach (var fileToProcess in filesToProcess) { if (fileToProcess != "" && Path.GetExtension(fileToProcess) == ".xml") { var tempCirData = CirFactory.createCirDataFromXmlFileWithJavaMetadata(fileToProcess); CirDataAnalysisUtils.addO2CirDataFile(cirDataAnalysis, tempCirData, false /* runRemapXrefs*/); } } CirDataAnalysisUtils.remapXrefs(cirDataAnalysis); CirViewingUtils.openCirDataFileInCirViewerControl(cirDataAnalysis, "Cir Viewer"); return CirDataAnalysisUtils.createCirDataFromCirDataAnalysis(cirDataAnalysis); }
public void test_PopulateCirWithTraces() { // get Assessment Data var o2Assessment = new O2Assessment(new O2AssessmentLoad_OunceV6(), findingsFile); Assert.That(o2Assessment.o2Findings.Count > 0, "There were no findings in o2Assessment"); DI.log.info("There are {0} findings in the assessment loaded", o2Assessment.o2Findings.Count); var uniqueListOfSignatures = OzasmtUtils.getUniqueListOfSignatures(o2Assessment.o2Findings); Assert.That(uniqueListOfSignatures.Count() > 0, "uniqueListOfSignatures.Count ==0 "); DI.log.info("There are {0} unique signatures ", uniqueListOfSignatures.Count()); // get cir data var cirDataAnalysis = new CirDataAnalysis(); CirDataAnalysisUtils.loadFileIntoCirDataAnalysisObject(fileToCreateCirFrom,cirDataAnalysis); CirDataAnalysisUtils.remapIsCalledByXrefs(cirDataAnalysis); Assert.That(cirDataAnalysis.dCirFunction_bySignature.Count > 0, "cirDataAnalysis.dCirFunction_bySignature.Count == 0"); // need to convert to Ozasmt signature format var cirMappedFunctions = new Dictionary<string, ICirFunction>(); foreach (var cirFunction in cirDataAnalysis.dCirFunction_bySignature.Values) { if (cirFunction.FunctionSignature.IndexOf("O2AppDomainFactory>") > -1) { } var filteredSignature = new FilteredSignature(cirFunction); cirMappedFunctions.Add(filteredSignature.sSignature, cirFunction); } var matches = new List<String>(); foreach (var sig in cirMappedFunctions.Keys) if (sig.IndexOf("IndexOf") > -1) matches.Add(sig); //var matches = new List<String>(); /* foreach (var cirFunction in cirMappedFunctions.Values) foreach (var called in cirFunction.FunctionsCalledUniqueList) if (called.FunctionSignature.IndexOf("System.Object::.ctor") > -1) { matches.Add(called.FunctionSignature); var asd = cirDataAnalysis.dCirFunction_bySignature.ContainsKey(called.FunctionSignature); }*/ foreach (var signature in uniqueListOfSignatures) if (false == cirMappedFunctions.ContainsKey(signature)) DI.log.info("NO MATCH:" + signature); foreach(O2Finding o2Finding in o2Assessment.o2Findings) { var source = o2Finding.Sink; if (source != "" && false == cirMappedFunctions.ContainsKey(source)) DI.log.info("NO MATCH for Source:" + source); var sink = o2Finding.Sink; if (sink != "" && false == cirMappedFunctions.ContainsKey(sink)) DI.log.info("NO MATCH for Sink:" + sink); } /*foreach (var signature in uniqueListOfSignatures) DI.log.info(signature); return;*/ }
/// <summary> /// use this to make sure all main dictionaires are syncronized /// </summary> public void remapXRefs() { var tempCirDataAnalysis = new CirDataAnalysis(this); try { foreach (var cirClass in dClasses_bySignature.Values) foreach (var cirFunction in cirClass.dFunctions.Values) if (false == dFunctions_bySignature.ContainsKey(cirFunction.FunctionSignature)) dFunctions_bySignature.Add(cirFunction.FunctionSignature, cirFunction); } catch (Exception ex) { O2.Kernel.PublicDI.log.error("in remapXRefs: {0}", ex.Message); } CirDataAnalysisUtils.remapIsCalledByXrefs(tempCirDataAnalysis); }
public void test_PopulateCirWithTraces() { // get Assessment Data var o2Assessment = new O2Assessment(new O2AssessmentLoad_OunceV6(), findingsFile); Assert.That(o2Assessment.o2Findings.Count > 0, "There were no findings in o2Assessment"); DI.log.info("There are {0} findings in the assessment loaded", o2Assessment.o2Findings.Count); var uniqueListOfSignatures = OzasmtUtils.getUniqueListOfSignatures(o2Assessment.o2Findings); Assert.That(uniqueListOfSignatures.Count() > 0, "uniqueListOfSignatures.Count ==0 "); DI.log.info("There are {0} unique signatures ", uniqueListOfSignatures.Count()); // get cir data var cirDataAnalysis = new CirDataAnalysis(); CirDataAnalysisUtils.loadFileIntoCirDataAnalysisObject(fileToCreateCirFrom, cirDataAnalysis); CirDataAnalysisUtils.remapIsCalledByXrefs(cirDataAnalysis); Assert.That(cirDataAnalysis.dCirFunction_bySignature.Count > 0, "cirDataAnalysis.dCirFunction_bySignature.Count == 0"); // need to convert to Ozasmt signature format var cirMappedFunctions = new Dictionary <string, ICirFunction>(); foreach (var cirFunction in cirDataAnalysis.dCirFunction_bySignature.Values) { if (cirFunction.FunctionSignature.IndexOf("O2AppDomainFactory>") > -1) { } var filteredSignature = new FilteredSignature(cirFunction); cirMappedFunctions.Add(filteredSignature.sSignature, cirFunction); } var matches = new List <String>(); foreach (var sig in cirMappedFunctions.Keys) { if (sig.IndexOf("IndexOf") > -1) { matches.Add(sig); } } //var matches = new List<String>(); /* foreach (var cirFunction in cirMappedFunctions.Values) * foreach (var called in cirFunction.FunctionsCalledUniqueList) * if (called.FunctionSignature.IndexOf("System.Object::.ctor") > -1) * { * matches.Add(called.FunctionSignature); * var asd = cirDataAnalysis.dCirFunction_bySignature.ContainsKey(called.FunctionSignature); * }*/ foreach (var signature in uniqueListOfSignatures) { if (false == cirMappedFunctions.ContainsKey(signature)) { DI.log.info("NO MATCH:" + signature); } } foreach (O2Finding o2Finding in o2Assessment.o2Findings) { var source = o2Finding.Sink; if (source != "" && false == cirMappedFunctions.ContainsKey(source)) { DI.log.info("NO MATCH for Source:" + source); } var sink = o2Finding.Sink; if (sink != "" && false == cirMappedFunctions.ContainsKey(sink)) { DI.log.info("NO MATCH for Sink:" + sink); } } /*foreach (var signature in uniqueListOfSignatures) * DI.log.info(signature); * return;*/ }
public ascx_CirDataViewer() { cirDataAnalysis = new CirDataAnalysis(); InitializeComponent(); }