Exemplo n.º 1
0
        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*/);
                                });
                    });
        }
Exemplo n.º 2
0
 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>();
 }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 7
0
        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);            
 }
Exemplo n.º 11
0
        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;*/
            
            
        }
Exemplo n.º 12
0
 /// <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);
 }        
Exemplo n.º 13
0
        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;*/
        }
Exemplo n.º 14
0
 public ascx_CirDataViewer()
 {
     cirDataAnalysis = new CirDataAnalysis();
     InitializeComponent();
 }
Exemplo n.º 15
0
 public ascx_CirDataViewer()
 {
     cirDataAnalysis = new CirDataAnalysis();
     InitializeComponent();
 }