예제 #1
0
        public void Read_Unmanaged_Dll()
        {
            var data = CorFlagsReader.ReadAssemblyMetadata(new FileQuery("%WINDIR%\\System32\\kernel32.dll").Files.Single());

            Assert.IsNotNull(data);
            Assert.AreEqual(0, data.MajorRuntimeVersion);
            Assert.AreEqual(ProcessorArchitecture.X86, data.ProcessorArchitecture);
        }
예제 #2
0
        public void ReadMscorlibAssembly()
        {
            string         mscorlib = new FileQuery("GAC:\\mscorlib.dll").Files.Single();
            CorFlagsReader data     = null;

            using (var fStream = new FileStream(mscorlib, FileMode.Open, FileAccess.Read))
            {
                data = CorFlagsReader.ReadAssemblyMetadata(fStream);
            }
            Assert.IsNotNull(data);
            Assert.IsTrue(data.IsPureIL);
            Assert.IsTrue(data.IsSigned);
            Assert.AreEqual(ProcessorArchitecture.X86, data.ProcessorArchitecture);
            Assert.IsTrue(data.MajorRuntimeVersion >= 2);
        }
예제 #3
0
        void LoadFiles(string fileName)
        {
            using (Tracer t = new Tracer(Level.L2, myType, "LoadFiles"))
            {
                using (FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
                {
                    FileInfo info = new FileInfo(fileName);
                    if (info.Length == 0)
                    {
                        t.Warning("Did get 0 byte file: {0}", fileName);
                        return;
                    }

                    CorFlagsReader data = CorFlagsReader.ReadAssemblyMetadata(fStream);

                    string partialPath = Path.GetFileName(fileName);

                    if (data == null)
                    {
                        t.Info("File does not seem to be a valid PE File: {0}", data);
                        Writer.PrintRow("{0}; {1}; {2}", null, partialPath, "Unknown", info.Length);
                        return;
                    }

                    if (data.MajorRuntimeVersion > 0)
                    {
                        Writer.PrintRow("{0}; {1}; {2}; {3}; {4}", null, partialPath, "Managed",
                                        info.Length,
                                        data.ProcessorArchitecture,
                                        data.IsPureIL ? "IL Only" : "Managed C++",
                                        data.IsSigned ? "Signed" : "Unsigned");
                    }
                    else
                    {
                        Writer.PrintRow("{0}; {1}; {2}; {3}", null, partialPath,
                                        "Unmanaged",
                                        info.Length,
                                        data.ProcessorArchitecture);
                    }
                };
            }
        }
예제 #4
0
        public void Read_Non_PE_File()
        {
            var data = CorFlagsReader.ReadAssemblyMetadata(new FileQuery(@"%WINDIR%\Microsoft.NET\Framework\v2.0.50727\aspnet_perf.ini").Files.Single());

            Assert.IsNull(data);
        }